Jam*_*Ide 5 sql database database-design
实用主义者赢得了代理键与自然主键的争论,支持代理键*。在我自己的工作中,我总是毫不犹豫地使用 SQL Server 标识列。但我突然想到,对于第一种范式的表,我应该能够识别自然键并使用唯一约束来强制执行它。我无法对数据库中的所有表执行此操作,因此我的数据库甚至不符合规范化的最低标准。
您是否同意具有代理主键的表也必须对自然键具有唯一约束才能处于 1NF 中?
*我认为 Joe Celko 仍在打一场精彩的比赛,请参阅最后一段。
编辑添加:感谢您的答复。我的印象是添加唯一约束不是一种常见的做法,所以我有点惊讶到目前为止的反应是一致的。
如果该表最多记录自然键的实例,则需要对相关列进行约束以强制执行。否则,您最终会得到一个包含 50,000,000 行的表,每行都有不同的 ID 值,但其他方面都相同——这可悲、可笑或可笑,这取决于您的观点。