首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

|M| 数据库设置 主键 和 外键 的有关问题 看看如何解决

2012-01-16 
|M| 数据库设置 主键 和 外键 的问题 看看怎么解决如我有订单数据库order表iduseridadminidproductuser表i

|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)如果不合并,可以让两个外键允许为空。

热点排行