数据库三

1、主外键关联

将外键与其它表主键关联,有三种情况

1、严格模式

被外键关联的表,无法直接删除数据,需要将关联的表内数据先清空才可以删除

2、级联删除/更新

被外键关联的表删除或更新数据的同时,关联表的数据会同步删除或更新。

2、数据库设计三范式

1、原子性范式

字段本身不可再分割,必须是基本的字段。比如商品规格不是最简单的字段,还可以分割成重量、体积和密度等多个字段。

2、主键范式

每个表都必须有一个内容不重复的字段作为每条数据的唯一标识,这种唯一的标识可以做主键。

3、外键范式

表格中有与其他表格重复的非主键字段,应该去除,然后设置主外键关联。

3、表与表之间的关系

1、一对一

两张表之间每行数据都各自只与另一张的一行数据关联,例如病人信息表和病人当前病情表是一一对应。

2、一对多

一张表的一行数据可以对应另一张的多行数据(反之不行),例如销售人员表与销售记录表。每个销售人员可以有多条销售记录,但是每条销售记录只能对应一个销售人员。

3、多对多

两张表之间的每行数据都可以对应对方表的多行数据,例如学生表和课程表。每个学生可以有多个课程,而每个课程也可以有多个学生同时上课。

4、反范式设计

除了主键范式不可违反,即每张表必须有不重复的主键,其它两个范式都可以违反

1、反原子范式

举例:电商购物中的收货地址字段。地址字段其实可以根据地区大小分为:国家、省级行政区、地级行政区和县级行政区等等,但是在实际存储中,并没有分得这么详细,一般都是一个地址字段包含所有地址,所以违反了原子性。

2、反外键范式

举例:学生成绩表中的学生姓名字段。一般数据库中会有学生的信息表,里面就已经包含了学生姓名,所以再其它表中不应该出现姓名字段,如果需要,就应该使用主外键关联的方式指向学生信息表。事实上,学生成绩表内一般都会写上学生姓名,这样做虽然产生了冗余,浪费了空间,但是在查询时会非常简单快速,这就是牺牲空间换取时间。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 关键重点1NF:> 强调的是列的原子性,即列不能够再分成其他几列。 2NF:> 首先必须满足 1NF,另外还必须包...
    yeying12321阅读 287评论 0 0
  • 1、数据库三范式是什么? 第一范式(1NF):字段具有原子性,不可再分。所有关系型数据库系统都满足第一范式。 数据...
    架构师Javaspring阅读 904评论 0 4
  • 1.第一范式(Normal Form ,1NF)的目标是确保每列的原子性。如果每列(或者每个属性值)都是不可再分的...
    Seven_7c08阅读 330评论 0 0
  • 示例表数据 假设有一个名为employee的员工表,它有九个属性:id(员工编号)、name(员工名称)、mobi...
    缓慢移动的蜗牛阅读 21,517评论 0 10
  • 径直走到街边 理一理蓬乱的头发 想一想弄丢的姓名 暂时忘记这些和你毫不相干的人 等到身体冰冷,手指僵直 再回到人群...
    马金森阅读 221评论 0 3

友情链接更多精彩内容