2013-07-30 2 views
0

Я действительно новичок в базах данных, поэтому, пожалуйста, несите меня.Схема базы данных для хранения ints

У меня есть веб-сайт, на котором люди могут обратиться за запросами на предстоящий концерт. Пользователи могут запросить билеты в Нью-Йорке или Далласе. Аналогично, для каждого из этих мест они могут запросить либо VIP-билет, либо обычный билет.

мне нужна база данных, чтобы отслеживать, сколько людей просили каждый тип билета (VIP and NY или VIP and Dallas или Regular and NY или Regular and Dallas). Таким образом, у меня не будет никаких билетов.

Какую схему следует использовать для этой базы данных? Должен ли я иметь один ряд, а затем 4 столбца (VIP & NY, VIP & Dallas, Regular & NY и Regular & Dallas)? Проблема с этим заключается в том, что она не кажется очень гибкой, поэтому я не уверен, что это хороший дизайн.

+0

Является ли вся эта база данных только для одного концерта, или она будет храниться для хранения данных для будущих концертов? – Brilliand

ответ

2

У вас должен быть один столбец, содержащий количество, столбец, который указывает тип (VIP), и другой, который указывает город.

+1

Может быть, также колонка, для которой участвует концерт? – Brilliand

+0

Разве мне не нужны были бы две колонки? Один для описания (например, NY & VIP), а затем другой для количества? –

+0

Как сказал Бриллианд: «Почему у вас нет колонны для города? – Whistletoe

0

Что вы хотите сделать, это один стол с городами и один стол с типом билетов. Тогда вы создадите слабую связь с [городом, типом билета, количеством билетов].

Этот стол будет иметь 2 внешних ключа, поэтому «слабый».

Но это позволяет добавлять или удалять города и т. Д. И вы можете добавить таблицу для концертов, а также вашу слабую таблицу вы получите еще один «концерт» внешнего ключа.

Я думаю, что это самый правильный способ сделать это.

2

Чтобы сделать его гибким, вы могли бы сделать:

Table: 
    location 
Columns: 
    location_id integer 
    description varchar 

Table 
    type 
Columns: 
    type_id  integer 
    description varchar 

table 
    purchases 
columns: 
    purchase_id integer 
    type_id  integer 
    location_id integer 

Таким образом, вы можете добавить больше городов, больше типов и вы ВСЕГДА вставлять их в покупках.

Если вы хотите знать, сколько вы продали вам пересчитывать их

0
CREATE TABLE `tickets` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `locale` varchar(45) NOT NULL, 
    `ticket_type` varchar(45) NOT NULL 
} 

Это простое представление вашей таблицы. В идеале у вас будут отдельные таблицы для локали и типа. И ваш стол будет выглядеть так:

CREATE TABLE `tickets` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `locale_id` int(11) NOT NULL, 
    `ticket_type_id` int(11) NOT NULL 
} 
+0

Вы ожидаете, что он будет хранить отдельных клиентов, я полагаю? Эта схема имеет смысл только в том случае, если 'uid' является внешним ключом. – Brilliand

+0

Справа. Я полагал, что его пользователи были вне его приложения и на самом деле имели выделенный стол. Вы поднимаете хороший момент. – tchow002

+0

Ну, без идентификаторов пользователей, эта таблица по существу хранит повторяющиеся данные (столбец auto_increment не учитывается, поскольку он не имеет никакого значения). – Brilliand