MySQL学习笔记 第五讲:实体和外键

第五讲:实体和外键

 

1. 1:1关系:两个实体表内,存在相同的主键字段

    如果记录的主键值等于另一个关系表内记录的主键值,则两条记录对应1:1

2.1:n关系:一个实体对应多个其他实体

      例:一个班级对应多个学生

      设计:在多的那端增加一个字段,用于指向该实体所属的另外实体的标识

3.m:n关系:多对多

       设计:典型的方法:利用一个中间表表示实体之间的对应关系,中间表的每个记录,表示一个关系

                 可以分析:一个m:n通过1:m 1:n来实现

4.外键(foreign key)

        如果一个实体的某个字段(student:class_id),指向(引用)另个实体(class:class_id)的主键,就称student实体的class_id是外键

      ①被指向的实体称为主实体(主表),也叫做父实体(父表);(class)

          负责指向的实体称为从实体(从表),也叫子实体(子表);(student)

      ②作用:用于约束处于关系内的实体

           约束:增加字表记录,是否有与之对应的父表记录,在删除或更新主表记录时,子表应该如何处理相关的记录

      ③定义外键:在从表上增加一个外键字段,指向主表主键,使用关键字foreign key

              foreign key (class_id) references incast_class (class_id);

                                   当前表id    关联              目标表id

      ④设置级联操作

              ⅰ. 在主表数据发生改变时,与之关联的从表数据应该如何处理:

                   主表更新 on update :只有主表的主键发生变化,才会对从表产生影响

                   主表删除 on delete

              ⅱ.允许级联动作:cascade关联操作,若主表被更新、删除,从表也会执行相关的操作

                                            set null设置为null,表示从表不指向任何主表记录

                                            restrict:拒绝主表相关操作

      ⑤修改外键

              先删除,再新建,通过修改表完成

              ⅰ.alter table tbl_name drop foreign key (class_id);

                 删除外键需要通过外键名称达到目的,可以通过在创建外键时,制定名称或者使用mysql默认生成的名称

              ⅱ.alter table tbl_name add foreign key (class_id) references iccast_class(class_id) on delete null;

                 删除时,将从表外键设为null。

                 若为on delete cascade;删除时,从表数据也随之删除。

                 若为on update restrict;更新时拒绝相关操作。

5.存储引擎

        ①表类型:默认的服务器类型,通过my.ini可以配置:

               default - storage - engine = INNODB

             注:在创建表时,或者编辑表时,可以指定表的存储引擎,利用表属性:engine 引擎类型

                   engine myisam     engine innodb

             例:alter table tbl_name engine myisam;

        ②innodb & myisam的区别

              ⅰ.myisam:一个表三个文件:

                  tbl_name.frm  结构

                  tbl_name.myd  数据

                  tbl_name.myi  索引

              ⅱ.innodb:一个表一个文件

                    tbl_name.frm  结构

              注:所有的innodb表都使用相同的innodb存储表空间保存数据和索引

        ③ 选择存储引擎依据:性能和功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值