mysql - 数组数据类型插入MySQL

标签 mysql

在玩Yelp Dataset时使用 MySql 我遇到了一个有趣的问题,显然我想运行一些查询,并且在 user.json 文件中描述了数据的“数组”。

这个“数组”如何存储在MySql表中?

根据MySql Reference Documentation for Data Type Storage似乎没有一种数据类型可以给出这个结果。

// array of strings, an array of the user's friend as user_ids

"friends":[ "wqoX...", "KUXL...", "6e9r..." ]

到目前为止,我正在做一个简单的模型来关注用户表,我的创建语句:

create table Friends(
friends VARCHAR(255),
primary key (friends));

create table User(
userid VARCHAR(22),
primary key (userid),
friends VARCHAR(22),<--- user-id is 22 so friends-id is 22
foreign key (friends) references UserFriends (friends));

一些有趣的示例数据:

insert into User("abcde-ghijk-mnopq-stuv","NONE"); <- person1, no friends
insert into User("abcde-ghijk-mnopq-stuw","abcde-ghijk-mnopq-stuv"); <- person2, person1 friend

也许要实现结果我必须使用数据库规范化方法?

最佳答案

Friends 表应包含引用Users 的外键:

CREATE TABLE Friends (
    user1 VARCHAR(22),
    user2 VARCHAR(22),
    PRIMARY KEY (user1, user2),
    CONSTRAINT user1 REFERENCES User (userid),
    CONSTRAINT user2 REFERENCES User (userid)
);

此表中的一行表示 user1user2 是 friend 。

一般来说,您应该避免将列表放入表列中,这违反了第二范式。

关于mysql - 数组数据类型插入MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53232566/

相关文章:

mysql - PostgreSQL:有效的变量分配示例?

MySQL 选择字符右侧的所有内容(如果存在)

php - 将地点标记添加到 Google map

mysql - 如何使用替换非唯一键? mysql

PHP MySQL Insert 无法正常工作

mysql SELECT NOT IN () -- 不相交集?

MySQL 到 PostgreSQL 转换器

php - 插入 MySQL 时的撇号问题

mysql - FIND_IN_SET 在大海捞针的边缘找不到值

mysql - LEFT 连接时 SQL DELETE 太长