锁定老帖子 主题:sql语句建立表和关系
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-07-26
最后修改:2010-07-26
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-07-26
个人看法
数据库只存数据,一切约束程序来控制 |
|
返回顶楼 | |
发表时间:2010-07-26
嘻嘻,主外键约束总归是个例外,不是吗?那个一个外键引用多个主键解决了,却不知道如何用一个表中的两个外键引用同一个主键。
|
|
返回顶楼 | |
发表时间:2010-07-28
znn1980 写道 个人看法
数据库只存数据,一切约束程序来控制 说的很对 就算有那样的需求 只要不是追求性能 第一选择应该是交由程序控制 至于你说的那个需求 能不能说的具体点 也许不一定得要这样 |
|
返回顶楼 | |
发表时间:2010-07-28
嗯,我也很迷茫,因为数据库不是我设计的,我的任务就是把他们设计的数据库用语句写出来,却没有想到一个表中会有那么多的引用,就是
a aid b bid c cid d did e eid fid(引用abc) gid(引用bcd) 关系搞的特别复杂,所以我总觉的一个外键引用多个主键可以,可是一个表中多个外键引用了同一个主键,怎么说都有问题,可是数据库就是这样设计的,也只能这样做下去了。 |
|
返回顶楼 | |
发表时间:2010-07-28
最后修改:2010-07-28
建立外键约束的好处是保证了数据参照的完整性,坏处是降低性能。
因此是否建立外键取决于你看重的是数据完整性还是性能,你要在两者之间进行取舍。 很多情况下,数据建模都是一种取舍和平衡的过程。 |
|
返回顶楼 | |
发表时间:2010-07-28
嗯,那我的语句应该怎样写呢?如果我就是想要两个外键引用同一个主键,这样可以用语句实现吗?
|
|
返回顶楼 | |
发表时间:2010-07-28
欧石楠 写道 嗯,我也很迷茫,因为数据库不是我设计的,我的任务就是把他们设计的数据库用语句写出来,却没有想到一个表中会有那么多的引用,就是
a aid b bid c cid d did e eid fid(引用abc) gid(引用bcd) 关系搞的特别复杂,所以我总觉的一个外键引用多个主键可以,可是一个表中多个外键引用了同一个主键,怎么说都有问题,可是数据库就是这样设计的,也只能这样做下去了。 刚才在MySQL里面尝试了下,对于一个表的列上面的,确实可以生成两个外键,分别引用不同表的主键。 相当于表的列可以支持多对多的外键。 一个列,多个表主键。 一个表主键,多个列引用。 然后因为一个列有多个外键关联到不同表的主键,例如c中的reference_id引用到a.id和b.id。 那么创建c的时候,a和b必须都存在要输入的主键,例如两个表都有2,才能设置c.reference_id成功。 我尝试a有1,2. b有1. 然后在c.reference_id插入2.因为我觉得a中有2就应该可以符合外键约束了。 没有想到不会成功。 尝试之后觉得,外键多少个都可以设置。然后插入,更新,删除的时候,对于每一个作用于列的外键都会一个一个检查过去,只有全部的外键都符合外键约束了,才会通过。 |
|
返回顶楼 | |
发表时间:2010-07-28
拥抱变化之美 写道 建立外键约束的好处是保证了数据参照的完整性,坏处是降低性能。
因此是否建立外键取决于你看重的是数据完整性还是性能,你要在两者之间进行取舍。 很多情况下,数据建模都是一种取舍和平衡的过程。 嗯,说得很中肯! |
|
返回顶楼 | |
发表时间:2010-07-29
嗯,那两个外键可以引用同一张表中的主键吗?
|
|
返回顶楼 | |