Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что писать в базу: NULL или пустую строку? 
:(
    Опции темы
SerGreY
Дата 2.8.2006, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 18.1.2004

Репутация: нет
Всего: нет



Читал, что при заполнении пустых строк значением NULL, ускоряется работа с базой? 
Что думаете по этому поводу? Есть ли смысл писать NULL вместо пустой строки?
PM MAIL   Вверх
batigoal
Дата 2.8.2006, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 1
Всего: 151



Цитата(SerGreY @  2.8.2006,  10:07 Найти цитируемый пост)
Читал, что при заполнении пустых строк значением NULL, ускоряется работа с базой? 
Что думаете по этому поводу? Есть ли смысл писать NULL вместо пустой строки? 

Думаю, да. Не просто же так его придумали.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
skyboy
Дата 2.8.2006, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 5
Всего: 260



Цитата(SerGreY @  2.8.2006,  09:07 Найти цитируемый пост)
Есть ли смысл писать NULL вместо пустой строки? 

есть смысл проектировать базу так, чтоб не было необходимости выбора. Потребность в неустановленных значениях бывает редко, может, можно обойтись без NULL?
PM MAIL   Вверх
SerGreY
Дата 2.8.2006, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 18.1.2004

Репутация: нет
Всего: нет



Цитата(skyboy @ 2.8.2006,  10:00)
Цитата(SerGreY @  2.8.2006,  09:07 Найти цитируемый пост)
Есть ли смысл писать NULL вместо пустой строки? 

есть смысл проектировать базу так, чтоб не было необходимости выбора. Потребность в неустановленных значениях бывает редко, может, можно обойтись без NULL?

Например, как поступить применительно к полю "Примечания", которое в большинстве случаев остается пустым?
PM MAIL   Вверх
Mephisto
Дата 2.8.2006, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Цитата(SerGreY @  2.8.2006,  10:27 Найти цитируемый пост)
Например, как поступить применительно к полю "Примечания", которое в большинстве случаев остается пустым? 

Конечно в таком случае лучше Null. А если Null это код, то нужно пользоваться осторожно. А именно использовать только Outer join, а не inner! И не ограничивать посредством Where поля которые содержаться в прикрепляемой таблице. Иначе будут потери при выборке!
PM   Вверх
Vit
Дата 2.8.2006, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Null нужно не для скорости, а для правильности данных. Пустая строка - это строка длиной в ноль, а Null - это полное отсутствие какой-то строки. Например имеется примечание для какого-то товара. Пустая строка в примечании будет озночать что примечания нет, а Null то что это примечание возможно есть возможно нет оно просто не внесено пользователем... Пример может корявый, но в любом случае использование пустых строк и Null - это отражение бизнес-логики, а не вопрос скорости


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
chief39
Дата 8.8.2006, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 8
Всего: 77



Если при создании поля таблицы указаь модификатор null - то к каждой записи будет добавлена метка размером в байт для этого поля
Если заполнить её - поле налл, если нет - читается значение поля.

Советуют не использовать налл в DDL на всяк случай, а только по необходимости(зачем ещё место тратить? smile )

Но если искать по есть/нету, налл/не налл, пустая/ не пустая - то, безусловно, быстрее будет проверка на налл.

Вместо сверки длиного стринга будет проходить разовая проверка одного байта


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
chief39
Дата 8.8.2006, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 8
Всего: 77



ЗЫ: и конечно же 
Цитата(Vit @  2.8.2006,  15:45 Найти цитируемый пост)
Пример может корявый, но в любом случае использование пустых строк и Null - это отражение бизнес-логики, а не вопрос скорости 





--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
Cashey
Дата 14.8.2006, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Использование null может в последствие плохо сказатся при построении отчетов.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
batigoal
Дата 14.8.2006, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 1
Всего: 151



Цитата(Cashey @  14.8.2006,  11:58 Найти цитируемый пост)
Использование null может в последствие плохо сказатся при построении отчетов. 

Почему?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Cashey
Дата 14.8.2006, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Цитата(Lamer George @  14.8.2006,  12:24 Найти цитируемый пост)
Цитата(Cashey @  14.8.2006,  11:58 Найти цитируемый пост)
Использование null может в последствие плохо сказатся при построении отчетов. 

Почему? 

А как по твоему пользователь отреагирует на слово null в таблице екселевского отчета, например? А оно именно так и выведется, если поля предварительно не обрабатывать перед выводом, но это уже отдельные операции, занимающие определенное время и ресурсы компьютера, но и главное труда программиста на написание кода обработчика


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
batigoal
Дата 14.8.2006, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 1
Всего: 151



Ну так данные "сырьем" никто пользователю и не отдает обычно. Естественно, что им требуется обработка перед презентацией.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
sergejzr
Дата 14.8.2006, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 3
Всего: 360



Есть целая статья насчёт трёзначной логики в БД.
Автор считает NULL - злом.

Добавлено @ 15:57 
Блин, статью найти не могу...
Смысл там был в том, что отсутствие чего либо означает неправильное проектирование.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
LSD
Дата 14.8.2006, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 24
Всего: 538



Цитата(sergej.z @  14.8.2006,  16:57 Найти цитируемый пост)
Смысл там был в том, что отсутствие чего либо означает неправильное проектирование.

Теоретически верное проектирование не всегда хорошо согласуется с практикой.

Например, пусть есть некий документ, у которого может быть срок действия, или он может быть без ограничения срока действия. С трехзначной логикой мы спокойно используем null, трактуя его как отсутсвие ограничения на срок действия.
А как это реализовать без null значений?

P.S. И кстати тогда получается, что и в языках программирования null не должно быть.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
skyboy
Дата 14.8.2006, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 5
Всего: 260



Цитата(LSD @  14.8.2006,  16:15 Найти цитируемый пост)
А как это реализовать без null значений?

Отдельная таблица со связью один-к-одному. Где есть записи - хорошо. Если записи нет - то получаем аналог null'a. Да и сам null можем получить при помощи LEFT JOIN... Вот только выносить ради этого поле "комментарий" в отдельную таблицу... Хм....
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0877 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.