2011-09-18 26 views
1

我需要在關係數據庫中爲具有列NameLastName等的人員使用SQL創建表。用於存儲不同類型的「Person」的SQL數據庫設計

我會有三種不同的人:賣方,買方和客戶。

每個人都有其他信息/屬性。

我是否需要爲每種不同類型的人員創建一個表格,或者是否可以爲所有三種類型使用單個表格?

如果我使用單個表格,如果某種類型的「Person」(比如Seller)具有與另一個Person類型不同的屬性會怎樣?

回答

0

您可以創建1個或2個表。當然,您可以爲每個用戶角色創建3個表格。這取決於你想達到的目標。你的問題常見的解決辦法是:創建兩個表,一個是用戶,一個面向自己的角色爲MySQL(例如:

Create table `person_role` (
id int not null, 
roleName varchar(255) not null, 
PRIMARY KEY(`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; 

Create table `person`(
id int not null. 
name varchar(255) not null, 
lastName varchar(255) not null, 
role int not null, 
PRIMARY KEY(`id`), 
CONSTRAINT FOREIGN KEY(`role`) REFERENCES person_role(`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; 
0

賣家可以成爲買家還是客戶?如果可以的話,將它們全部放在同一張表中,這樣就不會有相同數據的單獨副本。

2

我想創建一個表的人,有PERSONID作爲主鍵,將包含所有公共屬性類型(賣方,買方,客戶)

然後我會創建PersonTypes,一個小的參考表中,將聲明代碼爲不同的類型。

然後,對於每個類型的我會創建一個單獨的表,參照Person表和 PersonType表,包括所有的獨特屬性。

相關問題