2011-05-18 333 views
0

我有一個小型的數據庫,有數百種不同類型的資源(例如醫療,教育和研究)。每個資源都需要通過其區域進行標識。一些資源服務於多個地區。我需要能夠按照其類型定義每個資源,並且它是區域。簡單資源數據庫

由於一個地區會有很多資源,一個資源可以服務於很多縣,我想我應該在它們之間有一個聯結表,對吧?

我的問題是,我應該有每個資源類型的聯結/鏈接表?我是否應該有education_resources表和地區表,並將它們與聯結表education_regions關聯?併爲其他類別做同樣的事情?

回答

1

保留Resource表中所有資源的公共列。子類型表只有專門針對每個表的列。

enter image description here

+0

呃,看起來像圖像服務器已關閉。 – 2011-05-18 13:41:14

+0

我不太確定我是否理解這個模式中的符號。這是否意味着我應該將所有資源列在一張大桌子上?然後有一個對應於每種資源類型的資源表的外鍵?那麼,實質上,每種資源類型應該只有資源表主鍵的副本,是正確的? – dzilla 2011-05-18 15:07:36

+0

@dzilla;正確。這是超類型 - 子類型模型。每個子類型僅包含特定於其的列;所有常見的列都在'Resource'表中。 'ResourceType'是一個鑑別列,如('M','E','R')。 – 2011-05-18 15:25:16

1

使用像education_resources和medical_resources這樣的名稱創建表格可能會使您很難在添加其他資源類型時擴展數據庫。相反,您可以將表格設置爲:

Resource_Type (resource_type_id, resource_type_name) 
Resource_Region (resource_region_id, resource_region_name) 
Resource_counties (resource_county_id, resource_county_name) 
Resources (resource_id, resource_type_id,...) 
Resource_Region_Map (resource_region_id, resource_id) 
Resource_County_Map (resource_county_id, resource_id) 

這是否會爲您工作,還是會讓事情變得更加複雜?

+0

我認爲這會讓事情變得更復雜一點。 – dzilla 2011-05-18 15:05:58