在数据库中存储动态字段时的最佳实践

Posted

技术标签:

【中文标题】在数据库中存储动态字段时的最佳实践【英文标题】:Best Practice When Storing Dynamic Fields in Database 【发布时间】:2019-01-21 09:30:52 【问题描述】:

我有一个带有输入字段的表单,可以根据用户的需要重复多次。例如。 - 教育资格字段,用户可以只输入 1 个教育资格或添加 10 个,将这些存储在数据库中的最佳方式是什么。我知道我可以在 php 中对它们进行序列化,或者将在这些字段中输入的数据转换为 JSON,然后将其存储。但我知道这不是理想或最佳实践。谁能指导我找到最好的方法?

"Dyanamic Form Input Example"

【问题讨论】:

你想添加更多的学位和学院/学院字段吗? 在前端单击添加更多时的更多字段将通过javascript添加,我知道该怎么做。但是在后端,在 mysql 数据库中,一旦提交表单,存储该数据的最佳方式是什么? 您还必须考虑如何访问“更多”。 JSON 很笨拙;表格中的更多行更容易。 【参考方案1】:

我假设您正在使用表 PersonDetails 来存储一个人的详细信息。不要在此表中存储教育详细信息,因为存在一对多关系(一个人可以有许多教育详细信息行)。创建另一个表 EducationQualification 以存储每个教育资格并使用“personId”链接两个表。此外,您还可以在“EducationQualification”表的“personId”列中创建外键约束。

create table PersonDetails(personId integer primary key, name varchar(30));
insert into PersonDetails(personId,name) values(1, "praveen");
insert into PersonDetails values(2, 'naga');
insert into PersonDetails values(3, 'surya');

create table EducationQualification(QualificationID integer primary key, QualificationName varchar(30), personId integer);
insert into EducationQualification values (1, 'schooling', 1);
insert into EducationQualification values (2, 'degree', 1);
insert into EducationQualification values (3, 'postgraduate', 2);
insert into EducationQualification values (4, 'graduate', 2);

【讨论】:

【参考方案2】:

您好,创建一个表 user 和一个表 user_qualificatin,user 表中的 useId 是 user_qualification 表中的外键,例如,您可以将此 id 设置为自动递增,并在添加新资格时递增。

【讨论】:

以上是关于在数据库中存储动态字段时的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

ReactJS 最佳实践,存储在隐藏字段、状态、本地存储中?

是否有最佳实践/连贯的方法来更新包含哈希键值存储的数据库字段?

Metal 最佳实践:三重缓冲 – 纹理?

Titanium - 在 Alloy 中动态创建和添加 UI 对象的最佳实践是啥

存储 svg 图标的最佳实践?

使用“SQlDataAdapter”时的最佳实践