数据库范式那点事

第一范式:

①必须要有主键
②每个字段的值必须是单一原子值(不可为某个字段的集合)

数据库范式那点事
文章图片

这里不喜欢食物为集合,改为下表:


数据库范式那点事
文章图片


第二范式:
①必须满足第一范式
②每一个非主键字段完全依赖于主键,否则将不完全依赖的非主键字段生成另外一张表


数据库范式那点事
文章图片
其中价格完全依赖于 主键<组件ID,供应商ID>,但是供应商名称和供应商住址却只依赖于供应商ID,故需要将这两个字段与供应商ID单独生成下表:


数据库范式那点事
文章图片
数据库范式那点事
文章图片

第三范式:
①必须满足第二范式
②每个非主键字段之间没有依赖关系,否则将有相互依赖的字段生成另外一张表、


数据库范式那点事
文章图片
上表中,制造商地址和制造商名称有关系,制造商地址依赖于制造商名称,所以改为下表:


数据库范式那点事
文章图片
数据库范式那点事
文章图片


使用范式的好处:
①可以防止数据冗余
②可以防止更新异常,插入异常,删除异常的出现
③保证数据的一致性

范式过高导致的问题:
①范式越高表则越多,表越多则进行操作时IO更易越浪费时间

使用建议:
【数据库范式那点事】设计数据库最多到第三范式,第二范式也可,不要高于第三范式,否则性能将大大下降

    推荐阅读