這似乎是一個非常基本的概念,但我甚至不知道在這裏搜索什麼。我所做的幾次嘗試都失敗了。在Sql中的數據「派生」
基本上我有以下內容:
parameter(id PK, type_id, data...)
parameter_string(id PK, string data...)
parameter_float(id PK, float data...)
// etc, lots of them
parameter.id
唯一地標識所述參數本身,和parameter.type_id
唯一地識別包含特定於該類型的數據的各種表中的一個。所有「衍生」表id
字段在所有字段中都是唯一的,因此只需簡單地選擇一個id
即可立即識別該類型。
另一個要求是相同的參數子類可以是「不同參數的一部分」,這是因爲parameter.type_id
字段可以指向相同的參數「子類」id
。
所以我想表示的方式是讓每個參數的id
字段都作爲鏈接到parameter.type_id
的外鍵,但是我收到一個錯誤,抱怨說「表中的列'參數'與現有的主鍵或獨特的約束「。是的,這顯然是真的。不過,我不明白爲什麼這是一個要求,我怎樣才能解決它,並仍然保持類似於我的結構。
我知道如何查詢它,我只是不知道如何構建它,同時仍然保持外鍵。另一種方式顯然不起作用,因爲我只能將外鍵鏈接到一個表,它必須從「子類」向上,除了它仍然不讓我。 – Blindy
但與第二段的說法衝突_「另一個要求是相同的參數子類可以是」不同參數的一部分「,並且這是因爲parameter.type_id字段可以指向相同的參數」subclass「id。 _ - 這是_n:1_的關係。甚至對於幾個子類來說甚至是n:1幾次。並且,對於您所擁有的表格,您只能在_n_一側提供參考。任何其他的意思是引入一個額外的參考表「之間」,以保持外鍵參數和parameter_xxx ... –