Дизайн стола для подтаблиц - PullRequest
0 голосов
/ 02 июня 2018

У меня есть таблица Event, которая содержит ideventtype (тип события ссылки), дату, idhost и т. Д.

Теперь я могу иметь другой тип события, и в зависимости от типа события у меня есть поля, связанные с типом события.,Как мне сохранить эти данные

Решение 1: - Сохранить его в той же таблице, что и событие, добавив еще один столбец.

Решение 2: - Создать другую таблицу, скажем, event_birthday (день рождения - это событиетипа) и там я могу хранить данные, связанные с "днем рождения".Однако, если у меня есть другие типы событий, мне придется создавать много таблиц, что в конечном итоге делает тип события бесполезным.

Любые предложения или другие способы продолжить.

[Ограничение добавлено] Как только у меня есть ограничениечто у подтаблицы должен быть внешний ключ к другой таблице.Например, у меня есть больничная таблица, которая должна быть связана с местоположением во вспомогательной таблице.

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

Возможны и два других способа.

Решение 3:

Создайте еще одну таблицу EventAddInfo, которая должна иметь 4 столбца.

EventAddInfoID
EventId
EventSubCol
EventSubValue

Здесь мы можем хранить эти дополнительные столбцы в виде строк.И EventId будет внешним ключом из таблицы Event.

Пример данных будет

| EventAddInfoID  |EventId   | EventSubCol  | EventSubValue |
|---------------- |----------|--------------|---------------|
| 10              | 4        |  birthdate   |  2002-05-30   |
| 11              | 4        |  birthplace  |  Hospital     |
| 12              | 5        |  Score       |  85           |
| 13              | 5        |  Study       |  Degree       |

Примечание: Рассмотрим EventId 5, относящиеся к событию обучения

Решение 4:

Наличие одного дополнительного столбца в Event Таблица типа XML.Например, EventSubInfo.

В этом столбце мы можем хранить xml нашей собственной структуры

<Cols>
   <birthdate>2002-05-30T09:00:00<birthdate>
   <birthplace>Hospital<birthplace>
</Cols>
0 голосов
/ 02 июня 2018

Я бы рассмотрел использование базы данных NoSQL, такой как MongoDB , для этой цели.Но если вы застряли на Sql Server, одним из вариантов будет сохранение сведений о событии в общей отдельной таблице в формате xml и использование сериализации в коде для обработки значений.Таким образом, вы все еще можете использовать запросы для фильтрации данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...