码迷,mamicode.com
首页 > 数据库 > 详细

mysql数据库,外键约束和表关系

时间:2018-01-22 19:31:28      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:tab   技术分享   and   情况   学院   post   mysq   table   school   

E-R 图 (实体关系模型)

 

E-R图也称实体-联系图(Entity Relationship Diagram),
  提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。

  它是描述现实世界关系概念模型的有效方法。

  是表示概念关系模型的一种方式。

 

  用“矩形框”表示实体型,矩形框内写明实体名称;

  用“椭圆图框”表示实体的属性,并用“实心线段”将其与相应关系的“实体型”连接起来;

  用”菱形框“表示实体型之间的联系成因,在菱形框内写明联系名,并用”实心线段“分别与有关实体型连接起来,同时

    在”实心线段“旁标上联系的类型(1:1,1:n或m:n)。  

 

 

外键约束

  外键约束 foreign key,保持数据一致性,完整性实现一对一或一对多关系。(因为一个表只存一类信息。用外键来做参照,

保证数据的一致性,可以减少数据冗余)

  外键约束的要求:

    数据表的存储引擎只能为InnoDB;

    外键列和参照列数据类型一致;

    外键必须关联到键上面去,一般情况是关联到,另一张表的主键.

 

建立外键约束:

  建一个表a

  技术分享图片

  再建一个表b,并给它外键约束:

  技术分享图片

  建立外键约束的语句:constraint `外键名` foreign key(ab_id) references `a`(a_id);

            foreign key(ab_id) references `a`(a_id);   默认给予外键名,不会重复。

 

删除外键: alter table `b` drop foreign key dc_id;

  技术分享图片

增加外键:   

  技术分享图片

  注意这里没有指定外键名,我们可以查看它的名字:

   技术分享图片

 

 一对多关系

  举例:学校中一个学院可以有很多的学生,而一个学生只属于某一个学院(通常情况下),学院与学生之间的关系就是一对

多的关系,通过外键关联来实现这种关系。

  建立一个学院表和一个学生表,学生表有一个非空字段ss_id,将它关联到学院的编号(school_id),即学生必须属于某一个学

院。

  技术分享图片

  技术分享图片

  给school表插入数据:

  技术分享图片

  给student表插入数据:

  技术分享图片

  如果插入数据时,ss_id 的值在school表的school_id值中没有则会报错;

 

一对一关系

  举例,学生表中有学号、姓名、学院,但学生还有些比如电话,家庭住址等比较私密的信息,这些信息不会放在学生表当

中,会新建一个学生的详细信息表来存放。这时的学生表和学生的详细信息表两者的关系就是一对一的关系,因为一个学生只

有一条详细信息。用外键加主键的方式来实现这种关系。

  技术分享图片

 

多对多关系:

  举例,学生要报名选修课,一个学生可以报名多门课程,一个课程有很多的学生报名,那么学生表和课程表两者就形成了多

对多关系。对于多对多关系,需要创建第三张关系表,关系表中通过外键加主键的形式实现这种关系。

   先建立课程表:

  技术分享图片

  再建立中间表student_course:

  技术分享图片

  s_id对应于学生表的学生学号;c_id 对应于课程表的课程编号。

 

查询中一些较为常见的函数

#求最大年龄     mysql> SELECT MAX(`age`) FROM `student_details`;

  技术分享图片

#求最小年龄:

  技术分享图片

#其他一些操作:

  技术分享图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

技术分享图片

mysql数据库,外键约束和表关系

标签:tab   技术分享   and   情况   学院   post   mysq   table   school   

原文地址:https://www.cnblogs.com/dan-baishucaizi/p/8317802.html

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