Core data 如何设计一个具有多2多关系的数据库

Core data 如何设计一个具有多2多关系的数据库,core-data,relational-database,Core Data,Relational Database,我设计数据库已经有很长一段时间了,我只是想确保我的设计是正确的 我有一个实体,它有一个名称和描述 该实体可以有许多类型为Entity的子实体 所以它就像一个递归关系。现在确定如何正确设计数据库 我要创建第二个表还是什么 更新:一个实体只能有一个父实体或没有父实体。在关系数据库中,您可以使用一个,故事结束 entity ====== id name description xref_entity_subentities ======================= parent_entity_

我设计数据库已经有很长一段时间了,我只是想确保我的设计是正确的

我有一个实体,它有一个名称和描述

该实体可以有许多类型为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。不完全是这样,因为核心数据数据库设计不同