我目前正在开发小型旅行应用程序,用户可以在其中添加其他用户'在他们的心愿单中旅行。我在为wishlist设计数据库时遇到了困难。
到目前为止我尝试的是:
user (user_id(pk), user_name)
trip(trip_id(pk), trip_name, user_id(fk))
wishlist(trip_id(fk), user_id(fk))
但是,由于多个用户可以在他们的心愿单中添加多个旅行,如何关联这些关系?
如果用户检索了他的个人愿望清单,那么愿望清单中的相关旅行将被列入'特定用户可以显示吗?
编辑:
为了澄清,问题是:一个用户可以进行多次旅行,并且许多用户可以将他人的旅行添加到他们自己的旅行中。心愿"
答案 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
效果很好。