2016-03-31 3 views
0

Я не могу решить, нужно ли нормализовать или денормализовать эту часть моей базы данных:Нормализовать или нет - один ко многим или много столбцов

У меня есть список из ~ 50 видов, которые либо присутствуют или отсутствуют в данном образце точка. Эти 50, возможно, будут расширяться до 75 в будущем, но не более того. Основной целью этой базы данных является создание отчетов. Так что, если в данной области 10 сайтов, средний вопрос будет: на сколько из этих сайтов мы обнаружили виды a?

Должен ли я создать 50 т/ф битовые столбцы:

сайт, а, б, в, г, д ... п

1, т, е, т, е, т, т ....

2, е, т, т, е, т, е .....

Или я должен создать один-ко-многим таблице:

1 с ...

2 б

2 гр ...

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

+1

Версия с колонками 50 - 75 не является денормализованной. Вы нормализуете данные, а не представление данных (boolean). Единственное преимущество, заключающееся в том, что каждый образец/вид в отдельной строке состоит в том, что вам не нужно создавать строки, которые являются ложными. Если у вас есть только 5 видов, присутствующих в выборке, у вас есть только 5 строк, а не 50. Если в выборке у вас в среднем 45 видов, нет никакого преимущества. –

+0

Я бы пошел со второй альтернативой (таблица многих ко многим), так как это упростит использование агрегатных функций, например. если вы хотите подсчитать, сколько видов было записано на каждом участке. – reaanb

ответ

0

Преимущество раствора 50 колонка:

  • Доступ ко всем видам на данной точке выборки будет эффективной.

Преимущество решения один-ко-многим:

  • Увеличение числа видов может быть сделано без изменения дизайна базы данных, просто введя новые записи, содержащих видовой идентификатор.

  • Доступ ко всем точкам выборки, содержащим данный вид, будет проще, чем по конструкции 50 колонн.

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

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