这是我之前关于“Managing employee contracts in a many-to-many relationship?”和this question的问题的后续问题
我有一个可以这样解释的关系:company --< contracts >-- employees
我正在通过 JSON 导入数据。为简单起见,如下所示。
{
"companies" : [
{
"name" : "Company A",
"employees" : [
{
"name" : "Tom",
"contract" : {
"length" : "10",
"salary" : "10000"
}
}
]
}
]
}
问题是,我不确定这是否正确。
在我的模型关系中
contract
坐在company
之间和 employees
而在我上面的代码中,我把它作为一个对象,它作为员工下面的 child 。因此,我的问题是,联结表应该放在 JSON 提要中的什么位置?
它应该作为员工的 parent ,还是可以放在哪里?
我不确定我是否做得对,并且欢迎任何关于构建/布局依赖于联结表的 JSON 提要的最佳方式的帮助/想法。
我知道这可能看起来很愚蠢,但我正在尝试确定处理连接表时的最佳标准。
谢谢。
编辑。
目的/背景
我正在尝试使用 TouchJSON 将 JSON 读入核心数据。抱歉没有早点澄清上下文。更新了标签。
我将 JSON 读入 NSDictionary。如果我开始将对象分开,我不知道如何让 TouchJSON/iOS 在解析/读取数据到内存时理解每个关系的上下文。
最佳答案
在没有外键的情况下完成此操作的唯一方法是复制关系中“许多”实体的一侧。根据您上面的示例,这意味着在整个数据结构中复制员工。
你真的只能像你的关系数据库解决这个问题一样解决这个问题——使用映射表和外键。
{
"companies" : [
{
"id" : 1,
"name" : "Company A"
}
],
"employees" : [
{
"id" : 1,
"name" : "Fred"
}
],
"contracts" : [
{
"id" : 123,
"company_id" : 1,
"employee_id": 1
"length" : 10,
"salary" : 10000
}
]
}
(顺便说一句,数值在 JSON 中是有效的,它们不需要被引用)
那么,问题是在序列化时您是否有这些 key 可用。如果没有,那么您可能需要分配一些,即使是为了 JSON 的目的而临时分配,以实现您的目标。
关于json - 如何处理 JSON 中的多对多关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6206903/