Я использую LibreOffice Base со встроенным HSQLDB для образовательных целей.
Предметная область - MOOC. У меня есть следующие лица: студент, учитель, пользователь (суперкласс), курс, форум, вопрос, журнал прогресса.
Для курса я хочу выделить guish, будь то студент или учитель, студенты изучите много курсов (n: m), и Учителя преподают много (n: m); но для Вопроса, в моем случае, мне не нужно никаких различий - один пользователь (либо ученик ИЛИ учитель) может задать много вопросов на форуме (1: n).
Вот картина моей таблицы отношений.
Пожалуйста, не обращайте внимания на предполагаемую избыточность атрибутов Ученик / Учитель, я должен был иметь как минимум 6 объектов.
Очевидно, что пользователь не может иметь оба ID_Student и ID_Teacher как непустые, любой из них должен быть Nan.
Как мне решить избыточность свободного пространства (Nan-s), или я должен оставить это как есть?
Или Может быть, проблема заключается в моем особом определении предметной области?
Я мог бы создать атрибут ID_user в Вопросе, который бы хранил идентификаторы ученика (1: n) и учителя (1: n), учитывая, что их идентификаторы не сталкиваются. Я был не уверен, было ли это правильно, поэтому создал отдельную сущность User.
При попытке использовать ключевое слово REFERENCES я сталкиваюсь с ошибкой: Неожиданный токен: REFERENCES в операторе [создать таблицу студентов (student_id int ссылки на первичный ключ) ]
Есть ли другой способ? Нужно ли загружать какие-либо дополнения, чтобы LibreOffice правильно их выполнял?