我们可以将List类型的数据存储到MYSQL数据库表吗?

时间:2016-05-10 10:59:13

标签: mysql

我需要将一些列表类型的数据存储到MYSQL数据库中。是否可以将其存储在MYSQL中,如果是,则应该保存此数据的字段的数据类型是什么?

提前致谢。

5 个答案:

答案 0 :(得分:5)

不,不,不,不,不!永远不要在一列中存储多个值!

分隔值并将它们存储在另一条记录中。

例如,如果您有用户并希望存储每个用户拥有的角色列表,那么您可以这样做

users table
-----------
id
name
...


roles table
-----------
id
name


user_roles table
----------------
user_id
role_id

答案 1 :(得分:1)

您可以使用VARCHAR数据类型列将其存储为STRING。

mysql中没有专门用于存储特定列表的特定数据类型。

其他方法是破坏列表并将每个成员存储在不同的行中,然后在查询时,您可以用首选语言重新创建列表或数组或JSON。

答案 2 :(得分:0)

您可以使用JSON数据类型。 MySQL提供JSON作为column数据类型,并提供一些函数来处理JSON数据。

查看documentation

注意:您必须使用5.7+版本

  

从MySQL 5.7.8开始,MySQL支持本机JSON数据类型,可以在JSON中高效访问数据

答案 3 :(得分:0)

您可以使用SET数据类型,这将在mysql中而不是在表中存储预定义的数据集,并允许您从列表中选择值,最多64个单个项

https://dev.mysql.com/doc/refman/8.0/en/set.html

答案 4 :(得分:0)

您可以创建一个包含两个字段的表 - 第一个是列表名称,第二个是列表项。这个表就像列表和它的项目之间的连接。每个列表名称将在表中出现的次数与列表中的项目一样多。每个列表项在表中出现的次数与其所属的列表数相同。

例如,假设您要存储有关团队的数据。假设任何人都可以成为多个团队的成员。如果鲍勃在蓝队和橙队,那么将有两条记录包括鲍勃 - 一个是他与蓝队配对,另一个是他与橙队配对。如果蓝队有 10 人,那么将有 10 条记录提到蓝队——每个蓝队成员都有一个。

我认为这个解决方案不遵循规范化规则,但它会是一个实用、可行的解决方案,不是吗?