所以我是设计数据库的新手,我试图代表一个系统的数据库图表,学生可以对教授和学校进行评分。学生和教授也可以让他们的帐户登录。 这是一个正确的演示文稿,我是否遗漏了实体关系中的任何内容? 而且我不确定我是否还需要使用任何继承...
答案 0 :(得分:1)
列举的列是糟糕设计的良好指示
您需要一个额外的值表
完成后,无需将学校评级与教授评级分开 -
使用一般评级表,其中包含评估者的ID(在您的案例中始终是学生)以及评级元素的ID和类型(学校/教授)。
我认为没有理由将学生和教授放在不同的表格中 可以将其视为具有角色属性的人员表 如果一个人可以同时使用,而不是角色属性,则添加2个标志列 - is_student和is_professor。
答案 1 :(得分:0)
看起来没问题但是你确定SchoolRating和Student之间的关系应该是多对多吗?不评分只有一名学生(评分的学生)?
另外,我不清楚为什么SchoolRating和ProfessorRating有如此多的价值属性。
答案 2 :(得分:0)
初步审核:看起来很稳固,可能需要另一张桌子或扩展SchoolRating。
在设计时,要关注对象的完成情况,以及他们回答的事实问题。
SchoolRating有代表评论的价值观,还是一定数量教师的聚合?这些评论如何通过教授评级得到纠正......或者他们没有关系? (他们显然在学校里做过......所以你的设计如何实现这一目标?)
为什么学生与SchoolRating有直接关系?这个表不应该是教授和/或某些评级系统得分的真实FACT表吗?
为什么学生没有多个教师或多个评论?如果学生没有上课但要留下评论......你的结构如何纠正同一个学生的新评论?
最后,不要在关系设计中使用继承理论。它完全与关系集理论不相容,越早学会从系统中清除它就越好。
考虑DIMENSIONS和FACTS的术语。考虑基数,或者您计划如何处理缓慢变化的维度,数据库列是否会提供效率。
当您质疑设计时,可能应该咨询Star-Schema,Snowflake设计,耐用钥匙,自然键等概念。
在一天结束时,您的表格可以回答哪些问题以及系统如何访问这些表格对于与标准化相关的设计方法同样重要(如果不是更多)。