这是一个很好的问题表现出一定的面向对象的思想和关系模型之间的异同。
首先,没有关于创建表格的严格规则,它取决于您尝试建模的问题空间(然而,每个表格的字段根本没有必要,并构成设计缺陷 - 主要是因为它不灵活且难以查询)。 对于在这种情况下,例如完全可以接受的设计是具有表
Names (Name, Email, Bio)
Talents (TalentType references TalentTypes, Email references Names)
TalentTypes (TalentType, Description, Parent references TalentTypes)
上述设计将让你有层次TalentTypes并跟踪其名具有天赋,你将有一个单一的表,从中可以得到所有的名字(为了避免注册重复),你有一张表,从中你可以得到一个人才名单,你可以很容易地添加新的人才类型和/或亚型。
如果您确实需要在每种天赋类型中存储一些特殊文件,您仍然可以将这些文件添加为引用普通天赋表的表格。 作为一个例证
Models (Email references Talents, ModelingSalary) -- with a check constraint that talents contain a record with modelling talent type
请注意,这只是一个例子,它可能是明智的有薪酬在人才表,而不是对特定人才的表。
如果你与在某种意义上,你可以看看表人才作为排序从一个特定的天赋或子继承的天赋属性的类的特定人才的表结束。回答你的问题之前
嗨,我想这可能已被误解,但基本上我想说的是会有b e分开的人才表,其中我为每个拥有该人才的用户创建条目。每个天赋表中的字段都与该特定人才相关。 – GSTAR 2010-12-01 15:15:00
@pleasedontbelog +1 @GSTAR,其实我不认为它被误解了。我怀疑你不知道如何从上述设计中获得用户的所有才能?如果是这样,让我们知道,我们可以演示如何获得用户拥有的所有人才,或拥有人才的所有用户,等等...... – Unreason 2010-12-01 16:47:13