我正在使用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
并不是特别具体,但更多关于类似数据库模型设计的一般建议,所以任何提示都非常受欢迎:)。
这个要求非常适合PostgreSQL的“table inheritance” feature。
您可以将student
和teacher
建模为person
的继承子。然后一切都应该按你的意愿工作。查询person
将返回两个表的结果。