//////////2016-11-28 ~ 2016-11-29///////////
int study_data(){
E-R图:
E-R图:也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型
属性和联系的方法。用来描述现实世界的概念模型
ER图组成图例:
矩形框:表示实体
菱形框:表示联系
椭圆型框:表示属性
连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,
并在直线上标注联系的类型。(对于1对1联系,要在2个实体连线方向各写1;
对于一对多联系,要在1的一方写1,多的一方写N;对于多对多联系,则要在
两个实体联系方都写N)
E-R图设计过程:
1.确定所有实体集合
2.选择实体集应包含的属性
3.确定实体集之间的联系
4.确定实体集的关键字,用下划线在属性上表明关键字的属性组合
5.确定联系的类型,在用线将表示联系的菱形框联系到实体集时,在线旁边注明是1或n,来表示联系的类型
完整性约束:
1.实体完整性约束:主属性不能为空且是唯一值
2.参照完整性约束:关系中不允许引用不存在的实体
3.用户自定义完整性约束:针对某一具体的关系数据库的约束条件,一般指数据必须满足语义要求
外键(Foreign Key):
外键表示了2个关系表之间的相关联系
外键只能引用外表中的列的值或者使用空值
主要作用:保持了数据一致性,完整性。
主要目的:控制存储在外键表中的数据,使2张表形成关联。
外键的使用原则:
1.为关键字段创建外键
2.所有的键都必须唯一
3.避免使用复合键
4.外键总是关联唯一的键字段
级联操作(cascade):
级联操作可以用来设计一对多关系
操作:级联删除,级联更新
作用:可以保证数据完整性,但级联关系会使得数据变得不可控,不建议使用级联关系
外键约束:
设置外键约束禁用:SET FOREIGN_KEY_CHECKS = 0;
设置外键约束打开:SET FOREIGN_KEY_CHECKS = 1;
范式:
为满足不同数据库设计要求,减少数据冗余而指定设计规范,可称为数据库范式
数据库范式呈递次规范,即高阶范式必然满足低阶范式
越高的数据库范式意味着越严格的设计要求,同时数据冗余越小
第一范式(1NF):
数据库表的每一列都是不可分割的基本数据项。同一列中不能有多个值,
即实体中的某个属性不能有多个值或者不能有重复属性(列的原子性)
原子性,字段不可分,否则就不是关系数据库
第二范式(2NF):
要求实体属性完全依赖于主关键字。指不能存在仅依赖主关键字一部分的属性,
如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,
新实体与原实体之间是一对多关系
主要针对含有联合主键或者数据表中包含多对多关系的情况。
数据库设计要求将其分为2个或以上1对多的关系
唯一性,一个表只说明一个事物
第三范式(3NF):
在1NF基础上,任何非主属性不依赖于其他非主属性(在2NF基础上消除传递依赖)
要求一个关系中不包含在其他关系已包含非主关键字信息
每列都与主键有直接关系,不存在传递依赖
巴斯-科德范式(BCNF):
在1NF基础上,任何非主属性不能对主键子集依赖(在3NF基础上消除对主码子集的依赖)
}