当前位置: 代码迷 >> Sql Server >> 数据库设计之外键议论
  详细解决方案

数据库设计之外键议论

热度:12   发布时间:2016-04-24 09:33:00.0
数据库设计之外键讨论
CarMake
id(自增长)      cd                    name              status
1                        svw                 上海大众          1
2                        yvw                 一汽大众          1
...


CarModel
id(自增长)       carmake_id/carmake_cd       model_cd       model        remark        
1                    1/svw                                    po                    polo
2                    1/svw                                    pa                    passata
...

CarModel中外键用CarMake的id还是CarMake的cd,分别有什么特点,为什么?



------解决思路----------------------
id
int/bigint 比字符串存放空间小、比较速度快,有助于提高性能。
------解决思路----------------------
用CarMake的id,用与业务无关的ID做外键,避免业务ID做外键引起的级联修改,
用CarMake的cd,可以(相对)直接确认业务数据(比如用cd在表CarModel中可以直接查询,如果是ID的话,需要在关联一下),如果要考虑查询效率,是不是id上和cd上都要建议索引

哎,两种情况的优劣太多了,总结不好
  相关解决方案