gpt4 book ai didi

php - 在一张表或多张表中管理不同类别?

转载 作者:行者123 更新时间:2023-11-29 21:11:18 25 4
gpt4 key购买 nike

我正在制作一个文章网站。我有一个名为 CATEGORIES 的数据库,其中包含以下表:ArticlesEntertainmentLifestyleArticles 包含EntertainmentLifestyle 的所有条目。 Entertainment 包含 Entertainment 类型的所有条目,Lifestyle 包含 Lifestyle 类型的所有条目。每个表有7列:id、category(文章的类别)、link(文章的链接)、title(文章的标题)、image(文章的图片URL)、Counter(文章的浏览次数) )、dateStamp(文章撰写日期)。

去掉 LifestyleEntertainment 表,而仅依赖 Articles 表会更高效吗?我以这种方式将它们分开的原因是,当用户阅读娱乐文章时,会显示一个随机的娱乐文章列表。为了显示随机文章,我采用 Entertainment 表中的最高 id,获取 6 和最高 id 之间的随机数(6 是我要显示的文章数),然后假设我从随机生成器中获得 8,然后显示第 8 至 3 条 (DESC LIMIT 6)。代码如下:

<?php

$MAX_ID = $db->query("SELECT MAX(id) FROM Entertainment");
$MAX_ID = $MAX_ID->fetch_array();
$MAX_ID = $MAX_ID[0];

$RAND_NUM = mt_rand(6, $MAX_ID);

$resultSet = $db->query("SELECT * FROM Entertainment
WHERE id <= $RAND_NUM ORDER BY id DESC LIMIT 6");

if ($resultSet->num_rows != 0) {
$conditional = true;
$conditional2 = true;
echo "<div class='row'>";
while ($rows = $resultSet->fetch_assoc()) {
$image = $rows["image"];
$title = $rows["title"];
$link = $rows["link"];
$count = number_format($rows["Counter"]);

if ($conditional == true && $conditional2 == true) {
// display articles
} else {
// display other articles
}
}
}

如果我删除了 Entertainment 表,那么这个查询将不起作用,而且我不知道还能如何实现它。最后一个问题是将表分成不同的类别或将表合并为一个表会更有效(性能方面)吗?

最佳答案

切勿为每个小部件制作一张表。

如果两个表具有几乎相同的列,那么它们可能应该合并为一个表。它可能需要一个额外的列来区分事物。并对索引进行更改。

正常化,但不要过度正常化。例如,不要标准化“连续”值,例如 DATETIME 或 FLOAT。

每个表上都有一个主键。考虑使用“自然”PK,或使用 AUTO_INCRMENT。 (有时一个是显而易见的选择;有时另一个是另一个;有时则是抛硬币。)

您的代码片段听起来像是您想要一些“随机”行。 My blog就这样。

关于php - 在一张表或多张表中管理不同类别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36344422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com