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数据库查询