Нормализация большого объема данных для базы данных - PullRequest
0 голосов
/ 20 марта 2011

У меня есть большой объем данных, которые необходимо сохранить в базе данных.Данные: на каждый день месяца есть 5 событий.Далее 5 событий делятся на 2 разных подэтапа, которые необходимо хранить отдельно, то есть на каждый день месяца существует 10 событий.

На верхнем уровне 5 событий имеют разные заголовки, а нижние - нечетные под-события имеют один заголовок, а четные под-события - один заголовок.

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

Редактировать: Пример данных какзапрошено:

20 марта:

Событие 1: Подэвент 1: 4:30, Подэвент 2: 5:00 am
Событие 2: Подэвент 1: 12:30:00, Подэвент 2: 1:00 вечера
Событие 3: Подэвент 1: 16:15, Подэвент 2: 4:45 вечера
Событие 4: Подэвент 1: 6:15, Суб-событиеСобытие 2: 6:45 вечера * 10101 * Событие 5: Подэвент 1: 8:00 вечера, Подэвент 2: 8:45 вечера

Все события повторяются в разное время в течение месяца и всего года.

Ответы [ 3 ]

1 голос
/ 22 марта 2011

Вот простая модель для достижения того, что вы ищете. В зависимости от того, как вы будете использовать эти данные, вы можете добавить альтернативные ключи или изменить первичные ключи по своему усмотрению. Дайте мне знать, если у вас есть какие-либо вопросы.

enter image description here

РЕДАКТИРОВАТЬ в ответ на комментарий:

Не совсем уверен, понимаю ли я, о чем вы просите. Здесь будут подробности, хотя. Отношения между таблицами определены в модели. Если вы не понимаете (простите, если понимаете) модель, я бы порекомендовал поискать диаграммы ER с использованием нотации Crow's Foot.

EventId (INT) : Incremental 
EventTypeCode (CHAR (2)) : Used to cover Events 1-5 as E1 - E5
Description (VARCHAR) : Info describing E1-E5
SubEventId (boolean) : Since you only declare two options 1 & 2

Надеюсь, это поможет.

1 голос
/ 20 марта 2011

Просто имейте таблицу событий со строкой для каждого события. Subevent может иметь внешний ключ для того же события, чтобы ссылаться на событие, для которого они являются вложенными событиями.

0 голосов
/ 20 марта 2011

Эти таблицы нормализуют данные:

   Event
      Date 
      Time
      Event Type (FK to Event Type)
      PK Date,Time,Event Type
      *Example Data: 2011-03-30; 04:30; 1 top;*

    Event Type 
      Type 
      Heading
      PK Type (Values 1(top)-5(top),1(odd)-5(even))
      *Example Data: 1 top; This is event type 1 top level;*

    Parent Event
      Child Event (FK to Event)
      Parent Event (FK to Event) 
      PK Child Event, Parent Event (and possibly Index each field independently)
      *Example Data: 2011-03-30, 04:30, 1top; 2011-03-31, 05:00, 1 even;*

РЕДАКТИРОВАТЬ: В соответствии с запрошенным примером добавлены данные.Отношения задаются внешними ключами (FK), поэтому пример связывает одно событие верхнего уровня с одним вложенным событием типа 1 даже.

...