mysql - 数组数据类型插入 MySQL
问题描述
在使用 MySql 玩Yelp 数据集时,我遇到了一个有趣的问题,显然我想运行一些查询,并且在 user.json 文件中描述了一个“数组”数据。
这个“数组”如何存储在 MySql 表中?
根据MySql Reference Documentation for Data Type Storage,似乎没有一种数据类型会给出这个结果。
// 字符串数组,用户的好友数组,user_ids
“朋友”:[“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)
);
此表中的一行表示user1
和user2
是朋友。
一般来说,您应该避免将列表放入表格列中,这违反了第二范式。