Dan*_*Dan 5 database database-design primary-key
在代表一个人的表(如客户,用户,客户,员工等)中,您对主键的选择是什么?我的第一选择是SSN号码.但是,由于隐私问题和不同的法规,不鼓励使用SSN.SSN可以在人的一生中改变,因此这是另一个原因.
我想精心挑选的自然主键的功能之一就是避免重复.我不希望一个人在数据库中注册两次.某些代理或生成的主键无助于避免重复条目.解决这个问题的最佳方法是什么?
编辑:
保证人员实体应用程序唯一性的最佳方法是什么?这可以在数据库级别使用主键或唯一性约束来处理吗?
我不知道您使用的是哪个数据库引擎,但(至少使用MySQL - 请参阅7.4.1.尽可能减小数据),使用尽可能短的整数通常被认为是性能和内存的最佳选择要求.
auto_increment对于那个主键,我会使用一个整数.
这个想法是:
然后,UNIQUE在其他列上设置索引 - 确定单一性的列 - 如果可能和/或必要的话.
编辑:以下是您可能感兴趣的其他一些问题/答案:
如上所述,使用自动增量作为主键。但我不认为这是你真正的问题。
您真正的问题是如何避免重复条目。从理论上讲,这是不可能的——两个人可以在同一天出生、同名、住在同一个家庭,而且其中一方没有社会保险号码。(其中一个可能是访问该国的外国人)。
然而,全名、出生日期、地址和电话号码的组合通常足以避免重复。请注意,输入的地址可能会有所不同,人们可能有多个电话号码,并且人们可能会选择省略中间名或使用首字母缩写。这取决于避免重复条目的重要性以及您的用户群有多大(以及冲突的可能性)。
当然,如果您可以获得 SSN/SIN,则可以使用它来确定唯一性。
| 归档时间: |
|
| 查看次数: |
6002 次 |
| 最近记录: |