在数据库中为这个MySQL表创建一个唯一ID有意义吗?
我目前正试图为一个虚构的数据库设计我的表结构。该数据库将有三个单独的表格,跟踪城市人口10年。每年之后,每个城市的人口数字都会添加到数据库中。以下是我到目前为止如何布置我的三张桌子: 城市(城市id、城市名称、城市缩写) 年份(年份id,年份) 统计数据(年份、城市、人口)在数据库中为这个MySQL表创建一个唯一ID有意义吗?,mysql,database,Mysql,Database,我目前正试图为一个虚构的数据库设计我的表结构。该数据库将有三个单独的表格,跟踪城市人口10年。每年之后,每个城市的人口数字都会添加到数据库中。以下是我到目前为止如何布置我的三张桌子: 城市(城市id、城市名称、城市缩写) 年份(年份id,年份) 统计数据(年份、城市、人口) 我担心我的统计表中没有唯一的标识符。对于10个城市,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