Оптимальная структура базы данных - «более широкая» таблица с пустыми полями или большим количеством таблиц?

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

Вот как table_existing прямо сейчас выглядит так:

table_existing
-------------------------
| ID | SP | SV | Field1 |
| .. | WW |  1 | ...... |
| .. | WW |  1 | ...... |
-------------------------

Вариант (A)

table_existing
----------------------------------------------------------------------
| ID | SP | SV | Field1 | Field2 | Field3 | Field4 | Field5 | Field6 |
| .. | XX |  1 | ...... | ...... | ...... | ...... | ...... | ...... |
| .. | YY |  2 | ...... | ...... | ...... | ...... | ...... | ...... |
----------------------------------------------------------------------

Вариант (B)

table_existing would be converted into table_WW_1_data
---------------
| ID | Field1 |
| .. | ...... |
| .. | ...... |
---------------

table_XX_1_data
------------------------
| ID | Field1 | Field2 |
| .. | ...... | ...... |
| .. | ...... | ...... |
------------------------

table_YY_2_data
---------------------------------
| ID | Field1 | Field2 | Field3 |
| .. | ...... | ...... | ...... |
| .. | ...... | ...... | ...... |
---------------------------------

Контекст: Комбинация SP, SV определяет «количество» полей, которые будут заполнены. Например, (XX, 1) имеет 2 поля. (YY, 2) имеет 3 поля.

Если бы я выбрал вариант (A), у меня было бы много пустых / NULL значений в «более широкой» таблице.

Если бы я выбрал вариант (B), я в основном создал бы больше таблиц ... одну на «каждую» комбинацию SP, SV - всего может быть 4-5. Но каждое будет полностью заполнено нужным количеством полей. table_existing также будет изменен.

Какая структура базы данных более оптимальна с точки зрения скорости? Я думаю, что с точки зрения ремонтопригодности вариант (B) мог бы быть лучше.


Edit1

Ни один из двух вариантов не будет наиболее критичными / часто используемыми таблицами в моем приложении.

В Варианте (B) после того, как данные были разделены, не было бы необходимости в их СОЕДИНЕНИИ. Если я знаю, что мне нужны поля для XX_1, я перейду к этой таблице.

Я ' Я пытаюсь понять, есть ли плюсы и минусы у ОДНОЙ большой таблицы с множеством неиспользуемых значений по сравнению с тем, что одни и те же данные разделены на большее количество таблиц. Приводит ли большее количество таблиц к снижению производительности в базе данных (у нас уже есть ~ 80 таблиц)?

12
задан Brian Tompsett - 汤莱恩 14 June 2017 в 21:20
поделиться