我想创建一个部分动态的表单。多个字段将保存到training_session
表中,标记将保存到tags
表格中,并通过training_tags
连接到培训会话。但是,除了这些必须是动态的字段之外。如果你看这张照片,你会明白这个想法:
field_types
id - self explanatory
type - holds the value int or string
字段
id - same
id_field_type - which type of value does the field hold?
label - could also be "name", I guess. Just to know, which field it actually is
value - the actual value of the field
这类问题的最佳做法和解决方案是什么?
答案 0 :(得分:1)
由于您标记了MySQL,因此您似乎正在寻找关系数据库设计。关系数据库为normalized以消除数据重复。
查看表单,我们可以创建7个数据库表;培训课程,标签,培训课程标签,潜水,培训课程潜水,设备和培训课程设备。你已经提出了两个表。通常,表名是单数。
因此,让我们看一下如何定义训练课程表。
Training Session
----------------
Training Session ID
Training Session Title
Training Session Description
Training Session Time Stamp
Training Session Duration
Training Session ID是一个自动递增的整数或长整数,也是表的主键或聚类键。其余的属性应该是不言自明的。
我们将看到的下一个表格是Tag。
Tag
---
Tag ID
Tag Name
Tag Description
...
与Training Session表一样,Tag ID是此表的主键。标签表为每个可以应用于培训会话的可能标记保留一行。
现在,我们有培训课程,我们有标签。下一步是将培训课程与适当的标签相关联。为此,我们将创建一个联结表,训练会话标记。
Training Session Tag
--------------------
Training Session ID
Tag ID
...
此表的主键是Training Session ID和Tag ID的组合。这为您提供了特定培训课程的标签。如果您想要特定标签的培训课程,则需要额外的唯一索引(标签ID,培训课程ID)。
我认为您可以从这里找出潜水和装备表,以及训练课程潜水和训练课程设备联结表。
答案 1 :(得分:0)
您可以为此应用程序设置sql和nosql。主要结构使用SQL关系数据库,nosql用于变量和动态数据