我是数据库设计的新手,现在我需要开发数据库来存储会议信息。基本上,要求是我们有会议室,我们的员工可以预订会议室,他们可以指定参加这些会议的人员。数据库设计中的多重关系问题
参与者也是雇员 谁订一间会议室可能会或可能不会是一个参与者 在预订,我们必须像存储开始时间,结束时间和会议名称等信息的员工。 雇员可以预订任意数量的会议 对于一个会议可以有一个或多个参与者
以下是提出了上述要求数据库图表...
问题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