数据库范式那点事

第一范式:

①必须要有主键

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

数据库范式那点事_第1张图片

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


数据库范式那点事_第2张图片


第二范式:

①必须满足第一范式

②每一个非主键字段完全依赖于主键,否则将不完全依赖的非主键字段生成另外一张表


数据库范式那点事_第3张图片

其中价格完全依赖于 主键<组件ID,供应商ID>,但是供应商名称和供应商住址却只依赖于供应商ID,故需要将这两个字段与供应商ID单独生成下表:


数据库范式那点事_第4张图片
数据库范式那点事_第5张图片

第三范式:

①必须满足第二范式

②每个非主键字段之间没有依赖关系,否则将有相互依赖的字段生成另外一张表、


数据库范式那点事_第6张图片

上表中,制造商地址和制造商名称有关系,制造商地址依赖于制造商名称,所以改为下表:


数据库范式那点事_第7张图片
数据库范式那点事_第8张图片

使用范式的好处:

①可以防止数据冗余

②可以防止更新异常,插入异常,删除异常的出现

③保证数据的一致性

范式过高导致的问题:

①范式越高表则越多,表越多则进行操作时IO更易越浪费时间

使用建议:

设计数据库最多到第三范式,第二范式也可,不要高于第三范式,否则性能将大大下降

你可能感兴趣的:(数据库范式那点事)