-1
我有一個運行許多軟件的系統。 假設系統從0到烹飪完成一個披薩。 它具有以下子系統:SQL - 行是另一個表中的行的組合
- RecipeWizard:挑選選定的成分。
- 配料攪拌器:將配料塗在麪糰上。
- 烤箱:用特定溫度烹飪比薩。
這些子系統都運行一個獨立的軟件,可以獨立升級。 對於每個披薩,我們需要知道我們用來製作它的不同軟件。
CREATE TABLE pizza (
id_pizza INTEGER NOT NULL PRIMARY KEY NOT NULL,
something INTEGER NULL,
...,
);
答:
例如,比薩餅N°X使用RecipeWizard V1.0,V2.3 IngredientMixer,烤箱V1.1
我已經做了以下的(簡化的)製成軟件具有屬性。在此表中,可能會出現多次軟件版本或修訂版本。這讓我知道整個系統中放置了哪些軟件。
CREATE TABLE softwareProperties (
id_softwareProperties INTEGER NOT NULL PRIMARY KEY NOT NULL,
name VARCHAR(16) NULL,
version INTEGER NULL,
revision INTEGER NULL
);
修訂(如在SVN版本)軟件的應該是出於測試目的經常變化(每developper每天2-3次)。
最後一個表如下:
CREATE TABLE IF NOT EXISTS softwareVersion (
id_softwareVersion INTEGER NOT NULL PRIMARY KEY NOT NULL,
fk_pizza INTEGER NOT NULL,
fk_RecipeWizard INTEGER NOT NULL,
fk_IngredientMixer INTEGER NOT NULL,
fk_Oven INTEGER NOT NULL,
CONSTRAINT c_01_softwareVersion FOREIGN KEY (fk_pizza) REFERENCES pizza (id_pizza)
CONSTRAINT c_02_softwareVersion FOREIGN KEY (fk_RecipeWizard) REFERENCES softwareProperties (id_softwareProperties)
CONSTRAINT c_03_softwareVersion FOREIGN KEY (fk_IngredientMixer) REFERENCES softwareProperties (id_softwareProperties)
CONSTRAINT c_04_softwareVersion FOREIGN KEY (fk_Oven) REFERENCES softwareProperties (id_softwareProperties)
);
你有更好的方法來做到這一點,而不是有多個外鍵的? PS:讓我知道你是否找到了更好的問題標題。
我會從PizzaID和SoftwareId之間的多對多關係開始。如果你不知道這意味着什麼,我已經聽說過關於這本書的數據庫設計的好消息。 –
好吧,在發佈問題之前,我正在閱讀** Identifying Relationship **(在MySQL WorkBench中找到它),因爲它似乎與我的需求有關。關於這本書,我希望評論不是諷刺。我沒有時間去閱讀,並不是我不想要。我相信你明白擁有一位「需要爲昨天解決」的老闆是什麼感覺。 _ –