我知道这可能已被问了一百万次,但我找不到任何明确的东西.我正在建立一个网站,涉及可以建立项目列表的用户.我想知道在SQL表中存储项目的最佳方法是什么?
我想我是否需要为每个用户创建一个单独的表,因为在那里我看不到任何存储数组的方法.我认为这样效率会很低.
a_h*_*ame 10
根据"项目"的不同,似乎有两种可能的解决方案:
如果单个项目(例如"书")可以"分配"给多个用户,则为2).如果每个项目都是唯一的,并且只能属于单个用户,那么它就是1).
create table users
(
user_id integer primary key not null,
username varchar(100) not null
);
create table items
(
item_id integer primary key not null,
user_id integer not null references users(user_id),
item_name varchar(100) not null
);
Run Code Online (Sandbox Code Playgroud)
create table users
(
user_id integer primary key not null,
username varchar(100) not null
);
create table items
(
item_id integer primary key not null,
item_name varchar(100) not null
);
create table user_items
(
user_id integer not null references users(user_id),
item_id integer not null references items(item_id)
);
Run Code Online (Sandbox Code Playgroud)
由于你的描述非常模糊,这是我能想到的最好的.
不需要使用数组或类似的东西.您似乎是数据库建模的新手,因此您应该阅读有关规范化的内容.每当你想到"数组"时,你可能会想到"表格"(或关系).
编辑(刚看到你提到MySQL):
上面的SQL 不会在MySQL中创建一个外键约束(即使它会运行没有错误),因为MySQL的愚蠢"我不告诉你我是不是可以做某事"态度.您需要单独定义外键.