我的數據庫設計有問題。我將瀏覽器作爲一個小型項目來幫助提高我對網站和數據庫設計的整體理解。
我當然不會在這裏發帖,如果我沒有試圖自己找到解決方案(這是搜索問題的其中一個問題,它發現其他問題,如「如何創建一個許多2多個表」 )多個表之間的多對多關係
現狀:
有它們都實現了數據庫建築/研究(以防止大量的硬編碼的)
CREATE TABLE IF NOT EXISTS `structType` (
`idStructType` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
`idRace` int(11) NOT NULL,
UNIQUE (name),
FOREIGN KEY (idRace) REFERENCES race(idRace),
PRIMARY KEY (idStructType)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
其中一些建築物和研究的過程中有一個科技樹。
這裏是我的問題開始的地方:一個結構可以有多個結構作爲需求以及多個研究。 它也是相反的:
研究也可以有建築/其他研究作爲要求。
於是我開始打造「多到多」 -resolving組像這樣的:
CREATE TABLE IF NOT EXISTS `structtypeReqStructtype` (
`idStructType` int(11) NOT NULL,
`idStructType_required` int(11) NOT NULL,
`level` int(11) NOT NULL,
UNIQUE (idStructType, idStructType_required, level),
FOREIGN KEY (idStructType) REFERENCES structType(idStructType),
FOREIGN KEY (idStructType_required) REFERENCES structType(idStructType)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
這到底給我留下了4代表的結構和研究之間的科技樹,更不用說船舶防禦,這感覺對我來說是不好的設計。
幾乎不得不有更好的方法來做到這一點。我很樂意得到一些幫助,以便我應該採取思維過程。
是的,當然這是答案(不「感覺」像壞的設計)謝謝你幫助我 –