php - 在 SQL 表中存储包含详细信息的项目数组的最佳方法

标签 php mysql sql database database-design

我正在尝试找出在 SQL 表中存储包含详细信息的项目数组的最佳方法。 我有一个用户帐户数据库。用户有多个输入字段来输入多个详细信息,例如:

___ : ______ +(get more multiple field field)

用户可以输入任何详细信息,例如

Output1 : Output2
Mobile : 2455...
email : sdf
city : dfs
Other : sf

平均而言,用户会使用大约 20 个选项

由于我不知道这些字段(手机、电子邮件等),因此我必须将 Output1 字段与答案字段 (output2) 一起存储。

我将拥有非常庞大的用户群,因此我认为为每个用户创建单独的表并不是更好。

有什么方法可以在有限或单列中存储和获取详细信息。

最佳答案

由于属性名和属性值都来自用户,所以采用典型的三表模型来保存多对多关系有点大材小用。

我只是将用户及其属性保存在两个单独的表中:

+---------+-----------+--------------+
| user_id | user_name | user_email   |
+---------+-----------+--------------+
| 1001    | John      | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a4cecbcccae4c0cbc18ac7cbc9" rel="noreferrer noopener nofollow">[email protected]</a> |
+---------+-----------+--------------+
| 1002    | Tim       | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2054494d60444f450e434f4d" rel="noreferrer noopener nofollow">[email protected]</a>  |
+---------+-----------+--------------+

+----------+-----------+--------------+--------------+
| field_id | user_id   | field_name   | field_value  |
+----------+-----------+--------------+--------------+  
| 1        | 1001      | Option1      | Option2      |
+----------+-----------+--------------+--------------+
| 2        | 1001      | Mobile       | 2345656565   |
+----------+-----------+--------------+--------------+
| 3        | 1001      | city         | dfs          |
+----------+-----------+--------------+--------------+
| 4        | 1002      | Other        | something    |
+----------+-----------+--------------+--------------+

可能还有一些用于排序、标记等的附加列。

关于php - 在 SQL 表中存储包含详细信息的项目数组的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20599962/

相关文章:

mysql - 简单的 MySQL if 查询语法

php - 使用 Eclipse 创建和调试 PHP 代码

sql - MySQL COUNT 无法统计

sql - 事务如何在 SQL Server 中使用多个 VALUES 的单个 INSERT 中工作

mysql - 将自动增量值复制到插入时的另一列?

mysql - SQL - 与 INSERT INTO...SELECT 和 COUNT(*) 混淆?

sql - SQL 中按 row_number 排序

php - 组合Mysql子查询

php - 从数据库中选择时的隐藏字段更改

PHP - spl_autoload 和命名空间 - 不适用于大写字母