愿望清单的数据库设计

时间:2014-10-30 09:25:32

标签: mysql sql database database-design relational-database

我目前正在开发小型旅行应用程序,用户可以在其中添加其他用户'在他们的心愿单中旅行。我在为wishlist设计数据库时遇到了困难。

到目前为止我尝试的是:

 user (user_id(pk), user_name)

 trip(trip_id(pk), trip_name, user_id(fk))

 wishlist(trip_id(fk), user_id(fk))

但是,由于多个用户可以在他们的心愿单中添加多个旅行,如何关联这些关系?

如果用户检索了他的个人愿望清单,那么愿望清单中的相关旅行将被列入'特定用户可以显示吗?

编辑:

为了澄清,问题是:一个用户可以进行多次旅行,并且许多用户可以将他人的旅行添加到他们自己的旅行中。心愿"

3 个答案:

答案 0 :(得分:2)

我认为你的设计没有错。您有一张旅行表,每次旅行都与执行此操作的用户有关。而且你有一张愿望表,每个愿望都是希望用户和他们想要的旅行的结合。

获取用户的愿望:

select *
from trip
where trip_id in (select trip_id from wishlist where user_id = 123);

那么你看到了什么问题?

答案 1 :(得分:0)

只是一个快速的建议。您可能有一个表格来链接这两个。

User { user_id PK, user_name }
UserWishlist { id PK, wishlist_id FK, user_id FK }
Wishlist { wishlist_id PK, trip_id FK }

Trip { trip_id PK, user_id FK, trip_name }

答案 2 :(得分:0)

设计还可以。没有什么是错的,我可以解决以下问题:

SELECT user_id, user_name,trip_name

FROM user u
JOIN wishlist w ON u.user_id = w.user_id
JOIN trip t ON w.trip_id = t.trip_id
WHERE users.userid= current_user's_id

效果很好。