我正在寫一個動物園管理應用程序,但我在製作數據庫關係等方面遇到了麻煩。我有3個表格,動物,區域(如北極光或沙漠)和動物園。C#應用程序數據庫佈局
在動物園的表中有動物園所有的somone擁有者。 動物表中所有動物及其細節(名稱性別等)。 在區域表中有所有區域。
我想要的是有一個動物園,有多個區域,例如4,在所有這些區域都有動物。
它很容易奠定動物和區域之間的關係,但我如何得到它,以便在動物園中可以有多個區域。
在此先感謝。
我正在寫一個動物園管理應用程序,但我在製作數據庫關係等方面遇到了麻煩。我有3個表格,動物,區域(如北極光或沙漠)和動物園。C#應用程序數據庫佈局
在動物園的表中有動物園所有的somone擁有者。 動物表中所有動物及其細節(名稱性別等)。 在區域表中有所有區域。
我想要的是有一個動物園,有多個區域,例如4,在所有這些區域都有動物。
它很容易奠定動物和區域之間的關係,但我如何得到它,以便在動物園中可以有多個區域。
在此先感謝。
您可以使用交集表:
下面是一個簡單的查詢:
SELECT zoos.Zoo_Name, anim.Animal_Name, zone.Zone_Name
FROM tbl_Zoo zoos
INNER JOIN itbl_Zoo_Zones zzoo ON zoos.zoo_id = zzoo.zoo_id
INNER JOIN tbl_zones zone ON zzoo.zone_id = zone.zone_id
INNER JOIN itbl_animal_zones azoo ON zone.zone_id = azoo.zone_id
INNER JOIN tbl_animals anim ON azoo.animal_id = anim.animal_id
像這樣的東西將是一種基本的關係。您可以通過Zone加入動物所屬的動物園。
table Zoo: ZooID (unique), ZooName, ...
table Zone: ZoneID (unique), ZooID (non-unique, FK), ZoneTypeID, ...
table Animal: AnimalID (unique), ZoneID (non-unique, FK), AnimalTypeID, ...
我會建議增加一個ZoneType和AnimalType表以及
table ZoneType: ZoneTypeID, ZoneName, ....
table AnimalType: AnimalTypeID, AnimalName, ....
比方說,2個動物園有相同類型的區域 - 北極和沙漠。如果沒有ZoneType表將Zone表將是這個樣子:
ZoneID | ZooID | ZoneName
0 | 0 | Arctic
1 | 0 | Desert
2 | 1 | Arctic
3 | 1 | Desert
現在,這是好的,如果與區域相關聯的唯一數據是它的名字,但想象一下,如果有一個區域的更多信息 - 現在所有的數據對每一行都是重複的。隨着ZoneType表可以存儲在區表中的單個ZoneTypeID沒有任何duplcation數據
ZoneType如何適應?也許一個愚蠢的問題,但我真的很困惑 – ferdi0314
我會編輯回答這個問題 –
因爲有多個動物區一樣嗎? –