数据库建模 范式的灵活运用
标准的需求:
按照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条数据。 数据量减少一半。
| 用户名 | 主页 | 电话 | 联系地址 | 发帖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条数据。 数据量减少一半。
评论
发表评论