Неполные данные и null — различия между версиями
Teptind (обсуждение | вклад) м |
Teptind (обсуждение | вклад) м |
||
Строка 2: | Строка 2: | ||
== Что означает null == | == Что означает null == | ||
− | Представим себе таблицы | + | Представим себе таблицы в БД университета ИТМО |
+ | * ''Students(StudentId, StudentName, GroupId)'' | ||
+ | * ''Groups(GroupId, GroupName)'' | ||
+ | Что может означать тот факт, что у студента '''null''' в столбце GroupId? | ||
* Значение неизвестно (нет информации, из какой группы студент) | * Значение неизвестно (нет информации, из какой группы студент) | ||
* Значение неверно (студент учится в какой-то группе, но эта группа не представлена в БД) | * Значение неверно (студент учится в какой-то группе, но эта группа не представлена в БД) | ||
− | * Значение еще/уже не существует ( | + | * Значение еще/уже не существует (студент был зачислен, но еще не распределен в группу или уже отчислен) |
* Значение не имеет смысла (студент из другого университета, который пришел с какими-то целями в ИТМО) | * Значение не имеет смысла (студент из другого университета, который пришел с какими-то целями в ИТМО) | ||
* Значение недоступно (недостаточно прав узнать группу) | * Значение недоступно (недостаточно прав узнать группу) | ||
Строка 11: | Строка 14: | ||
Вполне возможно, что возникнет необходимость различать разные виды того, что значение в том или ином смысле отсутствует | Вполне возможно, что возникнет необходимость различать разные виды того, что значение в том или ином смысле отсутствует | ||
== Можно ли обойтись без null? == | == Можно ли обойтись без null? == | ||
+ | Как представить кортеж с неопределенными частями в нашем случае? | ||
+ | * Разбить на 2 группы и сделать необязательную связь 1:1. В таком случае, в дополнительной таблице будет запись ''(StudentId, GroupId)'' тогда и только тогда, когда у студента определена группа | ||
+ | === Где еще появляется null === | ||
+ | * Результаты внешних соединений | ||
+ | * Результаты множественных операций | ||
+ | Оказывается, что в некоторых случаях без null не обойтись и надо уметь с ним работать | ||
== Операции с null == | == Операции с null == | ||
− | + | === Тернарная логика === | |
+ | ==== Логические операции ==== | ||
== Null и SQL == | == Null и SQL == | ||
todo | todo |
Версия 12:50, 20 декабря 2021
Эта статья находится в разработке!
Содержание
Что означает null
Представим себе таблицы в БД университета ИТМО
- Students(StudentId, StudentName, GroupId)
- Groups(GroupId, GroupName)
Что может означать тот факт, что у студента null в столбце GroupId?
- Значение неизвестно (нет информации, из какой группы студент)
- Значение неверно (студент учится в какой-то группе, но эта группа не представлена в БД)
- Значение еще/уже не существует (студент был зачислен, но еще не распределен в группу или уже отчислен)
- Значение не имеет смысла (студент из другого университета, который пришел с какими-то целями в ИТМО)
- Значение недоступно (недостаточно прав узнать группу)
На основе этих предположений можно сделать вывод, что значение null сильно зависит от контекста (какую предметную область мы моделируем итд.).
Вполне возможно, что возникнет необходимость различать разные виды того, что значение в том или ином смысле отсутствует
Можно ли обойтись без null?
Как представить кортеж с неопределенными частями в нашем случае?
- Разбить на 2 группы и сделать необязательную связь 1:1. В таком случае, в дополнительной таблице будет запись (StudentId, GroupId) тогда и только тогда, когда у студента определена группа
Где еще появляется null
- Результаты внешних соединений
- Результаты множественных операций
Оказывается, что в некоторых случаях без null не обойтись и надо уметь с ним работать
Операции с null
Тернарная логика
Логические операции
Null и SQL
todo