美文网首页
七、多表的数据库设计

七、多表的数据库设计

作者: 天天阳光好 | 来源:发表于2017-04-19 01:16 被阅读0次

    不符合原子性的列需放入新的表

    模式(SCHEMA): 用于表达数据库内的数据描述(包括列和表),以及任何相关对象和各种连接方式的描述。

    一、外键

    CREAT TABLE table_name_zibiao(

    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

    column name VARCHAR(30)  NOT NULL,

    id_fubiao  INT NOT NULL,

    CONSTRAINT table_name_fubiao_id_fubiao_fk

    FOREIGN KEY(id_fubiao)      '此行括号内的列名代表外键,可随意命名

    REFERENCES  table_name_fubiao (id_fubiao)

    );

    外键在DESC中的KEY为MUL,表示这列可以存储多个相同的值。

    1. 定义和注意事项

    定义:

    把A表的主键值作为B表的一列,这种方式称为外键(foreign key);

    外键引用到另一个表的主键;

    2. 外键性质

    ① 外键使用的主键被称为父键,主键所在的表称为主表;

    ② 外键的值可以是NULL,即使主键值不可为NULL;此时表示在父表中没有相符的主键;

    外键值不需唯一,它事实上通常都没有唯一性。

    3. 外键约束

    定义:

    ① 除非利用CREAT和INSERT语句制定外键,否则都不算是真的外键,创建在结构内的键被称作约束(constraint),即表必须遵守的规则;

    ② 插入外键列的值必须已经存在于父表的来源列中,这是引用完整性;

    外键不一定必须是主表的主键,但必须有唯一性。

    二、表间的关系

    1. 表的对应模式

    ① 一对一模式

    父表里的某条记录在字表里最多只能有一条相应的记录;

    例如:如果员工信息表和工资表是2张表,主键和外键是工号,那么每一个主表里员工姓名只能在字表里找到一条工资记录(假设每个人工资都不相同)。

    ② 一对多模式

    A表里的某一条记录B表中可以对应到多条记录,但B表中的每条记录只会对应到A表里相应的一条记录;

    例如:如果员工信息表和ttle表是2张表,主键和外键是工号,那么每个title在员工信息表中可以找到多个人,但是每个员工在title表中只能找到1个title。

    ③ 多对多模式

    A表里的某一条记录在B表中可以对应到多条记录B表中的一条记录也可以在A表里找到多条记录

    例如:A表是每位女性的姓名,B表是销售的鞋子品种,那么每位女性会购买多双鞋,每种鞋可以被多位女性购买。

    2. 连接表(junction table)

    需要的原因:

    如果没有连接表,在女士和鞋子的例子中,无论怎么排列,表中都会出现姓名或者鞋子重复出现的情况,所以多对多关的表之间需要一个连接表,从而把表的关系简化为一对多

    三、第一、第二、第三范式

    1. 第一范式,1NF

    条件一:数据列只包含具有原子性的值;

    条件二:没有重复的数据列。

    2.各种概念

    组合键:由多个数据列构成的主键,组合后各列形成具有唯一性的键,也可叫做主键列;O+π

    部分函数依赖:非主键的列依赖于组合主键的某个部分(但不是完全依赖于组合主键),即此非主键列会根据主键列中某列改变而改变,但是不会因为主键列中另一列改变而改变

    速记符号:T.x→T.y

    在关系T中,y列函数依赖于x列;从右想左解读。

    传递函数依赖:如果改变任何非键列可能造成其他非键列的改变,即为传递依赖

    2. 第二范式,2NF

    条件一:先符合1NF

    条件二:没有部分函数依赖。

    ① 已经符合1NF的表如果只有一列主键,那么也会符合2NF;

    ② 只要所有的列都是主键的一部分或者表中有唯一主键列符合1NF的表,也会符合2NF;

    ③ 任何具有人工主键且没有组合主键的表都符合2NF。

    3. 第三范式,3NF

    条件一:符合2NF

    条件二:没有传递函数依赖。

    相关文章

      网友评论

          本文标题:七、多表的数据库设计

          本文链接:https://www.haomeiwen.com/subject/sawqzttx.html