哪一种是最佳实践?为什么?
a) 类型表、代理/人工 key
外键是从user.type
到type.id
:
b) 类型表,自然键
外键是从user.type
到type.typeName
:
最佳答案
我相信在实践中,使用 natural key很少是最好的选择。我可能会选择 surrogate key方法如第一个示例所示。
以下是自然键方法的主要缺点:
您的类型名称可能不正确,或者您可能只是想重命名该类型。要编辑它,您必须更新所有将其用作外键的表。
int
字段上的索引比varchar
字段上的索引紧凑得多。在某些情况下,可能很难获得 unique自然键,这是必要的,因为它将用作主键。这可能不适用于您的情况。
关于sql - 关系数据库设计问题 - 代理键还是自然键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3747730/