|M| 数据库设置 主键 和 外键 的问题 看看怎么解决
如我有订单数据库
order表
id userid adminid product
user表
id user
1 Kim
admin表
id admin
1 Tom
下订单的有两种情况
一种是用户下订那么如Kim下单 结果为
id userid adminid productid
1 1 0 123
一种是管理下订那么如Tom下单 结果为
id userid adminid productid
1 0 1 123
然后我想给订单表中的 userid 和 adminid 定义主键和外键
但当下单的时候肯定会有userid 或 adminid =0的情况
这时候就提示没有主键
问:如果定义主键外键的时候 对数值 0 不进行绑定
或我上面有没有更好的办法
------解决方案--------------------如果一定要建外键的话.
在user表和admin表中手工建一条记录 0
------解决方案--------------------admin也是user啊,为什么不放在user表呢?
关于什么是外键、什么时候用外键,可看看这个:
http://topic.csdn.net/t/20040711/16/3164514.html
------解决方案--------------------重构数据库设计
把user表和admin表合并成一张user表,在user表中通过添加字段isAdmin来区别用户的身份是普通用户还是管理员
------解决方案--------------------order 表
user 表
role 表
userRole 表
id userid productid
1 1 123
这样查询也能得到你需要的结果吧~
------解决方案--------------------两张表合并以后,不仅可以避免你所说的问题,而且使得业务逻辑和数据库变得简单
------解决方案--------------------单独建立user表比较合适
------解决方案--------------------user表里加个字段表示类型,把admin表删了
------解决方案--------------------
------解决方案--------------------为什么admin还可以下订单呢?
让管理员注册一个User的帐号就可以了,或者和表,不过和表并不是很好处理。
------解决方案--------------------(1)两个表应合并为一个。
(2)如果不合并,可以让两个外键允许为空。