Core data 如何设计一个具有多2多关系的数据库
我设计数据库已经有很长一段时间了,我只是想确保我的设计是正确的 我有一个实体,它有一个名称和描述 该实体可以有许多类型为Entity的子实体 所以它就像一个递归关系。现在确定如何正确设计数据库 我要创建第二个表还是什么Core data 如何设计一个具有多2多关系的数据库,core-data,relational-database,Core Data,Relational Database,我设计数据库已经有很长一段时间了,我只是想确保我的设计是正确的 我有一个实体,它有一个名称和描述 该实体可以有许多类型为Entity的子实体 所以它就像一个递归关系。现在确定如何正确设计数据库 我要创建第二个表还是什么 更新:一个实体只能有一个父实体或没有父实体。在关系数据库中,您可以使用一个,故事结束 entity ====== id name description xref_entity_subentities ======================= parent_entity_
更新:一个实体只能有一个父实体或没有父实体。在关系数据库中,您可以使用一个,故事结束
entity
======
id
name
description
xref_entity_subentities
=======================
parent_entity_id (FK references entity)
child_entity_id (FK references entity)
我不能谈论核心数据。对于多对多关系,您需要一个交集表来委托它自身之间的关系 比如说,
Entities OtherEntities
-------- -------------
ID ----> EntityID1
Name <---- EntityID2
Descrip
对于关系数据库:
您的实体不应具有作为另一个实体的子实体,否则数据库将不会处于正常形式。根据您的需要,它可以包含一对一、一对多、多对多对同一表/实体的关系 编辑:根据问题的更新,我建议的解决方案以粗体显示,如下所示:
首先,让我们弄清楚这是否真的是一个多对多的情况,因为从你的描述中不清楚这是否是真的
您描述了一个树结构,其中一个实体可以有嵌套的实体,并且这些嵌套的实体可以各自有自己的嵌套实体。但如果一个实体可以同时属于多个父实体,那么这只是一个多对多问题
在这两种情况下,您都将所有实体存储在一个表中。如果要表示嵌套实体的简单树而不具有多个父级,则可以向实体表中添加一个父级实体id列,该列指向父级实体id。顶级实体的标志值(例如,-1)或该列中的NULL。在这种情况下,您只需要再增加一列,而不需要新表来表示关系
如果它确实是一个多对多关系,具有多个父级,那么您将创建一个新的表实体链接,其中包含列parent\u entity\u id和child\u entity\u id。您可以通过插入和删除此表中的行来管理这些关系。是的,但文本描述了一个树结构。这个问题是否应该用核心数据标记?问题涉及表,答案都与关系数据库有关,比如SQL。不完全是这样,因为核心数据数据库设计不同