MySQL数据库设计 - 清单/测验应用程序
-
10-10-2019 - |
题
我目前正在“学习”代码签名人,PHP和MySQL时,我尝试创建“清单”类型的网站,访问者注册,创建一个项目并被询问一个问题列表,他们必须在其中输入某些字段,
我有点卡在我的mysql db-design上...(实际上完全卡住了)
归结为...
1个项目可以具有三种类型之一。 “ A/B/C型”
类型A。 有20个问题
类型b = A类 + 15个问题
类型c = B + 15个问题...
因此,基本上我想可以轻松地说,问题A是 类型A。 和/或 类型b 但 不是c.
现在,我不知道我在做什么是正确的,但是我基本上是在制作两个桌子,然后在它们之间建立了“许多人”之间的关系(我想?) n:m在MySQL Workbench中
ProjectType
id
ProjectTypeName
Questions
ID
Title etc...
ProjectType_has_Questions
ProjectType_id
Questions_id
同样,每个问题“可以,不得必须”都有3个结果(当前事实)和3个校正(结果改进)。
我不知道这对这里的任何人都有任何意义,当然,因为地狱让我感到困惑: - /
有什么想法吗?
PS:我试图附上图像,但是看到这是我第一次使用该网站,因此不允许使用。
解决方案
我会回应我在这里理解的内容。我在您的问题中提到了其他一些问题。
如果您的项目类型始终汇总 - 也就是说,C始终是B型的超集,它始终是A型的超集 - 那么,对于问题,您只能指定最大的项目,即将包括该特定问题在。例如,如果一个问题将出现在类型A和B中,则将问题指定为类型B。如果将其出现在所有三种类型中,则将其指定为类型C。
不过,当您这样做时,您正在承诺自己。这样做的一种更灵活的方法是拥有一个链接表,其中包括问题ID和项目类型ID。每个问题都可以在此表中有一个或多个条目。
不隶属于 StackOverflow