请教一个外键的问题
现在有三张表
a 群体用户表
b 个人用户表
c 用户订单表
三张表都有userid一列,a表保存的是群体用户的信息,b表保存的是个人用户的信息
c表是记录两种用户的订购信息,a和b是状态表,记录存进去后根据业务操作进行修改
c表是日志表,每次用户产生订购就登记一条记录
a表和b表的userid不会重复 c表的userid要么取自a表,要么取自b表
现在想为这几张表建外键关系,但是想不出怎么建合适
如果c表为子表,a和b表做父表,分别建立外键指向两个表的userid。
会出现记录插不进去的情况(因为个人用户不在集团里面,集团用户也不在个人里面)
而c表肯定是不能做为父表
------解决方案--------------------c表分别建立a、b表的外键
c.id1,c.id2这样可以吗?
------解决方案--------------------你可以再创建一个表,如d表,里面存放a、b表的id值,在c表上创建d表的外键就可以了
------解决方案--------------------
很是支持。刚我想用的是用check约束,限制c表的值必须在a和b表的范围内。但这需要用到子查询,这在oracle的check约束中是不成立的。
------解决方案--------------------外键是符合范式的表的一个数据约束,你这表本身就是为了性能或者业务违反范式的,加什么外键。
------解决方案--------------------
把a,b表建个视图也不行么?