mysql - 将 json 存储在字段中还是使用单独的表进行规范化?

标签 mysql database json normalization

将 json 数据存储在 affiliate_phone_id 字段中或使用单独的表对其进行规范化更好?

例如:

mysql> select * from phone;
+----+----------+-------------+-------------------------------------------------------------------------------------------+
| id | name     | description | affiliate_phone_id                                                                        |
+----+----------+-------------+-------------------------------------------------------------------------------------------+
| 32 | iPhone 5 | faster CPU  | [{"affiliate_id":2,"affiliate_phone_id":123},{"affiliate_id":3,"affiliate_phone_id":222}] |
+----+----------+-------------+-------------------------------------------------------------------------------------------+

以上数据显示,每个零售商都有自己的电话号码,例如:

公司 2 (affiliate_id = 2),电话 ID 为 123

或者最好做这样的单独的表:

mysql> select * from phone_affiliate;
+----+----------+--------------+--------------------+
| id | phone_id | affiliate_id | affiliate_phone_id |
+----+----------+--------------+--------------------+
|  1 |       32 |            2 | 123                |
|  2 |       32 |            3 | 222                |
+----+----------+--------------+--------------------+

或者还有其他更好的建议吗?

最佳答案

标准化表。

也许,您不需要phone_affiliate 表中的“id”字段。您可以设置主键(phone_id,affiliate_id)或(phone_id,affiliate_id,affiliate_phone_id),这取决于数据之间的关系。

mysql> select * from phone_affiliate;
+----------+--------------+--------------------+
| phone_id | affiliate_id | affiliate_phone_id |
+----+----------+--------------+---------------+
|       32 |            2 | 123                |
|       32 |            3 | 222                |
+----+----------+--------------+---------------+

关于mysql - 将 json 存储在字段中还是使用单独的表进行规范化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12510739/

相关文章:

php检查当前密码错误

mysql - 按位分组并选择不同值时 MyISAM 出现意外结果

php - MySQL 表名带有重音符号。通过 PDO 更新时出现无效的 utf8 字符串

mysql - Apache Sqoop 连接错误

sql - 如何选择过去 X 个月在一周的 X 天插入的结果?

javascript - 用户确认自己不是机器人后如何获取recaptcha客户端验证参数g-recaptcha-response?

php - 如何使用 laravel Raw 查询选择行

php 和 mysql 对一个区域使用 tree div

java - jackson 序列号 : Unwrap collection elements using

c# - 使用 Json.NET 的自定义反序列化