Postgresql 普通人表,教师和学生专用表还是单独的表?
我正在使用Postgresql 普通人表,教师和学生专用表还是单独的表?,postgresql,admin-on-rest,react-admin,hasura,Postgresql,Admin On Rest,React Admin,Hasura,我正在使用react admin和hasura作为Postgres的API 我需要不同的实体,它们基本上都是一个人,但目的不同。一个学生和一个老师。我认为,考虑到类似的属性,最好有一个共享公共特性的person表,然后有一个针对特定属性的单独表。例如,类似这样的表: persons { id, first_name, last_name, birthday ... } students { id, person_id, date_
react admin
和hasura
作为Postgres的API
我需要不同的实体,它们基本上都是一个人,但目的不同。一个学生和一个老师。我认为,考虑到类似的属性,最好有一个共享公共特性的person表,然后有一个针对特定属性的单独表。例如,类似这样的表:
persons {
id,
first_name,
last_name,
birthday
...
}
students {
id,
person_id,
date_enrolled
...
}
teachers {
id,
person_id,
sallary
...
}
我在该模式中遇到的问题是,为了创建一个学生,必须首先创建该学生的人。因此,在react admin中,我必须首先向用户提供一个表单来创建一个人,然后再提供另一个表单来创建基于此人的学生
我想这并不理想,也许最好为学生
和教师
设置单独的表格,尽管两个表格中都会重复一些字段(名字、姓氏、生日…)
这个问题并不是针对react admin的,但更多的是关于类似db模型设计的一般建议,所以任何提示都非常受欢迎:)。这个要求非常适合PostgreSQL
您可以将
学生
和教师
建模为人
的继承子代。那么一切都应该按照你的意愿进行。查询person
将返回两个表的结果。我不熟悉您使用的工具,但您能否创建一个包含两个表所需所有数据的表单?在内部,软件将首先插入个人数据,然后再插入学生/教师数据…我可以这样做,当然,但使用react-admin似乎不太容易。太好了,谢谢。不知道表继承。我正在阅读文档,不确定插入是否有效。。。