Mysql 数据库结构建议
我被困在数据库设计中。 我必须显示HTML表单字段,并指定对于如此多的表单,哪些字段是必填字段或不必填字段,哪些字段是可见字段或不可见字段 我必须把该选项配置在管理面板。 因此,管理员选择表单和字段,并检查它是否为必填项或不可见项,以及是否为该特定用户设置了配置 注意:-仅当用户更改配置时,否则它们必须来自默认配置 表单表的数据库设计 字段表 表单_字段关系表 所以,从这三个表中,我可以得到所有提供表单数据的数据,也包括哪些字段是必需的和可见的Mysql 数据库结构建议,mysql,database-design,Mysql,Database Design,我被困在数据库设计中。 我必须显示HTML表单字段,并指定对于如此多的表单,哪些字段是必填字段或不必填字段,哪些字段是可见字段或不可见字段 我必须把该选项配置在管理面板。 因此,管理员选择表单和字段,并检查它是否为必填项或不可见项,以及是否为该特定用户设置了配置 注意:-仅当用户更改配置时,否则它们必须来自默认配置 表单表的数据库设计 字段表 表单_字段关系表 所以,从这三个表中,我可以得到所有提供表单数据的数据,也包括哪些字段是必需的和可见的 但是,,我陷入了这样的逻辑:表单字段只有在用户更改
但是,,我陷入了这样的逻辑:表单字段只有在用户更改配置时才会更改设置覆盖,否则它们必须来自默认配置。如果您希望默认值不是强制性的或可见的,您可以将默认值设置为您使用的任何数据库中的默认值,因此如果useradmin没有指定任何内容
默认设置为用户id=0或-1,并且
用户id>0表示实际用户。我只需将这两个标志添加到字段表中。因此,对于每个字段,您都有直接的默认值,用户可以在user_fields表中使用自己的条目覆盖这些值 字段表
哦,太好了。谢谢你的提问。我从你的回答中得到了答案。我们可以将所有表单元素存储为一个完整的json字符串吗?从数据库中获取数据后,我们可以在客户端对json数组进行一些处理。将所有数据存储在单个json数组/字符串中是否是一种好的做法?json是一种NoSQL方法。非常适合(比如)可选数据。如果您在产品数据库中存储非常不同的项目,其中衬衫有或没有衣领或口袋,而洗衣机有容量和旋转速度,并且您不想创建复杂的数据库结构来对此进行建模,那么您可以将其存储为XML或JSON。但是使用简单的表单和字段,您将获得什么?这种结构并不复杂,数据很容易在纯关系模型中查询。所以,是的,可以使用JSON,但我不推荐它,因为我觉得它在这里没有任何意义。谢谢你的建议。我将使用您建议的数据库结构。再次感谢您的帮助。是的,我明白了,但在您的解决方案中,我们无法计算出该行的日志,因为我需要同时更改默认核心配置。
form_id - int(11)
form_name - Varchar(255)
screen_ame - Varchar(255)
field_id - int(11)
field_name - Varchar(255)
form_id - int(11)
field_id - int(11)
user_id - int(11)
mandatory - enum('1', '0')
visible - enum('1', '0')
field_id - int
field_name - varchar(255)
form_id - int
is_mandatory - bool
is_visible - bool
field_id - int
user_id - int
is_mandatory - bool
is_visible - bool
select
f.field_id,
f.field_name,
coalesce(uf.is_mandatory, f.is_mandatory) as is_mandatory,
coalesce(uf.is_visible, f.is_visible) as is_visible
from fields f
left join user_fields uf on uf.field_id = f.field_id and uf.user_id = 321
where f.form_id = 123;