2013-05-10 36 views
1

我想這個問題是相當基本的,但這些是最難的。SET()或請建議合適的設計

因此,可以說,我想創建一個關於人的人員的詳細信息表,並讓說不是像姓名,地址,contactno基本信息等。等等。我還需要儲存這個人是否是投資者,導師,人力資源專家,校友,合作伙伴,捐贈者或服務提供者。他可以在上面列出的1個以上的字段中。

它是推薦使用set()場與7個選項?似乎是這樣做的邏輯方法,但我讀過set()字段對大數據庫中的搜索不友好。

我腦子裏想的其他選項:

1.Having在原始表中的每個字段7個額外的布爾列。

這將是最好的方式,考慮到數據庫/表將是大?

PLZ建議一些很好的出路!在此先感謝

回答

2

正常化。

一個表來保存不同的類型,然後,由於一個人可以是零或更多的數類型的,另一個表膠合在一起。考慮一下這樣的設計;

person: 
-------------- 
id int 
name varchar 
email varchar 
... 


type 
-------------- 
id int 
name varchar 


person_type 
-------------- 
person_id 
type_id 
+0

非常感謝@Hank。但是你確定這不會影響搜索速度,因爲我將需要大部分基於type_id搜索...並且需要太多時間才能獲取關於人的基本信息,因爲它會吸收加入。 – user2353615 2013-05-10 06:46:15

+0

both type.person_id並且type.type_id應該是主鍵,並且還可以與主鍵聯接,這在數據庫的功能上有些不同,而且它們確實做得很好。 – hank 2013-05-10 06:49:14

+0

感謝Hank ......你真的很高興幫助我! – user2353615 2013-05-10 07:03:43