这两种用于从表中显示信用的PHP和MySQL方法中,哪种方法更合逻辑?

我正在使用PHP和MySQL来显示积分的网站上工作。我已经制作了同一事物的2个版本,但我很难决定哪个版本是最适合使用的版本。一个使用2个表,另一个使用1个表。我进行了一些设置,在其中列出了职位名称,然后将人员放置在其下方。我无法决定是否更容易查看credits_position表,然后从credits_people中获取所需的内容,还是只使用credits_people来容纳所有内容。哪个版本更易于更新?

SQL

CREATE TABLE `credits__topic` (
 `topic_id` INT(11) NOT NULL AUTO_INCREMENT,`category_id` INT(11) DEFAULT NULL,`name` VARCHAR(48) DEFAULT NULL,`category` VARCHAR(48) DEFAULT NULL COMMENT 'Job name',PRIMARY KEY (`topic_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 AUTO_INCREMENT = 26;
CREATE TABLE `credits__category` (
 `category_id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(48) DEFAULT NULL COMMENT 'Job name',PRIMARY KEY (`category_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 AUTO_INCREMENT = 6;
INSERT INTO `credits_people` (`topic_id`,`category_id`,`name`,`category`)
VALUES 
(1,1,'Matthew Campbell','Creator'),(2,2,'Godzilla','Assistant'),(3,'Billy Bob',(4,4,'Martha Stewart','Tester'),(5,'Mothra','Designer'),(6,'Rodan','Contributing'),(7,'King Ghidorah',(8,3,'Mechagodzilla','Assistant');
INSERT INTO `credits_position` (`category_id`,`name`)
VALUES
(1,'Contributing');

PHP

<?php
 $connection = mysqli_connect ("localhost","root","main");

 // Version 1:
 $data = mysqli_query ($connection,"SELECT `mc`.`name` AS 'category_name',`mt`.`name` AS 'topic_name',`mt`.`category` AS 'topic_category' FROM `credits_position` AS `mc` INNER JOIN `credits_people` AS `mt` USING (`category_id`);");
 // Version 2:
 $data = mysqli_query ($connection,"SELECT `name` AS 'category_name',`category` AS 'topic_category' FROM `credits_people`;");

 // Works with both versions
 $responses = array ();
 while ($row = mysqli_fetch_array ($data)) {
  array_push ($responses,$row);
 }
 // This loads the 1st category name.
 $category = $responses [0] ["category_name"];
 echo "<p>" . $category . "</p>\n";
 echo "<ol>\n";
 foreach ($responses as $response) {
  // This loads when it finds that the category is different from the previous loop.
  if ($category !== $response ["category_name"]) {
   $category = $response ["category_name"];
   echo "</ol>\n";
   echo "<p>" . $response ["category_name"] . "</p>\n";
   echo "<ol>\n";
  }
  echo "<li>" . $response ["topic_name"] . "</li>\n";
 }
 echo "</ol>";

 mysqli_close ($connection);
?>
iCMS 回答:这两种用于从表中显示信用的PHP和MySQL方法中,哪种方法更合逻辑?

在大型数据库上,您希望节省空间,以保留相关数据。

因此,归一化的表只具有category_id(当然还有更多此类表),您可以节省很多空间。

但是我怀疑您将拥有数以百万计的类别,所以您应该从小处着手,如果需要,您可以增加它。

本文链接:https://www.f2er.com/1981168.html

大家都在问