家庭成员数据模型
Data model for family members
我不是数据库专家,但是我有一个业务案例,我想存储一个拥有 20,000 多位成员的大家庭的相关信息,从族长开始插入出生的新成员,数据涉及他们的姓名、出生日期、职业、死亡数据等。
这种情况的最佳数据模型是什么?
在进行研究后,我对层次数据模型和图形数据模型有点困惑,那么,它们中的任何一个都适合这个问题还是另一个解决方案更好?
这个问题完全属于图形数据库的范畴,而且很容易实现。在 InfiniteGraph 中,数据模型如下所示:
UPDATE SCHEMA {
CREATE CLASS Person {
name : String,
dateOfBirth : DateTime,
dateOfDeath : DateTime,
education : List {
Element: Reference { EdgeClass: Education, EdgeAttribute School },
CollectionTypeName: TreeListOfReference
},
residence : List {
Element: Reference { EdgeClass: Residence, EdgeAttribute Address },
CollectionTypeName: TreeListOfReference
},
birthMother : Reference { referenced: Person },
birthFather : Reference { referenced: Person }
}
CREATE CLASS Education {
startDate : Date,
endDate : Date,
certificate : String,
school : Reference { Referenced: School }
}
CREATE CLASS School {
name : String
}
CREATE CLASS Residence {
startDate : Date,
endDate : Date,
address : Reference { Referenced: Address },
resident : Reference { Referenced: Person }
}
CREATE CLASS GeoPosition {
latitude : Float,
latitude : Float
}
CREATE CLASS Address SUPERCLASS GeoPosition {
street1 : String,
street2 : String,
city : String,
state : String,
country : String,
postalCode : String,
resident : List {
Element: Reference { EdgeClass: Residence, EdgeAttribute Person },
CollectionTypeName: TreeListOfReference
}
}
}
InfiniteGraph 是一个可大规模扩展的面向对象图形数据库。我已经使用该产品解决了很多像您这样的问题。
我不是数据库专家,但是我有一个业务案例,我想存储一个拥有 20,000 多位成员的大家庭的相关信息,从族长开始插入出生的新成员,数据涉及他们的姓名、出生日期、职业、死亡数据等。
这种情况的最佳数据模型是什么?
在进行研究后,我对层次数据模型和图形数据模型有点困惑,那么,它们中的任何一个都适合这个问题还是另一个解决方案更好?
这个问题完全属于图形数据库的范畴,而且很容易实现。在 InfiniteGraph 中,数据模型如下所示:
UPDATE SCHEMA {
CREATE CLASS Person {
name : String,
dateOfBirth : DateTime,
dateOfDeath : DateTime,
education : List {
Element: Reference { EdgeClass: Education, EdgeAttribute School },
CollectionTypeName: TreeListOfReference
},
residence : List {
Element: Reference { EdgeClass: Residence, EdgeAttribute Address },
CollectionTypeName: TreeListOfReference
},
birthMother : Reference { referenced: Person },
birthFather : Reference { referenced: Person }
}
CREATE CLASS Education {
startDate : Date,
endDate : Date,
certificate : String,
school : Reference { Referenced: School }
}
CREATE CLASS School {
name : String
}
CREATE CLASS Residence {
startDate : Date,
endDate : Date,
address : Reference { Referenced: Address },
resident : Reference { Referenced: Person }
}
CREATE CLASS GeoPosition {
latitude : Float,
latitude : Float
}
CREATE CLASS Address SUPERCLASS GeoPosition {
street1 : String,
street2 : String,
city : String,
state : String,
country : String,
postalCode : String,
resident : List {
Element: Reference { EdgeClass: Residence, EdgeAttribute Person },
CollectionTypeName: TreeListOfReference
}
}
}
InfiniteGraph 是一个可大规模扩展的面向对象图形数据库。我已经使用该产品解决了很多像您这样的问题。