浏览完本文后:
在设计数据库时使用外键似乎是个好主意.但是你什么时候用得太多了呢?
例如,假设我有一个主表,用于存储其他程序通过以下列引用的机械零件信息列表:
- ID号
- 名字
- colored颜色
- 价格
- 计量单位
- 类别
- 等
我是否应该制作包含所有可能 colored颜色 、单位和类别列表的表格,然后将其设置为机器零件信息表格中相应列的外键?在什么情况下,使用外键的好处会抵消我正在制作所有这些额外的表和关系这一事实?
浏览完本文后:
在设计数据库时使用外键似乎是个好主意.但是你什么时候用得太多了呢?
例如,假设我有一个主表,用于存储其他程序通过以下列引用的机械零件信息列表:
我是否应该制作包含所有可能 colored颜色 、单位和类别列表的表格,然后将其设置为机器零件信息表格中相应列的外键?在什么情况下,使用外键的好处会抵消我正在制作所有这些额外的表和关系这一事实?
如果您希望能够确定地声明数据库中只存在已知的有效值,那么任何属性都应该使用外键进行保护.否则,您只能希望在应用程序代码和将来创建的任何接口中捕获无效值.
拥有更多的表和关系并不是一件坏事.唯一的问题--通常不是问题--与维护用于实施这些关系的索引的开销有关.在遇到性能问题之前,您应该为"应该"有外键关系的每个列创建一个外键关系(因为需要根据列表验证值).
在我愿意牺牲正确性来换取性能之前,性能方面的考虑必须是相当可怕的.