数据库逻辑问题,为事件设置传递

时间:2011-08-25 10:46:11

标签: mysql database database-design relational-database normalization

我正在开发一个系统,人们可以预订门票和某些活动通行证(汽车通行证等)。

事件发生在一天或多天。传递可以链接到多个事件。他们可以有一个默认价格和通票率(所以如果你购买,比如3票,你可以获得1通票免费)。但是,应该能够基于每个事件更改这些默认参数。将传球链接到赛事时,我希望能够将传球链接到赛事的某些日子。我有点被困在这里,我原来的数据库设计似乎有缺陷。这是我现在拥有的:

tblPass
    passID
    name
    price
    ticketratio

tblEvent_pass
    passID
    eventID
    price
    ticketratio

然后最后,在订单完成后,保留传递的表格被放入:

tblEvent_pass_reservation
    reservationID
    passID
    day
    totalPaid
    totalFree

然而,通过这种设置,我似乎一直遇到麻烦。有人可以看看这个并告诉我我做错了什么吗?我很乐意回答你对通行证概念的任何问题。非常感谢。

2 个答案:

答案 0 :(得分:1)

我认为我的问题是正确的。 嗯,以我的观点来看,你的问题是你正在将传递与事件相关联而不是事件日表。

请看以下结构:

-tblPass (passID,...) -tblEvent (eventID,description,...) -tblEventDay (eventDayID,eventID,day(date),...)

现在您需要将您的活动日期与通行证表相关联,以便我们创建另一个eventday-pass(N到N)连接:

tblEventDay_Pass (eventDayID,passID,pricePaid,...)

如果您将“门票”视为基本单位,则必须将门票链接到活动日,例如“关闭的活动只能支付15.000人,因此您只能获得15.000张门票”。如果是这样,tblEventDay_Pass将获得ticketID,该ID与该事件的可用票证的ID相同。您需要创建另一个Ticket表并将其链接到事件表。

这样的事情: http://i.stack.imgur.com/EUrAM.jpg

希望它有所帮助!:)

答案 1 :(得分:1)

有几种方法可以对此进行建模:

您可以创建一个event_day表来存储每个事件所在的各个日期 (event_day_id,event_id的,日期时间)

然后是一个表,用于将传递映射到事件天pass_event_day (pass_id,event_day_id)