2014-10-30 58 views
-1

我目前正在開發小型旅行應用程序,用戶可以在其中添加其他用戶的旅行。我在爲wishlist設計數據庫時遇到了困難。願望清單的數據庫設計

我迄今爲止嘗試是:

user (user_id(pk), user_name) 

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

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

但是,由於多個用戶可以添加多人次到他們的心願,如何將這些關係聯繫起來?

如果用戶檢索到他的個人願望清單,那麼可以顯示「該」特定用戶的願望清單中的關聯旅程?

編輯:

爲了澄清,問題是:一個用戶可以擁有多個旅遊和許多用戶可以將每個-其他的車次他們一個自己的「願望清單」

+0

拿出紙和筆的作弊,開始使用Merise/UML或其他方法分析和設計您的問題,之後SQL將變得容易。 – 2014-10-30 09:28:32

+0

@Begueradj plz告訴我答案,如果你知道 – xyz 2014-10-30 09:29:33

回答

2

我看你的設計沒有錯你有一張旅行表,每次旅行都是rel對做過它的用戶有所幫助。而且你有一張願望表,希望每一個願望都是希望用戶和他們想要的旅行的組合。

獲取用戶的心願之旅:

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

所以,你看到了什麼問題?

+0

不,它不會工作 – xyz 2014-10-30 13:45:54

+0

這是什麼意思?我問「你看到了什麼問題」,你回答「不」?你的意思是查詢嗎?爲什麼它不工作?獲取用戶123的所有願望清單條目並顯示相關的旅程。這很簡單。 – 2014-10-30 14:36:57

+0

這不像你想象的那麼簡單。爲了澄清,問題是:「一個用戶可以有多次旅行,許多用戶可以將他們的旅行添加到他們自己的」願望清單「中。 – xyz 2014-10-30 14:40:44

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 } 
+0

那麼,我需要兩張表wishlisht - 一個用於將旅行映射到心願單,另一個用於將用戶映射到心願單? – xyz 2014-10-30 09:38:42

+1

@ user3828744:在我看來,原創設計比你的要好得多。在您的設計中,每個願望清單僅包含*一次*旅程。所以用戶只有很多願望清單,因爲他們希望不止一次旅行。這和以前一樣,只是更復雜。 – 2014-10-30 11:31:02

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 

它運作良好。

相關問題