2014-12-02 3 views
-1

На моем веб-сайте клиенты могут создавать события с различными элементами (которые имеют атрибуты, такие как продавец, цвет и т. Д.). Должен ли я иметь базу данных ONE и новую таблицу для каждого события? Я не знаю другого способа запрограммировать это, и разбиение каждого клиента/события на новую базу данных кажется плохим решением, но я новичок в базах данных и не знаю, насколько это глупо.Использование баз данных и таблиц (MySQL)

Я предполагаю, что у меня будет ТАБЛИЦА с идентификаторами пользователя, ТАБЛИЦА для каждого события и ТАБЛИЦА, которая связывает пользователя с событиями, которые он создал. Это оптимальный способ сделать это? Все в одной базе данных? Спасибо!

+0

Да, это глупо. Также глупо иметь отдельную таблицу для каждого события. (Как правило, структура базы данных должна быть статичной: не создавайте новые таблицы на лету.) – JJJ

+0

Итак, у меня должна быть одна таблица со ВСЕМИ элементами и есть событие как поле? Поэтому я мог искать все элементы с этим идентификатором поля или искать конкретный элемент в определенном событии, используя этот идентификатор ... что будет иметь смысл. Тогда мне понадобится еще одна таблица для связывания идентификаторов пользователей и идентификаторов событий. –

ответ

0

У вас должно быть отношение «один ко многим» между таблицей пользователя и таблицей событий. Таблица событий должна иметь идентификатор пользователя как внешний ключ.

CREATE TABLE user (
    id int UNSIGNED AUTO_INCREMENT NOT NULL, 
    name varchar(50) NOT NULL, 
    last_modified timestamp NOT NULL, 

    PRIMARY KEY (id), 
    UNIQUE KEY (name) 
); 

CREATE TABLE event (
    id int UNSIGNED AUTO_INCREMENT NOT NULL, 
    user_id int UNSIGNED NOT NULL, 
    name varchar(50) NOT NULL, 
    description varchar(500) NOT NULL, 
    last_modified timestamp NOT NULL, 

    PRIMARY KEY (id), 
    FOREIGN KEY (user_id) REFERENCES user.id ON UPDATE CASCADE ON DELETE CASCADE 
); 

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

+0

Разве я не хочу, чтобы это было отношением «один ко многим», поскольку у каждого события мог быть только один создатель/пользователь, связанный с ним? –

+0

Вы абсолютно правы! :), и это то, что я проиллюстрировал, по крайней мере. Была просто опечатка! – Seer

0

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

Однако обычно вы создадите одну базу данных с одной таблицей для всех событий с столбцом для типа события или кода (при необходимости). Вам также не нужно создавать таблицу, содержащую все типы событий, ваш код может содержать их. В таблице должны быть указаны только те события, которые были уволены.

Смежные вопросы