zoukankan      html  css  js  c++  java
  • Title

    数据库表外键的设计和数据库三范式

    子表,父表的定义: 拥有外键的表是子表。主键被其它表引用的表是父表。
    换句话说:因为父表的标识被很多个子表中的记录引用,所以叫父表。
    拥有外键关系,并且可以随便删除数据,不影响其它表的数据的那个表叫子表。
    
    使用的时候谁做为谁的外键,主要从以下两点考虑:
    1/,删除是如何相互影响的,删除记录受约束的那个是父表,不受约束的那个是子表;
    2/,记录必须先存在的是父表;
    
    两种用途:
    1/, 最常用的一种: 减少重复数据.表A中拥有外键,表B的数据基本是不允许删除的.这时选择对 INSERT 和 UPDATE 强制关系即可.
    2/,其次,是增加一个从属表. 如果表A删除一条记录时,表B中也随着删除一条相关联的记录,那么外键关系中,表A的主键是表B的外键。这种关系,实际上表B是表A的从属表(即表A是父表),选择对 INSERT 和 UPDATE 强制关系时,如果向表B中插入数据,表A中必须已经存在对应的记录。选择级联删除相关的字段时,删除表A中的一条记录,就会删除对应的表B中的一条记录。
    
    数据库三范式:
    第一范式(1NF):要求数据库表的每一列都是不可分割的原子数据项
    第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)
    第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关
    
    第一范式的关键词是列的原子性》第二范式的关键词是不能包含部分依赖》第三范式的关键词是不能包含传递依赖
    
    ForeignKey就是一个多对一的字段,而被ForeignKey关联的字段就是一对多字段
    
  • 相关阅读:
    Bash Shell 快捷键
    vector-swap
    vector-swap
    vector-size
    Android网络篇
    应用 Valgrind 发现 Linux 程序的内存问题
    树莓派初学者?先做做这十个项目吧
    树莓派 (为学习计算机编程教育设计的一种微型电脑)
    微软windows10 IOT支持PI3之后,树莓派3更是将获得Android官方原生支持
    Linux基金会宣布JS Foundation基金会成立 前身为jQuery团队
  • 原文地址:https://www.cnblogs.com/guotianbao/p/12407987.html
Copyright © 2011-2022 走看看