我正在为我工作的学校编写一个课程观察系统。
数据库结构如下所示:

我目前正在为表格开发输入表单,其中Observations很多字段都需要勾选框。例如,该Focus字段可以是任意数量的十二个选项;PositiveandNegative字段可以是任意数量的近二十个选项。
在上图中,我曾经VARCHAR允许一个serialize'd 数组。
但是,我开始怀疑这是否是最好的下降路线,特别是考虑到我可能想要对数据进行一些半复杂的分析,例如top 5 staff for a specific positive attribute such as behaviour(这将涉及计算behaviour每个员工所拥有的属性数量表中的Positive字段Observations)。
这里有两个问题;
- 我应该使用额外的桌子吗?因为
Focus我想第一个表有三个字段 -ID(键和自动增量)Observation_ID和Focus_ID. 将Focus_ID与另一个名为的表focii或仅具有两个字段的表相关联 -Focus_ID和Title. 我需要两个表Focus和三个表Positive/Development(相同的选项但不同的日志记录)。 - 如果我使用这些额外的数据库表,我的 SQL 语句在尝试从
Observations表中检索信息时会是什么样子,包括所有关联的focuses,positives和developments?
提前致谢,