我有2種用戶。他們都有一些共享的信息,如:用戶名,電子郵件,密碼,電話......但每種用戶都有一些其他設置,只與這種用戶有關,現在我想到了3種方法:針對不同類型用戶的sql-server一對一關係表
具有1級的用戶表,並且具有所有列的所有類型的用戶(每行將具有不相關的該種用戶幾個空列),其具有3個表用戶,usertype1
,usertype2。共享設置將保存在用戶表中,並且與usertype1或usertype2(基於用戶類型)存在一對一關係
一個用戶表和一個設置表,這是更動態的,但這有一個問題我必須爲所有設置使用varchar類型。
哪一個更明智?我擔心未來的用戶類型可能會增加。
其實這也正是我的想法。但在我讀到的任何地方,他們都說不要拆分桌子,除非你真的被迫。這讓我害怕,爲什麼?爲什麼人們這麼反對分開桌子? –
這意味着你有一個非常好的設計,然後:),不要關注「每個人都在說」什麼,遵循數據庫規範化的簡單規則。遵循這種設計,您將使您的數據庫以第三種正常形式出現。 [在這裏閱讀關於數據庫規範化](http://databases.about.com/od/specificproducts/a/normalization.htm) –
我一直是一個程序員17年,我所知道的只是經驗,我只學到了自己使用互聯網作爲參考,這就是爲什麼有時當我聽到某些事情時,我認爲背後有一個我不知道的科學原因。但正如你所說,第二種選擇更有意義,我會去做。非常感謝 –