2013-02-25 1 views
0

У меня есть таблица с большим количеством полей, которые проводит «итоги», как так:Когда связать таблицы или сохранить его в одну таблицу с большим количеством полей

UserID | total_classA | total_classB | total_classC // and so on 

я мог бы иметь вторую таблицу, однако с:

ClassType | Total | UserID 

Но я действительно не вижу, как вторая таблица была бы полезной здесь для отношения многих к одному, во-первых, мне нужно было бы хранить больше строк данных. И мне нужно использовать соединение для выбора данных.

Но много вещей, которые я читал бы предположить наличие двух таблиц лучше всего за один стол с большим количеством полей ... почему это, как я не вижу преимущество, что в описанных выше ситуациях =/

+0

Ну, вам нужно добавить «total_classD» в будущем? Есть ли у classA', 'classB' или' classC' семантическое значение в других местах в базе данных? –

+0

Они не имеют никакого значения, где нет, и в будущем будет много классов. – Sir

ответ

2

магазина ваши данные будут чистыми, поскольку вы предлагаете свою вторую таблицу.

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

Самым большим преимуществом этого является устранение необходимости менять структуру таблицы с каждым дополнительным типом класса, который вы решите ввести. Вы сможете расширить возможности отслеживания данных, просто добавив строки (DML, а не DDL).

Посмотрите на second normal form для получения более подробного технического описания для этого маршрута.

+0

Значит, это больше подходит для удобства дизайна за счет повышения производительности? – Sir

+0

Я бы попросил вас показать показатели вокруг вашего предполагаемого «прироста производительности». Блокирование конкуренции при обновлении одной записи несколькими запросами часто замедляет процесс обновления более подробных данных с меньшим количеством конфликтов. – Tahbaza

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