Интересно посмотреть, как самый дурацкий ответ из всех - единственный, который получил голос.
Вопрос не содержал достаточной информации, чтобы действительно дать разумный ответ.
С одной стороны, он не смог сказать, был ли вопрос о каком-то логическом дизайне базы данных или физическом дизайне базы данных.
Если вопрос был о логическом проектировании, то ответ довольно прост: НИКОГДА не включайте логическое значение в ваши логические планы. В реляционной модели уже есть способ представления информации «да / нет» (в силу предположения о замкнутом мире), а именно: наличие некоторого кортежа в некотором отношении.
Если вопрос касался физического плана, то любой разумный ответ обязательно должен зависеть от другой информации, такой как частота обновления, частота запросов, объемы запрашиваемых данных и т. Д. И т. Д. Ни один из них не был предоставлен, что делает вопрос без ответа.
EDIT
«Реляционная модель предписывает только один такой тип, BOOLEAN (самый фундаментальный тип из всех)». - C.J. Date, SQL и реляционная теория (2009). "
Этот ответ, конечно, должен был появиться.
Но действительно ли в этой цитате сказано, что тип boolean должен быть доступен ДЛЯ ВКЛЮЧЕНИЯ В НЕКОТОРЫЙ ТИП ОТНОШЕНИЯ? Или эта цитата (или, что лучше, более крупный фрагмент текста, в котором она появляется) лишь говорит о том, что существование типа boolean неизбежно, потому что в противном случае система не может вернуть результат для любого вызова оператора равенства, и что она действительно ли существует оператор равенства, который «прописан»?)
IOW, должен ли тип boolean быть доступным для включения в типы отношений или должен быть доступен тип boolean, потому что в противном случае не было бы ни одного языка DML, который мы могли бы определить для работы с базой данных?
Дата также официально зафиксирована, говоря (слегка перефразируя), что «если есть N способов представления информации с N> 1, то есть также> 1 набор операторов для изучения и> 1 способ для разработчика ошибки », и> 1 набор операторов для реализации разработчиком СУБД, и> 1 способ для разработчика СУБД».
РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ
«Дата говорит, что« реляционный атрибут может быть любого типа ». Он не говорит, что атрибут может быть любого типа, кроме логического» * 1025 *
Вы очень хорошо прочитали Дату.
Еще одна вещь, о которой определенно не говорит Дата, - это то, что атрибут не может быть типизирован по отношению. Наоборот. Тем не менее, существует широкий консенсус, и я точно знаю, что даже Дата разделяет этот консенсус, что, вероятно, плохая идея иметь базовые relvars, которые содержат атрибут, типизированный по отношению к типу.
Аналогично, нигде Date не говорит, что это ХОРОШАЯ идея включать логические атрибуты в базовые типы отношений. Он абсолютно молчит по этому конкретному вопросу. Мнение, которое я выразил, было моим. Не думаю, что у меня сложилось впечатление, что я выражал чужое мнение в том, что написал изначально.
Представление «истинности (или ошибочности) любого данного предложения» может быть сделано путем включения / пропуска кортежа в значении отношения определенного relvar (по крайней мере, логически!). Теперь возможность включать / исключать некоторый данный кортеж из значения некоторого данного relvar, безусловно, является фундаментальной. Учитывая это, нет никакой необходимости представлять правду (или ложность) любого данного предложения (логически!) С помощью атрибута типа boolean. И для чего еще вы бы использовали атрибут типа boolean, но чтобы явно сказать, что какое-то пропущение является истинным или ложным?