建立数据库时,既然SQL语言可以实现多表连接,那为什么还要建立表间的一对一,一对多这些关系呢?

在多表查询时必须要在条件上加上多表联接的语句?那还要关系干嘛?费了那么多精力去建立外键... 在多表查询时必须要在条件上加上多表联接的语句?那还要关系干嘛?费了那么多精力去建立外键 展开
 我来答
chencheng80823
推荐于2016-09-30 · 超过10用户采纳过TA的回答
知道答主
回答量:29
采纳率:0%
帮助的人:25.3万
展开全部
一对一,一对多,多对多关系是设计数据库确定表与表之间的关系,是设计使数据库达到某一范式手段之一,数据库达到某一范式越高,数据库表中的一致性,完整性越强。这可以通过数学方式证明。
SQL语言实现多表连接,已经是到了数据库使用阶段,通过你的sql操作实现你需要实现的功能。

就好像水库,前者是设计阶段,水坝越高,越坚固,越不可能溃坝。好像学生选课,删掉一门课程后,如果有外键,学生选课表想选出这门课绝对不可能了,没有的话可就难说。
后者是使用阶段,用闸门,水管还是水泵取水,就看你sql怎么写了。

两者在数据库系统实现的阶段不同,功能也不同,不一样的。
追问
再问一下:删掉了一门课程,可是发现以前学生这门课的记录(比如说上个学期的)也被删掉了,这怎么办?
追答
两种方法:
一。你在定义外部关键字级联操作的时候选择NO ACTION就可以了
二。如果子表有相关记录,禁止主表删除对应记录。

外建约束有下面几种,各自定义三种也是操作
更新规则:指定修改父表中关键字 (key) 值时所用的规则。 操作:1.主表更新,子表对应记录更新;2.子表有记录,主表对应记录不得更新;3.主表改,子表不动作

删除规则;指定删除父表中的记录时所用的规则。 操作:1.主表删除,子表对应记录删除;2.子表有记录,主表对应记录
不得删除;3.主表删除,子表不动作

插入规则;指定在子表中插入新的记录或更新已存在的记录时所用的规则。 操作只有两种:1.主表外键不匹配,子表不得插入;2.子表不动作。
dql5251
2012-04-24 · 超过15用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:13.1万
展开全部
外键的作用是数据库完整性的校验,和多表查询是2回事。外键作用和父子表类似。实现数据制约。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式