Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
Где-то встречала выражение, что хорошо спроектированная БД не должна содержать большого количества NULL значений. Верно ли это утверждение и если верно, то где найти обоснование, что почитать? И может поделитесь рассуждениями и наблюдениями из опыта, насколько мешают NULL значения при эксплуатации БД. Спасибо заранее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 19:37 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
Kite wrote: > Где-то встречала выражение, что хорошо спроектированная БД не должна > содержать большого количества NULL значений. Верно ли это утверждение и > если верно, то где найти обоснование, что почитать? http://www.dbdebunk.com/page/page/1706744.htm Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 19:42 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
KiteГде-то встречала выражение, что хорошо спроектированная БД не должна содержать большого количества NULL значений. На мой взгляд, все определяется здравым смыслом. А здравый смысл подсказывает что в реальной системе очень большое количество полей может быть необязательно к заполнению. Простейший пример - справочник партнеров который содержит кроме наменования инн, оконх, окпо, егрн значения которых в большинстве случаев неизвестно. По крайней мере про старые версии Sybase и MS SQL говорили что сервер более оптимально располагает на страницах NOT NULL данные, что приводит к небольшому ускорению дисковых операций. Но по моему не стоит специально обращать внимание на это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2005, 10:20 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
Простейший пример - справочник партнеров который содержит кроме наменования инн, оконх, окпо, егрн значения которых в большинстве случаев неизвестно.Это, увы не пример удачной системы. А если появятся ещё 5 реквизитов (например, введут к-л новые требования) ? Будете поля добавлять ? Впрочем, некоторое кол-во нулов это вполне нормальная ситуация. Главное, чтоб в запросах проверок на НУЛЛ было поменьше, т.к. в этом случае сервера работают неоптимально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2005, 10:33 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
[quot LSVЭто, увы не пример удачной системы. А если появятся ещё 5 реквизитов (например, введут к-л новые требования) ? Будете поля добавлять? [/quot] Угу, иначе кто мне деньги платить будет за поддержку ;) А по поводу хранения реквизитов в отдельной таблице или в основной, достаточно много рассуждений на этом форуме. Скажу сразу у нас в системе реализованы оба подхода. Все что входит в "анкету" лица сидит в основной таблице, все доп. данные в динамических классификаторах к анкете. Как обычно всегда требуется баланс между удобством и производительностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2005, 10:57 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
Дейт с Давином с самого начала были против null'ов. И основной упор делали во-первых на то что в современных СУБД под null понимается 2 разных понятия - собственно null и unk (unknown)... во-вторых на сложности с формулированием предиката для отношения содержащего null С первым я полностью согласен, со вторым где-то на 30% ;) Правда в реальных системах null или какая-либо константа его заменяющая - это меньшее из зол ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2005, 11:16 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
LSV[quot ]Простейший пример - справочник партнеров который содержит кроме наменования инн, оконх, окпо, егрн значения которых в большинстве случаев неизвестно.Это, увы не пример удачной системы. А если появятся ещё 5 реквизитов (например, введут к-л новые требования) ? Будете поля добавлять ? А как по-другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2005, 11:29 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
KiteГде-то встречала выражение, что хорошо спроектированная БД не должна содержать большого количества NULL значений. Верно ли это утверждение и если верно, то где найти обоснование, что почитать? И может поделитесь рассуждениями и наблюдениями из опыта, насколько мешают NULL значения при эксплуатации БД. Спасибо заранее...Я бы сказал немного по-другому: верно, что хорошо нормализованная БД не должна содержать большого количества NULL значений. Но хорошо спроектированная и хорошо нормализованная БД - далеко не всегда тождественные понятия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2005, 12:22 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за высказанные мнения. А как ведут себя индексы, построенные по полям, содержащим множество значений NULL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2005, 13:22 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
Полностью избавленная от null-ов БД - полностью декомпозированная - для каждого атрибута своя таблица ))))) Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2005, 14:58 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
Kite К сожалению, поведение индексов разнится в зависимости от СУБД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2005, 12:53 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
Kite. Не обращайте внимания. сколько Вам нужно NULL, столько и делайте. В кадровсой программе возможны NULL Дата смерти Дата Увольнения Дата выхода на пенсию Имеющиеся правительственные награды Телефон И дофига других. Типа размера обуви, которая нужна только тем, кто имеет право на на выдачу обуви как спецодежды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2005, 17:21 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
KiteА как ведут себя индексы, построенные по полям, содержащим множество значений NULL? Значение NULL в подавляющем большинстве случаев низкоселективно, а следовательно использование b-индекса для выбора записей по условию field is null будет неэффективным. В принципе я вижу три варианта: обрабатывать null по общей схеме, как и любое другое значение исключать null записи из индекса хранить null в некотором особом списке Третий из них - не знаю, работает ли где-то, и несколько странен. Он был бы удобен, но непонятно как обобщить это решение для индекса по нескольким полям. Вторым подходом пользуется Oracle; вроде упоминали, что такая настройка есть в Access, может и еще где-то. Таким образом уменьшаются потери на хранение ненужных данных в индексе, но индекс становится менее применим (не может быть использован в некоторых запросах, например select count). Первый - вроде наиболее прост в понимании :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2005, 18:19 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
Значение NULL в подавляющем большинстве случаев низкоселективно, как раз правота этого утверждения сильно зависит от того как эту БД проектировали... можно сделать и высокоселективным ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2005, 19:02 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
исключать null записи из индекса Так работают многие промышленные СУБД. Точно знаю про MSSQL и Oracle. Поэтому выражение: WHERE MyField is null низкопроизводительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2005, 19:57 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
funikovyuriЗначение NULL в подавляющем большинстве случаев низкоселективно, как раз правота этого утверждения сильно зависит от того как эту БД проектировали... можно сделать и высокоселективным ;) Читаем: "... в подавляющем большинстве". Да, если задаться целью, можно спроектировать базу, в которой это утверждение не выполняется. Согласен, даже сам могу такое сделать :) Собственно я даже заранее согласен с тем, что это статистическое утверждение, причем по моей личной статистике. И если кто-нибудь расскажет, на каких задачах он получает резко другие показатели, я с большим интересом его послушаю. Что касается баз, с которыми я имею дело прямо сейчас, то... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 16:20 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
LSVПоэтому выражение: WHERE MyField is null Не только и не столько поэтому. В следующем примере consistent gets - это логические чтения. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 16:43 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
У меня вот так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Но за примером высокой селективности далеко ходить также не надо. Например, взять так часто используемое отношение наследования и одно из возможных его представлений в РМД в виде одной таблицы на всю иерархию. Таблица должна содержать объединение всех атрибутов всех сущностей связанных наследованием... Далее достаточно чтобы какой-либо класс желательно выше по иерархии имел наибольшее количество объектов-записей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 19:13 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
funikovyuriУ меня вот так Хм. А приведенные Вами цифры - все в процентах? (спрашиваю, поскольку у Вас из селекта выпало умножение на сто, а сами цифры... пожалуй что неожиданные в другую сторону, прежде всего дико низкое среднее значение). funikovyuriНо за примером высокой селективности далеко ходить также не надо. Вопрос в частоте таких примеров. Как видите, у меня поиск тоже нашел табличку, где есть null-ы, но их количество ничтожно. Вопрос - как часто такое вcтречается и как часто в таких таблицах нужно искать по is null. Когда такое происходит - меня не особо напрягает создать соответствующий "более хитрый" индекс. А un mass все же null прискорбно неселективен :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 14:02 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
Есть понятие внешнего ключа (FK). Если NULL не будет, какое значение должно содержать поле внешнего ключа в записи, не имеющее связи с подчиненной сущностью? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 17:23 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
Slider_spb Боюсь, я не понял связи Вашего вопроса с темой и предыдущим обсуждением. Не расшифруете, что Вы имели в виду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 17:38 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
Slider_spbЕсть понятие внешнего ключа (FK). Если NULL не будет, какое значение должно содержать поле внешнего ключа в записи, не имеющее связи с подчиненной сущностью? FK подразумевает связь с первичным ключем, скажем, справочной таблицы. А NULL в PK - эт , мягко говоря, странно... Если вы имеете ввиду NULL в поле FK - то смысл FK , который ссылается на несуществующие записи? целочная ссылочность, однако... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 18:30 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
27 понуро бредущих кроликов Если вы имеете ввиду NULL в поле FK - то смысл FK , который ссылается на несуществующие записи? целочная ссылочность, однако... одно другому не противоречит. ссылочная целостность в смысле отсутствия в фк значений, не заданных в ПК (кроме случаев неопределенных родительских записей) - т.е. это частный случай ссылочной целостности. Частный случай - дерево с корнями, чьи родители неопределены. (сослаться на несуществующего родителя нельзя, но можно назваться корнем) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 18:43 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
softwarer угу, с вашим выводом согласен ЗЫ мои цифры, конечно же, не в процентах и avg у меня около 1 т.е. 97% так что они только подтверждают ваш вывод ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 18:47 |
|
||
|
Подскажите насчет NULLов в базе
|
|||
|---|---|---|---|
|
#18+
4321 27 понуро бредущих кроликов Если вы имеете ввиду NULL в поле FK - то смысл FK , который ссылается на несуществующие записи? целочная ссылочность, однако... одно другому не противоречит. ссылочная целостность в смысле отсутствия в фк значений, не заданных в ПК (кроме случаев неопределенных родительских записей) - т.е. это частный случай ссылочной целостности. Частный случай - дерево с корнями, чьи родители неопределены. (сослаться на несуществующего родителя нельзя, но можно назваться корнем) IMHO, FK существует отчасти именно для того, чтобы не допускать неопределенных родительских записей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2005, 09:47 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33191096&tid=1545724]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
137ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 457ms |

| 0 / 0 |
