讨论:数据库设计的疑惑

geek007 2008-03-17 03:31:50
今天,按照以往的习惯,建了个文章表、回复表、回复和文章回复关系表,
愣是被有个有5年工作经验的老手给我把文章回复关系表删了,在回复表里加了个文章字段

我疑惑了,以前的老手这样教的我建三个表,现在的老手却这样,
现在问下各位:到底哪种好,有什么区别?

...全文
152 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zbc1009 2008-03-18
  • 打赏
  • 举报
回复
两个表就可以实现了,并且都3NF了,个人认为没必要再建一个表了。并且有利于维护和查询效率的提高
geek007 2008-03-18
  • 打赏
  • 举报
回复
呵呵,长学问了
studyzy 2008-03-17
  • 打赏
  • 举报
回复
其实就是要确定你的业务,也就是要确定实体之间的关系,在编程中就是要确定类之间的关系。1:n(一对多)的2个实体在数据库中就是2个表,n:n(多对多)的2个实体在数据库中就是3个表(2个实体表1个关系表)。那么这里1篇文章对应的是多个回复,1个回复只会对应1篇文章,所以这里是一对多的关系,所以建2张表。
不知道我这样说你能理解不。
wangdehao 2008-03-17
  • 打赏
  • 举报
回复
在这个结构中,关系表确实没啥必要
JiangHongTao 2008-03-17
  • 打赏
  • 举报
回复
从你的问题来看,
1篇文章可以有多个回复,
但1个回复只能属于1篇文章,并且必须属于1篇文章
典型的1对多的强制关系。
所以应该用外建约束。
JiangHongTao 2008-03-17
  • 打赏
  • 举报
回复
两表A / B
如果 A表对B 表是一对多的关系,并且不存在B表中的记录不对应A表的情况,应该采用外建约束。

如果 A表和B表存在多对多的关系,则需要建立第三个表,来约束记录之间的关系。
mengmou 2008-03-17
  • 打赏
  • 举报
回复
数据库设计的一条准则:如果A表与B表是一对一并且A表是强制参与,可以把A表并入B表。
我们来看回复表与回复和文章回复关系表,两表是一对一的,并且两表都是强制参与,所以应并为一张表。
JiangHongTao 2008-03-17
  • 打赏
  • 举报
回复
只要两个表,在回复表中增加一个字段:文章ID就行了,并且最好是外建。
JiangHongTao 2008-03-17
  • 打赏
  • 举报
回复
只要两个表,在回复表中增加一个字段:文章ID就行了。
dawugui 2008-03-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 geek007 的帖子:]
今天,按照以往的习惯,建了个文章表、回复表、回复和文章回复关系表,
愣是被有个有5年工作经验的老手给我把文章回复关系表删了,在回复表里加了个文章字段

我疑惑了,以前的老手这样教的我建三个表,现在的老手却这样,
现在问下各位:到底哪种好,有什么区别?
[/Quote]

我觉得你老手的做法是对的.

他把你的回复和文章回复关系表里面的文章字段放到回复表里面,这样已经足够了.
没必要还搞个回复和文章回复关系表.
geek007 2008-03-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hlq8210 的回复:]
你的多了张关系表,增加了维护的难度
[/Quote]



除了多对多关系外,使用关系表不好吗?
hlq8210 2008-03-17
  • 打赏
  • 举报
回复
你的多了张关系表,增加了维护的难度
liangCK 2008-03-17
  • 打赏
  • 举报
回复
自己画好E/R图.
充分利用范式来设计..
如果觉得自己确实比较容易维护的话..那就跟"老鸟"商量看看..听听他的意见.

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧