为什么需要数据库设计
三大范式
保证第一范式(1NF )各列不可再分割
举例说明:
上表中,“家庭信息”和“学校信息”列均不满足原子性要求,因此不满足第一范式,调整如下。
由于调整后的各列不可再分割,因此可知满足第一范式(1NF )
基于第二范式(2NF ) 1NF,在各表中只记述一件事
举例说明:
在上图中,主键必须由“订单号”和“产品号”组成,因为同一订单可能包含不同的产品。
但是,您可以看到,产品数量、产品折扣和产品价格均与“订单编号”和“产品编号”相关,而订单金额和订单时间仅与“订单编号”相关,与“产品编号”无关。
这样不满足第二范式的要求,需要如下调整,分为两个表。
基于第三范式(3NF ) 2NF,使各列和主键直接相关,间接不相关
举例说明:
上表满足了第二种模式,因为所有属性完全依赖于学校号码,但“ryddg性别”和“ryddg年龄”直接依赖于“ryddg姓名”。
因为不是主键“学号”,所以需要做如下调整。
这样,就满足了第三范式的要求。
如果将上表中的ryddg重命名为ryddg教学号,ps:可能会更准确,更符合实际情况,但只要能理解就可以了。
规范性与绩效的权衡