是否可以将相同的列用作不同表的主键?

时间:2017-11-25 18:02:22

标签: ms-access primary-key arcmap

我是整个数据库世界的新手,我有一个问题。我正在为我的硕士课程建立最终项目的数据库。该数据库包括科罗拉多州的城市,县和人口统计数据。数据库最终将用作空间数据库。此时,我将所有表都构建在Access中,并且与PostgreSQL建立ODBC连接,以便在创建表后导入表。 Access不允许将shapefile添加到数据库中,PostgreSQL也是如此。

我的问题是关于主键,我在Access中的每个表共享一个FIPS代码(此代码允许我将人口统计数据连接到shapefile并使用正确的坐标在ArcMap中显示数据)。我有这个FIPS代码的许多人口统计数据表。将FIPS设置为每个表的主键是否可以接受?或者每个表是否需要与其他表不同的主键?

感谢您的帮助!

1 个答案:

答案 0 :(得分:-1)

默认PK为“ID”,因此对所有表使用此默认值确实没有问题。

实际上,对于您编写的任何表格或代码,您现在可以随时轻松地了解主键是什么。

如果您复制或重新命名表格,那么您再次知道该ID。

有些人确实喜欢将表名作为PK的一部分,但这确实违反了数据的规范化,因为现在您将外部属性附加到该PK列。

但对于FK(外键),由于列的VERY定义是外部依赖项,因此我倾向于包含表名,如下所示:

Customers_ID

再次由于这个命名约定,您可以随时“猜测”或“知道”FK列的名称(表名+ ID)。

在一天结束时,对这个问题没有真正的约定。但是,我会建议您创建的所有表,您允许访问创建默认PK“id”。这当然假设您的数据库设计没有使用自然键。自然键与代理键(一个自动编号pk“id”)的争论有很多优点和缺点。您可以谷歌自然键与代理键进行无休止的讨论。