Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在数据库中为这个MySQL表创建一个唯一ID有意义吗?_Mysql_Database - Fatal编程技术网

在数据库中为这个MySQL表创建一个唯一ID有意义吗?

在数据库中为这个MySQL表创建一个唯一ID有意义吗?,mysql,database,Mysql,Database,我目前正试图为一个虚构的数据库设计我的表结构。该数据库将有三个单独的表格,跟踪城市人口10年。每年之后,每个城市的人口数字都会添加到数据库中。以下是我到目前为止如何布置我的三张桌子: 城市(城市id、城市名称、城市缩写) 年份(年份id,年份) 统计数据(年份、城市、人口) 我担心我的统计表中没有唯一的标识符。对于10个城市,10个条目的年份数据将相同。一旦我输入了多年的数据,城市id将被重新使用。在我在这个网站上的研究中,我读到每个表都有一个唯一的ID不是必需的,但是我用来学习数据库设计的书(

我目前正试图为一个虚构的数据库设计我的表结构。该数据库将有三个单独的表格,跟踪城市人口10年。每年之后,每个城市的人口数字都会添加到数据库中。以下是我到目前为止如何布置我的三张桌子:

城市(城市id、城市名称、城市缩写)

年份(年份id,年份)

统计数据(年份、城市、人口)


我担心我的统计表中没有唯一的标识符。对于10个城市,10个条目的年份数据将相同。一旦我输入了多年的数据,城市id将被重新使用。在我在这个网站上的研究中,我读到每个表都有一个唯一的ID不是必需的,但是我用来学习数据库设计的书(虽然很简短)从来没有提到这是可以的。我想知道设计一个数据库的最佳方法,该数据库每天/每周/每月/每年接收同一组事物的数据条目。我应该在我的统计表中添加一个唯一的_id列吗?或者这是一个浪费的专栏?谢谢你的帮助

首先,您需要将每个表的列id设置为

主键用于唯一标识表行。主键不能为NULL,因为NULL不是值。所以基本上这些列是唯一的是的

问题:为什么表中需要主键

答复:

  • 如果您希望从不同的表中选择数据,那么您选择的是联接,因此您需要用于该联接的键
  • 如果你想要你的 要对表进行集群,您需要某种主键
旁注:您可能需要熟悉索引列,请参阅



如果您仍然是MYSQL的初学者,请参阅。

首先,您需要将每个表的列id设置为

主键用于唯一标识表行。主键不能为NULL,因为NULL不是值。所以基本上这些列是唯一的是的

问题:为什么表中需要主键

答复:

  • 如果您希望从不同的表中选择数据,那么您选择的是联接,因此您需要用于该联接的键
  • 如果你想要你的 要对表进行集群,您需要某种主键
旁注:您可能需要熟悉索引列,请参阅



如果您仍然是MYSQL的初学者,请参阅。

是的,这完全有道理。我想城市id和年份id将是我的城市和年份表中的主键。在为统计表创建主键时,我有点不知所措。我不确定如何使它,以便我可以唯一地识别我的统计表中的表行。我是否应该简单地创建另一个名为unique_id的列,并使其随每个条目自动递增?我现在将编辑我的答案,并尽力解释问题的正确结构。完成后,请重新检查我的答案。是的,这是有意义的。你是说我应该在统计表中添加一个ID列,为每一行创建一个唯一的标识符……对吗?如果是这样的话,感谢您的关注和建议!谢谢你的帮助!是,将其设为主键MySQL将自动使其对您唯一;)完全遵循这些陈述,你就很好。是的,这是完全有道理的。我想城市id和年份id将是我的城市和年份表中的主键。在为统计表创建主键时,我有点不知所措。我不确定如何使它,以便我可以唯一地识别我的统计表中的表行。我是否应该简单地创建另一个名为unique_id的列,并使其随每个条目自动递增?我现在将编辑我的答案,并尽力解释问题的正确结构。完成后,请重新检查我的答案。是的,这是有意义的。你是说我应该在统计表中添加一个ID列,为每一行创建一个唯一的标识符……对吗?如果是这样的话,感谢您的关注和建议!谢谢你的帮助!是,将其设为主键MySQL将自动使其对您唯一;)完全按照这些陈述去做,你就很好了。你为什么不直接用
(年份id,城市id)
作为主键呢?顺便说一句:
year
表中的
year\u id
是一个浪费列。您可以使用
year
作为主键。我担心统计表中没有唯一的标识符。如果我使用year\u id和city\u id作为主键,那么统计表中就没有唯一标识符。您可以使用两个(或更多)列的组合作为“唯一标识符”(复合主键)。为什么不使用
(year\u id,city\u id)
作为主键呢?顺便说一句:
year
表中的
year\u id
是一个浪费列。您可以使用
year
作为主键。我担心统计表中没有唯一的标识符。如果我使用year_id和city_id作为主键,那么统计表中就没有唯一标识符。您可以使用两个(或更多)列的组合作为“唯一标识符”(复合主键)。
Cities (id, city_name, city_abbrv) //with id as primary key

Year (id, year) //with id as primary key

Stats (id, year_id, city_id, population) //with id as primary key 
//And year_id and city_id as foregin key connected by their respective ids