问题描述
我不确定何时使用外键以及何时插入一个“未引用”的值(考虑到所需的磁盘空间、性能等更好)的经验法则是什么。
假设我有三个表:
表 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 (将#修改为@)