有一个带有亲戚的对象,它们按类型相互关联:Parent,Child,Brother / Sister,Equal
{
"parent": "Bill",
"parent": "Anna",
"children": [
{
"parent": "Mark",
"parent": "Sara",
"children": [
{ "parent": "Sofia" },
{ "parent": "Patric" },
{ "parent": "Marta" }
]}
]}
数据库有表:
Peoples (id, name);
References (ENUM(parent, children, sibling), тут видимо надо будет дополнить);
如何设置它们之间的家庭关系,使其看起来像这样: 如果我对 Anna 进行数据库查询,我得到:
"sibling": Bill,
"children": Mark,
"children": Sara,
如果我对 Marta 进行数据库查询,我会得到:
"parent": Mark,
"parent": Sara,
"sibling": Sofia,
"sibling": Patric,
"sibling": Marta,
问题不在于如何提出要求,而在于如何比较他们之间的关系,分配相对于彼此的角色。
例如,我们获取 Bill 和 Anna,查看它们在同一级别上的含义 Bill for Anna -> sibling 反之亦然,并将这些关系写入数据库。
例如,我们得到 Mark 和 Anna,我们看到 Mark 比 Anna 低一个级别,所以 Anna 对 Mark 有一个级别 -> parent,而 Mark 对 Anna 有一个级别 -> children 并将这些关系写入数据库。
附言 我们不会挑剔家庭关系的不准确之处。
我认为有可能想出一些非常 hacky 的东西,以便关系的类型由表实现,但这将是一个非常糟糕的决定。
你只需要一张桌子:
人物(id、姓名、father_id、mother_id)
而整个获取亲属的逻辑需要放到代码中。