码迷,mamicode.com
首页 > 其他好文 > 详细

表与表之间的关系二

时间:2018-05-09 21:08:33      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:art   现在   步骤   功能   rom   表之间   翻译   角度   有一个   

---恢复内容开始---

导语:

把所有的数据都存放于一张表的弊端

1:表的组织结构复杂不清晰

2:浪费空间

3:扩展性极差

一、 寻找表与表之间的关系套路:

举例:emp 员工表         dep 部门表

步骤:

  part1:

    1、先站在左表 emp 的角度

    2、去找左表emp 的多条记录能否对应右表dep的一条记录

    3、翻译2 的意义:

        左表emp 的多条记录==》》多个员工

        右表dep 的一条记录==》》一个部门

 

         最终的翻译结果:多个员工是否可以属于同一个部门?

         如果是则需要进行part2 的流程

  part2:

    1、先站在右表dep 的角度

    2、去找右表dep 的多条记录能否对应左表emp的一条记录

    3、翻译2 的意义:

        右表dep的多条记录==》》多个员工

        左表emp 的一条记录==》》一个部门

 

         最终的翻译结果:多个部门是否可以包含同一个员工

         如果不可以, 则可以确定emp与dep的 关系只一个单向的多对一

         如何实现?

            在emp表中新增一个dep_id 字段, 该字段指向dep表的id字段

 配图:

技术分享图片

 

用foreign key  来实现 多对一

约束1:在创建表时, 先创建被关联的表dep(也就是多对一中的一),在创建关联表emp(多对一的多),否则就会报错

技术分享图片

约束2:在插入记录时, 必须先插被关的表dep,才能插关联表emp,否则也会报错

技术分享图片

3:约束3:更新与删除都需要考虑到关联与被关联的关系

1:先删除关联表emp1,再删除被关联表dep1, 否则也会报错

技术分享图片

2:重建:新增功能,同步更新, 同步删除    用on update cascade   on delete cascade

先创建:

技术分享图片

技术分享图片

查询数据:

技术分享图片

同步删除:delete from 表名 where + 条件

技术分享图片

同步更新:update 表名 set   更改内容   where +条件

技术分享图片

清空表:delete from tb1

q强调;上面这条命令确实可以将表里的记录都删掉, 但是不会将id重置为0,

所有该条命令根本不是用来清空表的, delete是用来删除表中某一些符合条件的记录

delete from tb1 where id >10;

如果要清空表 要使用truncate tb1;

作用是将整张表重置。

技术分享图片

 

 如图:删掉id>3 以上的数据后 在添加新的数据, 是在原来没有删除的id的基础上添加。所以这时不应该用 delete.

二:多对多

两张表之间是一个双向的多对一关系,称之为多对多

如何实现

建立第3张表,该表中有一个字段fk 左表的id,还有一个字段fk  右表的id

例如:两张表, 一个书表,一个作者表:

技术分享图片

 

首先创造出这两张表:

技术分享图片

现在创造第3张表

技术分享图片

查询:

技术分享图片

 

 一对一

左表的一条记录唯一对应右表的一条记录,反之也一样

配图:

技术分享图片

张铁蛋 李大炮 杨力 赵子弹 刘二丫 王三炮 alex  梁树东

 

 创建表

技术分享图片

技术分享图片

插入数据:

技术分享图片

查数据:

技术分享图片

 

---恢复内容结束---

表与表之间的关系二

标签:art   现在   步骤   功能   rom   表之间   翻译   角度   有一个   

原文地址:https://www.cnblogs.com/lx3822/p/9016117.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!