這是一個很好的問題表現出一定的面向對象的思想和關係模型之間的異同。
首先,沒有關於創建表格的嚴格規則,它取決於您嘗試建模的問題空間(然而,每個表格的字段根本沒有必要,並構成設計缺陷 - 主要是因爲它不靈活且難以查詢)。 對於在這種情況下,例如完全可以接受的設計是具有表
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