【问题标题】:unsure about database logic for multiple items不确定多个项目的数据库逻辑
【发布时间】:2012-09-23 20:27:07
【问题描述】:

我正在努力解决与数据库逻辑相关的问题。

我有一个系统,允许用户为给定的事件创建一个事件、表演和多种不同的门票类型。然后这些将被添加到数据库中,其中包含与给定活动的门票类型相关的价格(门票类型可以重复用于其他活动,并且每个活动没有固定数量的类型),然后客户将进入网站,选择其中一项活动、表演,然后将列出供他们从不同的门票类型和价格中进行选择。

此时我有一个事件表,它使用一个系列来存储门票 ID,门票 ID 存储在一个单独的表中,另一个表存储价格。该系列的使用是荒谬的,因为它往往会让我感到厌烦并且要么无法工作(因为 mysql 不能正确处理代码),要么它对信息可以做什么有难以置信的限制有没有人更好地知道如何我可能会达到这个结果?

事件示例:

事件名称:'事件 1'

表现:'23/03/13 (12:30)'

门票类型:成人(20 欧元)、学生(15 欧元)、特殊(10 欧元)等

设置活动的人可以创建他们想要的任何门票类型或使用系统中现有的门票类型,只需为该特定活动设置价格。

【问题讨论】:

  • 您能否添加一个活动的示例,包括其表演和门票?它会让你更容易理解你想要什么。
  • 更好的是,解释为什么你认为这很荒谬,到目前为止,你似乎走在了正确的轨道上。我会有用于事件、票证的表格,以及一个代表您为事件和票证类型描述的多对多关系的表格。
  • 该系列的使用是荒谬的,因为它往往会让我感到厌烦并且要么无法工作(因为 mysql 无法正确处理代码),要么它对可以做的事情有极大的限制信息

标签: php mysql database logic


【解决方案1】:

如果我对您的理解正确,我相信您正在做的事情很可能是最好的方法。

一个用户可以创建多个事件,每个事件可以有多种票。门票不是特定活动的(可用于多个活动),因此价格不能与门票信息一起存储。

因此,您要做的是拥有这些表:

events - 存储有关事件的信息 tickets - 存储门票信息 *events_tickets* - eventstickets 的连接表(因为它是多对多关系)

events_tickets 表会有如下列: primary id、event_id(外键)、ticket_id(外键)、价格

希望对您有所帮助。

【讨论】:

  • 我认为你是对的,但我该如何使用这些信息呢?在我看来,我将不得不根据活动 ID 参考门票价格表,这很好。但是对于返回的每张票,我将需要参考票和事件表以获取它们的名称和其他信息。这应该怎么做或者我错过了什么?
  • events_tickets 表是一个多对多连接表。它有活动的 ID 和门票。这样,您可以使用该票证 ID 从票证表中获取信息,或者使用 event_id 列从事件表中获取信息。价格存储在连接表中,因为它特定于票证和事件之间的关系。这是你要澄清的吗?
  • 不完全是,但我认为提到了多对多表。我需要做一些阅读,因为以前从未设置或使用过多对多连接表。
  • 一对多关系将外部存储在其中一个表中(例如,如果一个事件可以有很多票,但一张票只能有一个事件,则 event_id 将存储在票表中)。对于多对多关系,连接表对于将数据关联在一起是必要的。 :-) 希望这能增加你对它们的理解。
  • 是的,同时也把我搞糊涂了。只需要找到一个与之相关的好文档,我相信我会弄清楚的。感谢您的帮助
【解决方案2】:

表事件:Id_Event、Ds_Event、Dt_Event、Id_Venue

表 Ticket_Type:Id_Ticket_Type、Ds_Ticket_Type、Ic_Ticket_Type_Is_Custom(布尔值)

表 Event_Ticket_Type_Price:Id_Event、Id_Ticket_Type、Nr_Ticket_Price

餐桌地点:Id_Venue、Ds_Venue、Ds_Venue_Address

【讨论】:

    猜你喜欢
    • 2018-04-12
    • 2017-11-05
    • 2015-06-28
    • 2021-07-13
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多