[英]when should I use a static array instead of a new table in my database?
[英]When working with tick-boxes, should I use a serialized array or a separate database table?
我正在为我工作的学校写一个课程观察系统。
数据库结构如下所示:
我目前正在为Observations
表开发输入表单,其中很多字段都需要勾选框。 例如, Focus
字段可以是任意数量的十二个选项; Positive
和Negative
字段可以是任意数量的近二十个选项。
在上图中,我使用VARCHAR
来允许serialize
'd数组。
然而,我开始怀疑这是否是最好的路线,特别是考虑到我可能想要对数据进行一些半复杂的分析,例如top 5 staff for a specific positive attribute such as behaviour
(这将涉及到计算每个工作人员在Observations
表中的Positive
字段下的behaviour
属性数量)。
这里有两个问题;
Focus
我想象第一个表有三个字段 - ID
(键和自动增量), Observation_ID
和Focus_ID
。 Focus_ID
将与另一个名为focii
表相关联,或者只有两个字段Focus_ID
和Title
。 我需要两个用于Focus
表和三个用于Positive
/ Development
表(相同的选项但不同的日志记录)。 Observations
表中检索信息时,我的SQL语句会是什么样子,包括所有相关的focuses
, positives
和developments
? 提前致谢,
是的,在这种情况下你应该始终正常化。 如果您想进行计算甚至修改,存储序列化数据是很糟糕的。 (你打算如何删除第三个元素?)
查询示例:
SELECT
o.id,
COUNT(f.id) AS number_of_focusses
FROM
observations o
INNER JOIN focuses f
ON f.observation_id = o.id
GROUP BY id
这将为您提供属于每个观察的“焦点记录”的数量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.