gpt4 book ai didi

php - 使用复选框时,我应该使用序列化数组还是单独的数据库表?

转载 作者:行者123 更新时间:2023-11-29 05:33:49 25 4
gpt4 key购买 nike

我正在为我工​​作的学校编写一个观课系统。

数据库结构如下:

Database structure

我目前正在为 Observations 表开发输入表单,它的很多字段都需要勾选框。例如,Focus 字段可以是十二个选项中的任意数量; PositiveNegative 字段都可以是近二十个选项中的任意数量。

在上图中,我使用了VARCHAR 来允许序列化数组。

但是,我开始怀疑这是否是最好的下降路径,特别是考虑到我可能想对数据进行一些半复杂的分析,例如针对特定积极属性的 前 5 名员工,例如作为行为(这将涉及计算每个员工在Observations 表中的Positive 字段下的behaviour 属性的数量).

这里有两个问题;

  • 我应该使用额外的表格吗?对于 Focus,我想第一个表有三个字段 - ID(键和自动递增)、Observation_IDFocus_IDFocus_ID 将与另一个名为 focii 的表或仅包含两个字段的表相关联 - Focus_IDTitle。我需要两个用于Focus 的表和三个用于Positive/Development 的表(相同的选项但不同的日志记录)。
  • 如果我使用这些额外的数据库表,当我尝试从 Observations 表(包括所有关联的 focuses)检索信息时,我的 SQL 语句会是什么样子积极发展?

提前致谢

最佳答案

是的,在这种情况下你应该总是正常化。如果您想进行计算甚至修改,那么存储序列化数据简直就是 hell 。 (你打算如何删除第 3 个元素?)

查询示例:

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

这将为您提供属于每个观察的“焦点记录”的数量。

关于php - 使用复选框时,我应该使用序列化数组还是单独的数据库表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12457327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com