已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。
3天前关闭。
Improve this question
这个问题寻求关系数据库的观点和通用方法。
我从我的服务器得到如下响应:
"groups":[
{
"id":"ea369ff6-cbc3-44b6-8eb6-b79e8db0145c",
"ingredients":[
{
"id":"f5126c1f-11a7-5ce5-a717-c6c86483058e",
"name":"First",
"position":1
},
{
"id":"dfcf217e-53dd-b06c-9f2b-084f8180ba1a",
"name":"Second",
"position":2
}
]
},
{
"id":"0fa91ada-1fe4-4d6d-b772-caae44758848",
"position":2,
"ingredients":[
{
"id":"9cacade2-92fe-bd5c-c84c-7c5fe36c8a5e",
"name":"Third",
"position":1
},
{
"id":"f5126c1f-11a7-5ce5-a717-c6c86483058e",
"name":"First",
"position":2
}
]
}
]
- 这里有两个
groups
,每个都有唯一的id。 - 每个
group
都有一些ingredients
,它们是相同的类型 - 每个组都有名称为
First
的成分。此成分在每个组中都有相同的id
,这意味着它是同一个对象。
但是
第一种成分具有不同的position
值,具体取决于其位置。
问题是
它们应该有相同的id
,而它们不相同吗?什么是解决这个问题的好方法?
“id”是否意味着这对于相同类型的对象是唯一的?如果我需要将其保存到设备上的核心数据或其他持久存储中,该怎么办?
1条答案
按热度按时间bxjv4tth1#
从
Group
到Ingredient
存在多对多关系:每个Group
可以有多个Ingredients
,每个Ingredient
可以属于多个Groups
。但是您还有一个附加属性position
,它依赖于Group
和Ingredient
:它是 * 关系 * 的属性,而不是任一实体。要在CoreData中对此进行建模,您必须添加第三个实体。我们将其命名为
ListItem
。ListItem
将具有position
属性,并且与Group
和Ingredient
具有一对一关系。相反的关系将是多对关系:每个Group
可以具有多个ListItems
,并且每个Ingredient
可以属于多个ListItems
:解析服务器中的数据时,需要为每个组
id
创建一个唯一的Group
对象,为每个成分id
创建一个唯一的Ingredient
,然后创建一个ListItem
,分配正确的位置,并设置其与相关Group
对象和Ingredient
对象的关系。