我是數據庫設計的新手,現在我需要開發數據庫來存儲會議信息。基本上,要求是我們有會議室,我們的員工可以預訂會議室,他們可以指定參加這些會議的人員。數據庫設計中的多重關係問題
參與者也是僱員 誰訂一間會議室可能會或可能不會是一個參與者 在預訂,我們必須像存儲開始時間,結束時間和會議名稱等信息的員工。 僱員可以預訂任意數量的會議 對於一個會議可以有一個或多個參與者
以下是提出了上述要求數據庫圖表...
問題01:這個設計有什麼問題嗎?
現在,如果我想查詢數據庫得到以下細節...
...我可以寫...
SELECT MeetingRoom.name AS 'Room Name',Booking.name AS 'Meeting Name',Booking.user_id AS 'Booked By',Booking.start_time,
Participation.user_id AS 'Participant ID',Employee.name AS 'Participant Name'
FROM MeetingRoom LEFT JOIN Booking ON MeetingRoom.room_id = Booking.room_id
LEFT JOIN Participation ON Booking.booking_id= Participation.booking_id
LEFT JOIN Employee ON Participation.user_id = Employee.employee_id
問題02:在booked by
列我只顯示employee_id
。但我無法顯示員工姓名。 (如果我需要顯示預訂會議室的員工姓名)我是否應該更改查詢/設計以滿足此要求?
注意:在數據庫設計中,Employee
與booking
有直接關係,因爲員工可以預定會議。 employee
與booking
到Participation
有另一種關係,因爲員工可以參加一次預訂的會議。
我認爲'Employee'和'Booking'之間沒有必然的關係。你應該從'Booking'中刪除'user_id'。 – 2014-11-22 07:31:02