【发布时间】:2015-12-18 17:07:36
【问题描述】:
前段时间有人告诉我,可为空的 ForeignKeys 是“邪恶”的数据库设计?
换句话说,它是一种“反模式”,应该避免。
为什么?
【问题讨论】:
-
@BrankoDimitrijevic 请详细说明为什么他们不是“邪恶的”?
-
因为它们模拟了一个常见且有用的案例(可选参考)。我不知道有更好的方法来模拟这种情况。你是吗?
-
@BrankoDimitrijevic 对于我们过去使用可为空的 ForeignKeys 的地方,我们现在使用默认值。示例:用户---国家:我们插入一个名为“未知”的国家。如果用户所在国家/地区未知,则将其用作 FK。
-
你怎么知道“未知”行是特殊的?在业务逻辑中硬编码?您对“未知”行的其他字段使用什么值?例如,什么是合理的国家代码,或“未知”国家的电话号码?您描述的是a 解决方案,但我不会称其为更好 解决方案。
-
@BrankoDimitrijevic 我们的模型中没有我们国家的电话号码。但是你就在这里,如果我们有的话。 “未知”值现在在电话号码中。我说它“更好”了吗?然后我很抱歉(“在做错和做对的想法之外,有一个领域。我会在那里见到你。”)。我将我的解决方案称为“另一种策略”。
标签: database-design