LibreOffice 作业。解决冗余。 "translating" 两个外键(其中一个都不存在)合二为一(超类型)
LibreOffice homework. Resolving redundancy. "translating" two foreign keys (either of which is absent) into one (supertype)
我将 LibreOffice Base 与嵌入式 HSQLDB 用于教育目的。
主题领域是 MOOC。我有以下实体:
学生、教师、用户(超类)、课程、论坛、问题、进度日志。
对于Course我想区分是Student还是Teacher,Students study many courses (n:m) and Teachers teach many (n:m);但对于问题,就我而言,我不需要任何区分 - 一个用户(学生 或 教师)可以在论坛 (1:n).
这是我关系的照片 Table。
请忽略 Student/Teacher 属性的冗余,我被要求至少有 6 个实体。
显然,User 不能同时将 ID_Student 和 ID_Teacher 设为非空,其中任何一个都应该是 Nan。
如何解决 free space (Nan-s) 的冗余问题,还是应该保持原样?
或者问题出在我对主题领域的特殊定义上?
我本可以在 Question 中创建 ID_user 属性,该属性本来可以同时存储学生 (1:n) 和教师 (1:n) ID,前提是他们的 ID 不会冲突。我不确定它是否正确,所以创建了单独的用户实体。
尝试使用 REFERENCES 关键字时遇到错误:
意外标记:语句 [create table students ( student_id int primary key references]
中的 REFERENCES
还有别的办法吗?我应该下载任何额外的东西以使 LibreOffice 正确执行吗?
外键是错误的方式。
用户是超类型,所以学生和老师应该有外键:
create table users ( user_id int primary key, ... );
create table students ( student_id int primary key references users ( user_id ), ... );
create table users ( teacher_id int primary key references users ( user_id ), ... );
我将 LibreOffice Base 与嵌入式 HSQLDB 用于教育目的。
主题领域是 MOOC。我有以下实体: 学生、教师、用户(超类)、课程、论坛、问题、进度日志。
对于Course我想区分是Student还是Teacher,Students study many courses (n:m) and Teachers teach many (n:m);但对于问题,就我而言,我不需要任何区分 - 一个用户(学生 或 教师)可以在论坛 (1:n).
这是我关系的照片 Table。
请忽略 Student/Teacher 属性的冗余,我被要求至少有 6 个实体。
显然,User 不能同时将 ID_Student 和 ID_Teacher 设为非空,其中任何一个都应该是 Nan。
如何解决 free space (Nan-s) 的冗余问题,还是应该保持原样?
或者问题出在我对主题领域的特殊定义上?
我本可以在 Question 中创建 ID_user 属性,该属性本来可以同时存储学生 (1:n) 和教师 (1:n) ID,前提是他们的 ID 不会冲突。我不确定它是否正确,所以创建了单独的用户实体。
尝试使用 REFERENCES 关键字时遇到错误: 意外标记:语句 [create table students ( student_id int primary key references]
中的 REFERENCES还有别的办法吗?我应该下载任何额外的东西以使 LibreOffice 正确执行吗?
外键是错误的方式。
用户是超类型,所以学生和老师应该有外键:
create table users ( user_id int primary key, ... );
create table students ( student_id int primary key references users ( user_id ), ... );
create table users ( teacher_id int primary key references users ( user_id ), ... );