我的数据库设计有问题。我将浏览器作为一个小型项目来帮助提高我对网站和数据库设计的整体理解。
我当然不会在这里发帖,如果我没有试图自己找到解决方案(这是搜索问题的其中一个问题,它发现其他问题,如“如何创建一个许多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代表的结构和研究之间的科技树,更不用说船舶防御,这感觉对我来说是不好的设计。
几乎不得不有更好的方法来做到这一点。我很乐意得到一些帮助,以便我应该采取思维过程。
是的,当然这是答案(不“感觉”像坏的设计)谢谢你帮助我 –