与会议的关系"名单

时间:2014-08-03 22:53:38

标签: database ms-access

我有一个"人"桌子,我有一个"会议" table,其中有两个coloumns:Person1_ID和Person2_ID。

当我为person1_ID(该人是其中一人")与Person2_ID(也是" people"表中的另一个人)建立会议时,该条目为会议结束了。但是,这也意味着Person2_ID也与Person1_ID会面;换句话说,这是一种双面关系。

我如何查询"会议"每个人?在表单中,我想显示"会议" fpr每个人分开但是我不确定如何从我的会议中提取信息#34;表

1 个答案:

答案 0 :(得分:2)

我认为您会发现您当前的设计可能不足以模拟现实生活中会议管理的要求。

最基本的:

  • 会议是一个具有地点,时间,持续时间和描述的单一事件。
  • 多人可以参加会议。

根据这两个简单的要求,您可以看到,对于单个会议记录,您需要能够关联多个People记录,而不仅仅是2个。

这可以这样建模:

Meetings table                  MeetingsPeople table
------------------------        -----------------------
ID  (PK)        AUTONUMBER  ->  MeetingID (FK)   NUMBER
Description     TEXT            PersonID  (FK)   NUMBER
Location        TEXT
DateTimeStart   DATETIME
Duration        NUMBER

MeetingsPeople表非常简单:它用于将给定人员链接到给定会议 这将取消您的限制。现在,您可以拥有会议所需的人数,而不仅仅是2人。

如果您想记录发起会议的人或其他参与者确认他们的出席情况,您可以将其添加到MeetingsPeople表:

MeetingsPeople table
-----------------------
MeetingID (FK)   NUMBER
PersonID  (FK)   NUMBER
IsMeetingOwner   YES/NO
IsConfirmed      YES/NO

当您创建新的Meetings记录时,您还需要在MeetingsPeople中创建一个链接到会议所有者的新记录。

要查询给定人员正在参加的所有会议(例如,生成他们的日程安排),您只需要一个简单的查询。
假设 John Doe ID表格中有123 People,我们想知道他今天应该参加的所有会议:

SELECT Meetings.*
FROM   Meetings
INNER JOIN MeetingsPeople
  ON MeetingsPeople.MeetingID = Meetings.ID
WHERE MeetingsPeople.PersonID = 123
      AND DateTimeStart >= Date()
ORDER BY DateTimeStart;