在数据库中为此MySQL表创建唯一ID是否有意义?

时间:2017-07-27 16:40:12

标签: mysql database

我正在尝试为构建的数据库设计我的表结构。该数据库将有三个单独的表格,并跟踪城市人口10年。每年之后,将为数据库中的每个城市添加人口数字。到目前为止,我是如何布置我的三个表格的:

城市(city_id,city_name,city_abbrv)

年(year_id,year)

统计信息(year_id,city_id,人口)

我担心我的Stats表中没有唯一标识符。有10个城市,10个参赛作品的年份数据相同。输入多年数据后,city_id将被重用。在我对这个网站的研究中,我已经读过,每个表都有一个唯一的ID不是必需的,但是我用来学习数据库设计的书(虽然简短)从未提到这是可以的。我想知道设计数据库的最佳方法,该数据库按日/周/月/年计划接收同一组事物的数据条目。我应该在我的Stats表中添加unique_id列吗?或者这会是一个浪费的专栏?谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

首先,您需要将每个表的列ID设为primary key

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

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

答案:

  • 如果您要从不同的表中选择数据,则选择加入,因此您需要使用密钥才能进行该连接。
  • 如果你想要你的 要集群的表,您需要某种主键。

附注:您可能需要熟悉索引列,请参阅advantages of indexing

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

如果您还是MYSQL的初学者,请参阅W3school tutorial for SQL primary keys