2015-11-05 45 views
0

我正在寫一個動物園管理應用程序,但我在製作數據庫關係等方面遇到了麻煩。我有3個表格,動物,區域(如北極光或沙漠)和動物園。C#應用程序數據庫佈局

在動物園的表中有動物園所有的somone擁有者。 動物表中所有動物及其細節(名稱性別等)。 在區域表中有所有區域。

我想要的是有一個動物園,有多個區域,例如4,在所有這些區域都有動物。

它很容易奠定動物和區域之間的關係,但我如何得到它,以便在動物園中可以有多個區域。

在此先感謝。

+0

因爲有多個動物區一樣嗎? –

回答

0

您可以使用交集表:

  • tbl_zoo(zoo_id,zoo_name)
  • itbl_zoo_zone(tbl_zoo.zoo_id,tbl_zones .zone_id)
  • tbl_zones(zone_id,ZONE_NAME)
  • itbl_animal_zones(tbl_zones.zone_id,tbl_animals.animal_id)
  • tbl_animals(animal_id,animal_name)

下面是一個簡單的查詢:

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 
0

像這樣的東西將是一種基本的關係。您可以通過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數據

+0

ZoneType如何適應?也許一個愚蠢的問題,但我真的很困惑 – ferdi0314

+0

我會編輯回答這個問題 –