如何解决数据库设计:什么时候不使用外键?
我不确定何时使用外键以及何时插入一个“未引用”的值(考虑到所需的磁盘空间、性能等更好)的经验法则是什么。
假设我有三个表:
表 1:itemGroup(用于用项目填充下拉菜单)
ID title
1 Active/Inactive Options
2 Car Brands
3 ratings
4 Languages
表 2:item(itemID 将是下拉列表中的实际值并用作外键)
itemID listID title
1000 1 active
1001 1 inactive
1002 2 Porsche
1003 2 Audi
1004 3 1-Star rating
1005 3 2-Star rating
1006 4 en
1007 4 de
表 3:示例表
ID car rating active language
所以我的问题是我是否应该使用 itemID 在表 3 中插入外键,或者使用 1/0 表示活动/非活动并使用 1,2,3,4,5 更有意义作为评分的整数?猜猜汽车,它很自我解释说外键更好,但在某些情况下很难决定,因为我的“项目”表可能非常大,因此 itemID 的数字比它可能指的实际“值”多在一个大型数据库中,这在某些时候会在空间上产生差异,我猜也是性能明智的,因为我需要使用外键进行连接。
更新: 我添加了“语言”字段,因为也许在这里问题得到了更好的说明。因此,如果我要存储语言外键(例如“1006”):
- 我需要在我的 exampleTable 中一遍又一遍地存储一个 4 位数的 int,而不仅仅是一个 2 个字符的 varchar
- 我无法执行像“SELECT * from exampleTable WHERE language=en”这样的简单查询
为什么在这里使用外键会更好?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。