2013-09-29 3 views
0

Прежде чем я зашел слишком далеко в разработке базы данных, я хотел выяснить, как лучше всего справиться с этой ситуацией.Как правильно использовать нулевые поля в таблице (производительность по умолчанию)

В настоящее время у меня есть таблица, предназначенная для банковского регистра. В таблице есть поле для депозитов и поле для изъятия (и куча другой информации). Вся информация, содержащаяся в строке, имеет отношение как к депозитам, так и к выходу, но только один или другой (депозит/снятие) будет заполнен (другое поле всегда будет null).

Должен ли я создать две таблицы (таблицу снятия и таблицу депозитов) или просто оставить оба значения по умолчанию равными нулю и заполнить только одно значение при вставке? Тем не менее, является ли проблема с производительностью иметь нулевые поля, подобные этому? А также, что, если бы я должен был масштабировать его, чтобы включить больше нулевых полей (скажем, 15 полей в базе данных, 8 из которых по умолчанию равны нулю)?

+2

Не могли бы вы использовать знак в поле 'TransactionAmount', чтобы определить, является ли это кредитом или дебетом? В столбцах Nullable используется дополнительный бит. Биты для нескольких столбцов с нулевым значением упаковываются в байты, поэтому пространство не вызывает большого беспокойства. – HABO

ответ

0

Как @HABO рекомендуется использовать один колонка сумма. Чтобы определить, является ли это выводом или депозитом, создайте второй столбец, если только знак суммы не будет достаточным для его определения. Когда вы хотите извлечь информацию из таблицы, вы можете использовать столбец вида или расчета.

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

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