Таблица обычных людей с конкретными таблицами для учителей и студентов или отдельные таблицы? - PullRequest
0 голосов
/ 28 февраля 2019

Я использую react-admin с hasura в качестве API для Postgres.

Мне нужны разные сущности, которые все в основном люди, но с разными целями.Например.студент и учитель.Я думаю, учитывая аналогичные атрибуты, было бы хорошо иметь личную таблицу, которая будет иметь общие характеристики, а затем иметь отдельные таблицы для определенных атрибутов.Например, такие таблицы:

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

students {
    id,
    person_id,
    date_enrolled
    ...
}

teachers {
    id,
    person_id,
    sallary
    ...
}

Проблема, с которой я сталкиваюсь в этой схеме, заключается в том, что для создания ученика сначала нужно создать человека, которому он нужен.Так что в реагирующем администраторе мне нужно будет сначала предоставить пользователю форму для создания человека, а затем другую форму для создания студента на основе этого человека.

Я думаю, что это не идеально, и, возможно, было бы лучшеиметь отдельные таблицы для students и teachers, хотя некоторые поля (имя, фамилия, день рождения ...) будут повторяться в обеих таблицах.

Этот вопрос не является специфическим для react-admin, но болееобщих советов по подобию модели БД, поэтому любые советы приветствуются:).

1 Ответ

0 голосов
/ 28 февраля 2019

Это требование идеально подходит для функции "наследования таблиц" PostgreSQL .

. Вы можете смоделировать student и teacher в качестве потомков наследования person.Тогда все должно работать как хочешь.Запрос person вернет результаты из обеих таблиц.

...