普通人桌上有教师和学生的特定桌子或单独的桌子?

问题描述 投票:2回答:1

我正在使用react-adminhasura作为Postgres的API。

我需要不同的实体,这些实体基本上都是一个人但具有不同的目的。例如。学生和老师。我在想,鉴于类似的属性,最好有一个人员表,它将共享共同的功能,然后为特定的属性设置一个单独的表。例如,像这样的表:

persons {
    id,
    first_name,
    last_name,
    birthday
    ...
}

students {
    id,
    person_id,
    date_enrolled
    ...
}

teachers {
    id,
    person_id,
    sallary
    ...
}

我遇到的这个模式的问题是,为了创建一个学生,必须首先创建它的人。因此,在react-admin中,我必须首先向用户提供用于创建人员的表单,然后使用另一个表单来创建基于该人员的学生。

我想这不太理想,也许最好为studentsteachers设置单独的表,尽管在两个表中都会重复一些字段(first_name,last_name,birthday ...)。

这个问题对于react-admin并不是特别具体,但更多关于类似数据库模型设计的一般建议,所以任何提示都非常受欢迎:)。

postgresql admin-on-rest react-admin hasura
1个回答
1
投票

这个要求非常适合PostgreSQL的“table inheritance” feature

您可以将studentteacher建模为person的继承子。然后一切都应该按你的意愿工作。查询person将返回两个表的结果。

© www.soinside.com 2019 - 2024. All rights reserved.