我想到了一个办法,设计我的数据库,但我想这样做是正确的,这在我看来包括:数据库设计 - 对象继承
- 数据库设计不应该有任何裁员
- 的设计本身应该设置的限制什么是可能的,什么是不
- 数据库设计应该不需要任何业务逻辑实现对象的持久性
这是我现在: 我有一个设计在我的大脑,并希望运输到MySQL(任何其他DBMS将罚款,但我不认为这是问题)。 之后我想在数据库体系结构之上构建一个Java应用程序。
我的问题似乎很简单(为简单起见,我删除了很多东西):
我有两个不同的对象/表:
- 船舶
- ID
- 名
- 速度
个
- 武器
- ID
- 名
- 损害
什么我想要做的是建立像一个高科技的树:
- ,如果你想为了建造船舶“Y”,那么你必须首先研究船舶“X”。
- 如果你想使用武器“B”,那么你必须先研究武器“A”。
- 如果你想使用武器“C”,那么你必须首先研究武器“A”。
这将是很容易的,但现在到下一个限制:
- 如果你想建立船舶“Z”,那么你必须要调查船“Y”和武器“B”和“武器“C” 第一
这里是树的可视化表示:
要表示一棵树,我想出了解决方法只有一个:
创建一个名为“实体”与领域“ID”和“表格名”新表;还要创建一个有两个字段“id_entity”和“id_entity_prequisite”的m2m表;表中“船”和“武器”没有一个真正的主键“身份证”了,而是使用一个外键表“实体 - > ID”
- 好:完整的树可以表示
- 坏&丑:我需要businesslogic首先创建一个实体,使用id,然后可以创建新船或武器
还有没有其他的(更好的是,THE)的方式来做到这一点?
也许我不太了解你,但我认为你给我的第一个解决方案就是我在问题结束时提出的确切的事情。所以我认为这个问题并没有解决,因为要使这个解决方案起作用,应用层必须首先在Table“Entities”中创建一个条目,并使用该ID在Tabe“Ships”或“Weapons”中创建一个新条目。 - 我认为这是糟糕的设计。目前这是我做这件事的方式,因为我没有一个聪明的选择。解决方案2可能有效,但正如你所说,这不是首选。特别是如果2表格有更多的列? –