首页 新闻 会员 周边 捐助

数据库设计的时候,什么时候设计外键啊?

0
悬赏园豆:5 [已解决问题] 解决于 2015-11-06 12:47

比如我有订单表,订单的状态可以设成外键,订单的客户性别不设置成外键,订单的成交次数不设置成外键。为什么啊?

菜鸟乙的主页 菜鸟乙 | 菜鸟二级 | 园豆:296
提问于:2015-11-06 11:25
< >
分享
最佳答案
2

外键一般用于一对多的时候,比如说某个类型Type下面可能有多个对象。订单的话,一个订单号肯定会有关于这个订单(号码)的订单详情,这是给客户看的,但是对于管理员来看,订单另一个方面是包含商家信息的,这个时候是不是就有了一个关于商店的表,里面会有这个商店被下的订单,通过中间的订单号可以查询到对应的订单详情,这中间的信息肯定是不能全部放在一张表里面的,但是彼此之间的信息又是有关联的,所以设了外键。你说的,客户性别啊、成交次数啊,一般不用这个做外键(至少没见过),通常是2张表公共的一个属性ID设置为外键,客户性别、成交次数顶多算某个表中的一个属性,做外键是不合适的。也不都是绝对,算是一种约定俗成的代码规范吧,设置外键用关联的ID

收获园豆:2
顾星河 | 大侠五级 |园豆:7281 | 2015-11-06 11:54
其他回答(2)
2

外键是一种约束,另一个表的主键。

其实状态也可以用数字表示,可以不用这个一个表来存储。

收获园豆:1
gw2010 | 园豆:1487 (小虾三级) | 2015-11-06 11:28
2

如果掌握的不熟练不建议使用太多外键,使用了外键之后在数据库操作上很多时候要考虑联动的影响,比如清除一个表中的东西,这个表关联的外键怎么处理等。处理不好就会出错,一般只有多表公有而且值都是一样的字段才会考虑设为外键。

收获园豆:2
SouthSky | 园豆:229 (菜鸟二级) | 2015-11-06 12:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册