Нужен ли логический столбец, если у меня есть столбец даты и времени для типа столбцов «IsDeleted»? - PullRequest
0 голосов
/ 24 февраля 2019

Допустим, у меня есть таблица с именем Product, и строки в этой таблице должны быть удалены логически.

Означает, что в таблице должен быть столбец IsDeleted.Допустим также, что я хочу сохранить дату и время, когда строка была удалена (логически), поэтому в таблице должен быть другой (обнуляемый) столбец с именем 'DeletedOn'.

Мой вопросis : В этом стиле мне нужно иметь столбец 'IsDeleted'?Когда у меня появится столбец 'DeletedOn'?(Когда столбец 'DeletedOn' равен нулю, строка не удаляется, а когда она не равна нулю, строка удаляется. Поэтому я думаю, что нам не нужен столбец 'IsDeleted')

1 Ответ

0 голосов
/ 24 февраля 2019

Использование DeletedOn IS NULL или IsDeleted=0 почти даст аналогичную производительность, bit может иметь небольшое преимущество, как объяснено в этом вопросе ( Производительность запроса по индексируемому логическому столбцу против столбца Datetime ) в стеке потока.Но это будет не так важно.

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

В этом стиле мне нужен столбец IsDeleted?Когда у меня есть столбец 'DeletedOn'?

В соответствии с моим предложением, если вы сохраняете дату удаления, вам не нужен дополнительный столбец.

...