我一直在读,我应该将它存储在一个单独的表中“每行一个值”。这究竟是什么意思?像这样 - 所以每个“faviting”获得另一个用户条目?
USER_ID SKU_Favorited
001 10016
001 10067
024 10016
001 10010
024 16779
似乎多余必须两次输入同一个用户,但这是我应该做的吗?然后在查询中我只是SELECT
sku WHERE
用户ID ...并找到该号码旁边的所有SKU?
答案 0 :(得分:4)
它被称为第3版正常形式的关系数据库
您有一个包含用户的表。
//users
id | username | password
带收藏夹的桌子
//favorites
id | userid | Favorited
在这里你如何得到它:
select * from favorites inner join users on favorites.userid=users.id where users.id=1
答案 1 :(得分:3)
在relational model中没有其他简单的方法可以做到这一点,因为用户和收藏夹之间存在多对多关系。
您的方法遵循惯例。只需确保USER_ID
和SKU_Favorited
成为主键(一起)。
我偶尔会看到的东西,但它是一种反模式,你应该从不这样做,就是“序列化”“收藏”方面,即将用户ID放在一列中,将“1001,4514,41154,4411”放在另一列中
这似乎更“简洁”,但是非常不明智,因为1)你被迫在第二列使用VARCHAR
字段,2)反向查找很难,3)你不能改变喜欢的ID。
答案 2 :(得分:0)
是的,这正是你要做的。我不认为这是多余的。