数据库
首页 > 数据库> > 我如何构造数据库,以使构成相同“元素”的两个表链接到另一个表?

我如何构造数据库,以使构成相同“元素”的两个表链接到另一个表?

作者:互联网

我阅读了有关数据库结构和规范化的内容,并决定在我学习的东西后面重塑数据库,以减少冗余.

我有可以学习的不同类型的条目.间隙文本/完形填空测试(一个文本,多个间隙)和简单的已知-未知(一个问题,一个答案)类型.

现在我有点咸菜:

>差距需要用户表中的列与问答类型完全相同
>,但它们所需的列少于问答类型(所有信息都在clozetests表中)
>我希望有一个“魔术”外键,它既可以指向差距,也可以指向条件表.当然,它们的ID会重叠.我不喜欢在user_terms中同时使用term_id和gap_id,但这似乎很模糊(但是在谷歌搜索了一段时间后,我不知道这个泡菜的名字是最优雅的).
>我不希望user_terms与user_terms类似,因为当涉及到user_terms_answers表时,我将处于同一位置.

我贴上了我的模式的纸板切口拼贴.我没有删除与该问题无关的内容,但是如果可以解决任何人的困惑,我可以这样做.我认为它看起来已经很整洁了.至少比我的思想观念更整洁.
我是否说任何帮助将不胜感激?答题者可能会因为自己的智慧而被人们迷上.

如果您关心的是背景故事,则该问题与问题无关.
在重塑之前,我将它们全部放在一张表中(因为我匆忙添加了空白文本),因此空白文本是“正常”项目,没有答案,而空白部分是没有问题的项目.该应用程序将它们链接在一起.

编辑

在咳出一些有用的帖子后,我添加了一个答案.我还没有100%满意.我尝试不时地为该设置编写针对常见查询的视图,我觉得我必须为数据库草皮拉应用程序逻辑.

解决方法:

如评论中所述,不了解整个故事就很难回答.因此,这里有一个故事和一个可以匹配的模型.看看您是否可以根据您的示例进行调整.

(外国)语言学校提供几种语言水平的考试.学校为每种语言的每个级别维护许多预制测试(LangLevelTestNo).

每个测试包含几个(许多)问题.每个问题可以很简单,也可以是封闭文本类型.为每个简单问题存储正确答案.为每个封闭文本问题的每个空白存储正确的术语.

学生可以参加某种语言水平的考试,并被提供一种预制考试.对于每个学生考试,将维护考试表格,该表格存储学生对考试中每个问题的答案.像问题一样,答案可能是简单的封闭文本类型.

标签:database-design,foreign-keys,sql,mysql,database
来源: https://codeday.me/bug/20191208/2093908.html