我将react-admin
和hasura
用作Postgres的API。
我需要基本上都是人但目的不同的不同实体。例如。一个学生和一个老师。我认为,鉴于相似的属性,最好是拥有一个可以共享共同特征的人员表,然后为特定属性使用一个单独的表。例如,像这样的表:
persons {
id,
first_name,
last_name,
birthday
...
}
students {
id,
person_id,
date_enrolled
...
}
teachers {
id,
person_id,
sallary
...
}
该模式遇到的问题是,要创建一个学生,必须首先为其创建一个人。因此,在react-admin中,我必须先向用户提供一个用于创建人的表格,然后再向用户提供一个用于基于该人创建学生的表格。
我认为这不是理想的选择,尽管为两个students
和teachers
创建单独的表可能会更好,尽管某些字段(first_name,last_name,birthday ...)会在两个表中重复。
这个问题并不是真正针对react-admin
的,而是更多有关类似数据库模型设计的一般建议,因此不建议您提出任何技巧:)。
答案 0 :(得分:1)
此要求非常适合PostgreSQL的“table inheritance” feature。
您可以将student
和teacher
建模为person
的继承子代。然后一切都应按您希望的那样工作。查询person
将从两个表中返回结果。