Проблема логики базы данных, настройка пропусков для события - PullRequest
0 голосов
/ 25 августа 2011

Я работаю над системой, где люди могут бронировать билеты и определенные пропуска на мероприятия (проездные и т. Д.).

Событие происходит в один или несколько дней. Проходы могут быть связаны с несколькими событиями. У них может быть цена по умолчанию и пропуск на один билет (поэтому, если вы купите, скажем, 3 билета, вы получите 1 билет бесплатно). Эти параметры по умолчанию должны быть изменены для каждого события. При связывании пропуска с событием я хочу иметь возможность связать пропуск с определенными днями события. Я застрял здесь, мой оригинальный дизайн базы данных, кажется, ошибочен. Вот что у меня сейчас есть:

tblPass
    passID
    name
    price
    ticketratio

tblEvent_pass
    passID
    eventID
    price
    ticketratio

затем, наконец, таблица, где зарезервированные проходы вставляются, после того, как заказ был сделан:

tblEvent_pass_reservation
    reservationID
    passID
    day
    totalPaid
    totalFree

Однако при такой настройке у меня, похоже, продолжаются проблемы. Может ли кто-нибудь взглянуть сюда и сказать, что я делаю не так? Я с удовольствием отвечу на любые ваши вопросы о концепции пропусков. Большое спасибо.

Ответы [ 2 ]

1 голос
/ 25 августа 2011

Есть несколько способов смоделировать это:

вы можете создать таблицу event_day для хранения отдельных дней, когда проходит каждое событие (Event_day_id, event_id, дата и время)

затем таблица для сопоставления пропуска с днями событий pass_event_day (Pass_id, event_day_id)

1 голос
/ 25 августа 2011

Я думаю, я правильно понял вашу проблему. Что ж, с моей точки зрения, ваша проблема в том, что вы связываете передачу с событием вместо таблицы дня события.

Посмотрите на следующую структуру:

-tblPass (passID, ...) -tblEvent (идентификатор события, описание, ...) -tblEventDay (eventDayID, eventID, день (дата), ...)

Теперь вам нужно связать дни ваших событий с таблицей пропусков, чтобы мы создали еще одно соединение дня-пропуска (N к N):

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

Если вы считаете «тикет» своей базовой единицей, вам нужно будет связать билеты с днями проведения мероприятия, например, «закрытое мероприятие может позволить себе только 15 000 человек, поэтому у вас будет только 15 000 билетов». Если это так, tblEventDay_Pass получит идентификатор заявки, который будет таким же, как и доступные билеты на событие. Вам нужно будет создать еще одну таблицу заявок и связать ее с таблицей событий.

Примерно так: http://i.stack.imgur.com/EUrAM.jpg

Надеюсь, это поможет! :) 1024 *

...