如何为会议和研讨会设计关系数据库

How to design relational database for conferences and workshops

我必须为组织会议的公司设计一个数据库(作为大学的作业)。 在这些会议中可以参加私人客户或组织(每个组织可以注册几个人)。 目前我需要一些如何完成我的项目的建议,因为我的老师说这是非常不正确的。

这里是简短的描述:

@Payments

这是我几天前设计的架构。

.

提前致谢

我很难理解你的图表。

关系数据库是normalized

由于数据库是关于会议和研讨会的,所以让我们从那些 table 开始。当您创建每个 table 时,请检查以确保它符合您(或您的用户)概述的标准。

会议Table

Conference
----------
Conference ID
Conference Name
Conference Description
Conference Total Attendees
Conference Start Date
Conference End Date
Conference Total Price
Conference Day Price

Table 名字通常是单数。这是会议公司预订会议所需的信息。接下来,我们将看看工作坊。

工作坊Table

Workshop
--------
Workshop ID
Conference ID
Workshop Name
Workshop Description
Workshop Total Attendees
Workshop Date
Workshop Price

会议 ID 将研讨会与会议联系起来。研讨会日期必须在会议开始日期和会议结束日期之间(含)。

请注意,我们甚至还没有考虑客户。我们刚刚创建了会议公司管理其会议和研讨会所需的 table。

以下是我们目前已经满足的要求:

  • 一些公司组织的会议可能需要一天或几天的时间
  • 会议和研讨会的名额有限 space

现在,让我们来看看折扣。

折扣Table

Discount
--------
Discount ID
Discount Type
Discount Description
Discount Percentage

此 table 将为学生和提前注册提供折扣。每种类型的折扣各占一行。可以有几个早期注册折扣。

以下是我们目前已经满足的要求:

  • 学生折扣
  • 提前注册折扣

现在,我们已准备好迎接客户和注册人。

客户Table

Customer
--------
Customer ID
Customer Name
Customer Organization
Customer Address
Customer City
Customer State
Customer Postal Code
Customer Country Code

客户可以是个人(组织为空或空)或代表组织的人。

此时,我们还没有将客户与会议联系起来。由于一个会议有很多客户(我们希望),并且(我们希望)一个客户有很多会议,我们需要一个路口table。

预订Table

Reservation
-----------
Reservation ID
Customer ID
Conference ID
Reservation Date
Payment Date
Early Registration Discount
Total Conference Cost 
Number of Attendees

这 table 允许客户注册参加会议。我们需要一个 table 来保存与会者信息。

与会者Table

Attendee
--------
Attendee ID
Reservation ID
Attendee Name
Attendee Address
...
Discount
Attendee Cost

我们已将与会者与会议联系起来,但与会议或任何研讨会的日期无关。为此,我们需要更多的连接点 tables.

会议出席人数Table

Conference Attendance
---------------------
Conference Attendance ID
Attendee ID
Conference ID
Conference Attendance Date

会议出席日期必须在会议开始日期和会议结束日期之间(含)。

研讨会出席人数Table

Workshop Attendance
-------------------
Workshop Attendance ID
Attendee ID
Workshop ID
Conference Attendance ID
Workshop Attendance Date

研讨会出席日期必须与会议出席日期相同。研讨会出席日期不是必需的。您可以通过会议出席 ID 获取会议出席日期。为了方便查询,我们保留了Workshop Attendance Date。

以下是我们目前已经满足的要求:

  • 客户是个人或组织,但与会者是个人
  • 组织可以为会议预留一些 space,但应在会议开始前 2 周完成此信息
  • 对于超过一天的会议,与会者可以注册任何一天(例如仅第一天)
  • 会议有关联的研讨会(与会者也可以参加研讨会)但只有当他们在这一天注册会议时(会议当天有很多研讨会)

看来我们满足了所有要求。使用此数据库的网络软件将不得不强制执行一些时间和折扣限制。