一位奶农同时也是一名兼职漫画家,他有几群奶牛。他已将每头牛分配到一个特定的牛群中。在每个牛群中,农场主都有一头他最喜欢的牛--通常这头牛会出现在卡通中。每个牛群中都有一些不满的人,主要是那些认为他们应该出现在卡通中的人,他们不同意农民对最喜欢的牛的选择,他们轻视地将这头牛称为神圣的牛。因此,现在每个牛群都选出了一个牛群领袖。
这就是我认为表格应该是什么样子,你能让我知道它是否可以做得更好?到目前为止,我正在做多对多,使用最喜欢的表作为中间表,这是最好的解决方案,也不需要SQL语句,这只是出于设计目的。
提前谢谢你
Table Herd Table Favorite Table Cartoon Table Cow
PK herdID Intermediate Table PK cartoonID PK cowID
herdname cartoonTitle cowName
herdleader cartoonType
cartoonDate编辑后的image @ 3:01pmEST是否正确?
cowErd http://img838.imageshack.us/img838/1268/capture3h.png
添加了新的图像@8:57 can 7/20/2010有人可以评论这个ERD吗,请Erd2 http://img37.imageshack.us/img37/5794/capture3fc.png
添加了新图像@12:47 is 7/20/2010除非有任何异议,否则这是最终草稿,根据马克的解释mark ERD http://img651.imageshack.us/img651/691/capture4b.png
发布于 2010-07-20 02:39:19
迈克尔:
问题陈述中的名词是什么?有多少个?
Farmer - There is one farmer
Cow - There are many cows
Herd - There are many herds
Cartoon - There are many cartoons因为只有一个农民,所以把他排除在未来的讨论之外。这些是您的基本实体。
每个实体都有哪些属性?
Cow - each cow has a name
- each cow is a member of a herd
Herd - each herd has a name
- each herd has a cow that is the sacred cow
- each herd has a cow that is the herd leader
Cartoon - each cartoon has a name
- each cartoon may have a cow that appears in it
(not specified definitively)因此,这些属性中的一些引用其他实体,而另一些则不引用。不引用其他基本实体的属性很简单。其他的需要更多的考虑。
Can a cow be a member of more than one herd?
Must a cow be a member of a herd?
Can a herd have more than one cow that is the sacred cow?
Must each herd have a cow that is the sacred cow?
Can a herd have more than one cow that is the herd leader?
Must each herd have a cow that is the herd leader?这些问题有助于概述实体之间的关系是强制的还是可选的,以及关系是一对多还是多对多。
发布于 2010-07-20 07:17:17
一个讨论项目,所以我把它做成了一个社区维基。
关系模型做得不好的一件事是强制在牛群级别持有的SacredCow和HerdLeader实际上指向属于该牛群成员的奶牛。
假设你的牛群是星座和十字架。“星星”牛群的细节可能会给出参宿七作为SacredCow,卡斯特作为HerdLeader,但“牛”表可能会显示卡斯特是“十字”牛群的成员。在实践中,在创建新的牛群时,当您有一个没有奶牛的牛群(因此没有HerdLeader/SacredCow)或没有牛群时,您将面临鸡和蛋的场景。
另一种模型将有“奶牛”表,表明特定的奶牛是否是其牛群的HerdLeader和/或SacredCow。在物理实现中,可以使用唯一的约束来强制每个牛群只有一头牛是SacredCow,一头牛是HerdLeader。.The“羊群”表不会有SacredCow或HerdLeader。这种模型将无法强制要求每个牛群都有一个HerdLeader和一个SacredCow。
这两个都是模型。两者都有缺陷。在逻辑层面上,我可能会选择前者,因为它更规范化。在物理上,我会考虑哪种不一致会更麻烦,更有可能发生,我会选择最能防止它的模型。
发布于 2010-07-20 01:11:43
我很高兴你真的尝试过自己做这件事。事实上,你已经接近成功了,所以你的工作做得并不差。
让我们从对象/实体的角度来看这一点。
这些实体包括以下内容:
母牛
牛群
主键(主键)
CowHerds
以上字段的组合用作主键
CowCartoon
日期日期( cartoon)
正如注释中所提到的,您还可以去掉CowHerds表,直接在Cows表中引用HerdID。
https://stackoverflow.com/questions/3283030
复制相似问题