数据库建模 范式的灵活运用

标准的需求:


用户名email主页电话联系地址发帖ID发帖标题发帖内容回复ID回复标题回复内容

按照2NF开始拆分
对应关系的确定为
(用户名) → (email,主页,电话,联系地址) 
(发帖ID) → (发帖标题,发帖内容) 
(回复ID) → (回复标题,回复内容) 


表为5张表

1、用户信息:用户名,email,主页,电话,联系地址 
2、帖子信息:发帖ID,标题,内容 
3、回复信息:回复ID,标题,内容 
4、发贴:用户名,发帖ID 
5、回复:发帖ID,回复ID 


4和5都存在1:N的情况 1、2、3是标准的1:1

NF的要求都是满足了 但有个问题:
比如一个用户发了10个帖子 每个帖子有10个回复。

每张表的数据情况为
1:1 2:10 3:100 4:10 5:100  产生221条数据

如果将4和5的1:N关系转移到2、3中去,不满足3NF的要求 但是数据量会发生改变

用户信息:用户名,email,主页,电话,联系地址 
帖子信息:用户名,发帖ID,标题,内容 
回复信息:发帖ID,回复ID,标题,内容 


用户信息表还是1条数据 帖子信息表是10条数据 恢复信息也是100条 总数据量为111条数据。 数据量减少一半。

评论

此博客中的热门博文

Kettle设计中 判断的基准和多数据流时的主键唯一性

9月的诚品书单[待修订]

引用 vista下.lnk快捷方式打开方式修复