powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Подскажите насчет NULLов в базе
25 сообщений из 53, страница 2 из 3
Подскажите насчет NULLов в базе
    #33203337
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
27 понуро бредущих кроликов IMHO, FK существует отчасти именно для того, чтобы не допускать неопределенных родительских записей...
нуда, нуда... Ну дак, известно же что ИМХО=={Имею Мнение -Хй Оспоришь}
Для чего кстати конструкции FK (или релейшена): ...ON DELETE SET NULL ?
Есть разные потребности моделирования. Под них -разные _вариации_ ссылочной целостности. И если существует вариант для "пуристов", то наличие вариантов, не позволяющих иметь несуществующих предков, но позволяющих - неопределенного - очевидно вполне восстребован (уж если производители СУБД внесли его в реализуемые вар-ты).
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33203487
27 понуро бредущих кроликов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot 4321нуда, нуда... Ну дак, известно же что ИМХО=={Имею Мнение -Хй Оспоришь}
[/quot]

IMHO != ИМХО :-))
IMHO = "я ТАК думаю (с) Мимино"
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33203924
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В кадровсой программе возможны NULL
Дата смерти
Дата Увольнения
Дата выхода на пенсию
Имеющиеся правительственные награды
Телефон
И дофига других.

Возможны, но необязательны.
Например, если норамализовать далее (и зачастую это более правильно)
до отдельных таблиц:
Факты смерти
Факты Увольнения
Факты выхода на пенсию
...
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33203959
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынник wrote:

> Возможны, но необязательны.
> Например, если норамализовать далее (и зачастую это более правильно)
> до отдельных таблиц:
> Факты смерти
> Факты Увольнения
> Факты выхода на пенсию
угу.. и при добавлении, например "Факта удаления аппендицита" добавлять
табличку... процедуру для обработки... интерфейса... вместо того чтобы
добавить в табличку, скажем "разные факты" новой записи "Факт удаления
аппендицита"....
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33203966
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Роман Дынник wrote:
>
> > Возможны, но необязательны.
> > Например, если норамализовать далее (и зачастую это более правильно)
> > до отдельных таблиц:
> > Факты смерти
> > Факты Увольнения
> > Факты выхода на пенсию
> угу.. и при добавлении, например "Факта удаления аппендицита" добавлять
> табличку... процедуру для обработки... интерфейса... вместо того чтобы
> добавить в табличку, скажем "разные факты" новой записи "Факт удаления
> аппендицита"....
>

и кстати, а если мне понадобится например, жизнеописание чела?
я что, должен буду писать
Код: plaintext
1.
2.
3.
4.
5.
select * from ФактРождения union all
select * from ФактОбучения union all
.......
select * from ФактСмерти
order by date
? некошерно это как-то....
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33204058
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
угу.. и при добавлении, например "Факта удаления аппендицита" добавлять
табличку... процедуру для обработки... интерфейса... вместо того чтобы
добавить в табличку, скажем "разные факты" новой записи "Факт удаления
аппендицита"....

Это уже дело CRUD-слоя раскладывать записи по табличкам, зачастую эту кажущуюся в данном случае сложно процедуру можно сгенерить автоматом на основнии модели данных.
Интерфейс ничем не пострадает, надо просто вспомнить паттерн MVC
Потом в данном случае повышается процент повторного использования кода, не во всех же разработках требуется хранить факт удаления аппендицита, но вот ФИО - везде, таким образом вы выделяете некое общее ядро для различных модулей, которое наращивается в соответствии с требованиями к системе.

и кстати, а если мне понадобится например, жизнеописание чела?
я что, должен буду писать
select * from ФактРождения union all
select * from ФактОбучения union all
.......
select * from ФактСмерти
order by date
некошерно это как-то....

не union all, а обычный join если связь 1-к-1.
Для сложных иерархических объектов - их можно вообще в xml возвращать, далее десериализовывать в бизнес-объект/компонент.
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33204138
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынник wrote:

>
> Это уже дело CRUD-слоя раскладывать записи по табличкам, зачастую эту
> кажущуюся в данном случае сложно процедуру можно сгенерить автоматом на
> основнии модели данных.
у-ху... т.е. процы генерятся... сами по себе... не проще ли заполнить
справочник типов фактов?
> Интерфейс ничем не пострадает, надо просто вспомнить паттерн MVC
кто такой MVC - не знаю, подозреваю что Microsoft Visual C
Если да, то что, при добавлении нового факта Вы предлагаете
перекомпилить клиента? Или я неправильно понимаю?
> Потом в данном случае повышается процент повторного использования кода,
> не во всех же разработках требуется хранить факт удаления аппендицита,
> но вот ФИО - везде, таким образом вы выделяете некое общее ядро для
> различных модулей, которое наращивается в соответствии с требованиями к
> системе.
>
Да, не везде нужен факт удаления аппендицита, и вот ежели факты хранить
в одной таблице, то наличие или отсутсвие данного факта решительно ни на
кого не повилияет.

> не union all, а обычный join если связь 1-к-1.
> Для сложных иерархических объектов - их можно вообще в xml возвращать,
> далее десериализовывать в бизнес-объект/компонент.

Откуда тут джойн? согласен, рождение-смерть - по одной штуке, а вот
обучение/увольнение/женитьба/развод и прочая - дык их много будит....
и потом... история то вертикально обычно раскладывается, а Вы мне
предлагаете - горизонтально?
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33204355
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
у-ху... т.е. процы генерятся... сами по себе... не проще ли заполнить
справочник типов фактов?

По-разному бывает выгодно, когда заранее не известно кол-во фактов(атрибутов) или список атрибутов часто расширяются в процессе эксплуатации - тогда да, выгоднее справочник типов фактов, но в этом случае сложнее будет писать запросы поиска по этим трибутам.

кто такой MVC - не знаю, подозреваю что Microsoft Visual C
Если да, то что, при добавлении нового факта Вы предлагаете
перекомпилить клиента? Или я неправильно понимаю?

MVC - это Model View Controller - другими словами отделение данных и управления ими от презентационного уровня (интерфейса)
По поводу же перекомпиляции... думаю вам известно что написание полностью тонко настраиваемого приложения на все случаи - это миф.

Да, не везде нужен факт удаления аппендицита, и вот ежели факты хранить
в одной таблице, то наличие или отсутсвие данного факта решительно ни на
кого не повилияет.

Если факты храняться в одной таблице - у вас будут NULL-ы - вообщем то это тема данного топика...
другие доводы в пользу отделения я описал выше.

Откуда тут джойн? согласен, рождение-смерть - по одной штуке, а вот
обучение/увольнение/женитьба/развод и прочая - дык их много будит....
и потом... история то вертикально обычно раскладывается, а Вы мне
предлагаете - горизонтально?

структура хранения истории бизнес-объекта определяется на этапе проектирования. т.е. например вы определяете что добавлять в историю при изменении объекта: весь список 1-к-n либо хранить историю для каждой изменяемой записи списка. В общем случае для истории делается поностью дублирующая структура с дополнительными полями типа дата создания/изменения.
И потом, как в вы предлагаете хранить обучение/увольнение/женитьба/развод в одной таблице? нет, ну можно конечно в xml например, но... очень сомнительное решение.
И по поводу join-а при 1-к-n , в mssql ,например, вы можете сделать for xml запрос который и вернет вам всю иерархию бизнес объекта в виде xml.
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33204942
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> По-разному бывает выгодно, когда заранее не известно кол-во
> фактов(атрибутов) или список атрибутов часто расширяются в процессе
> эксплуатации - тогда да, выгоднее справочник типов фактов, но в этом
> случае сложнее будет писать запросы поиска по этим трибутам.
Чем есть сложно?
написать запрос вида
Код: plaintext
1.
select * from Facts where FactType='BIRTH'
?
> MVC - это Model View Controller - другими словами отделение данных и
> управления ими от презентационного уровня (интерфейса)
> По поводу же перекомпиляции... думаю вам известно что написание
> полностью тонко настраиваемого приложения на все случаи - это миф.
Ну, совсем тооонко настраиваемое - да, миф... а вот подходящее в 90-95%
случаев.... непросто, но возможно... десятка 3 пиплов с местной тусовки
такое делало (я в том числе)

> Если факты храняться в одной таблице - у вас будут NULL-ы - вообщем то
> это тема данного топика...
> другие доводы в пользу отделения я описал выше.
Откель наллы, милейший? нету факта женитьбы - нету записи в табличке
фактов, и всего делов....

>
> структура хранения истории бизнес-объекта определяется на этапе
> проектирования. т.е. например вы определяете что добавлять в историю при
> изменении объекта: весь список 1-к-n либо хранить историю для каждой
> изменяемой записи списка. В общем случае для истории делается поностью
> дублирующая структура с дополнительными полями типа дата создания/изменения.
> И потом, как в вы предлагаете хранить
> обучение/увольнение/женитьба/развод в одной таблице? нет, ну можно
> конечно в xml например, но... очень сомнительное решение.
Не поняль, о чем йето мы.. но ! Дался всем этот XML, сил моих нету,
лепят куды надоть и не надоть...


Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33211011
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дорогой locky, видимо мы с вами разговариваем на разных языках
по-этому попытаюсь подвести некое резюме.

Тема NULL-ов уже неоднократно обсуждалась и здесь и на аналогичных ресурсах, и уже давно переросла в разряд идеалогических войн.
NULL или не NULL - вопрос философский, теоритически - без NULL правильнее (в литературе обычно встречаются утверждения что присутствие NULL обычно свидетельствует о потенциальной ошибке проектирования), практически же мало кто доводит систему до такой степени декомпозиции (по лени ли, из удобства или по каким-либо еще причинам) и в практике обычно использование NULL не является большим грехом.
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33211859
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KiteГде-то встречала выражение, что хорошо спроектированная БД не должна содержать большого количества NULL значений. Верно ли это утверждение и если верно, то где найти обоснование, что почитать?

В общем, верно. Но это не значит, что если у тебя много NULL-полей, то база спроектирована плохо.

Kite
И может поделитесь рассуждениями и наблюдениями из опыта, насколько мешают NULL значения при эксплуатации БД.


Из опыта - да никак они не мешают.

На самом деле NULL-ы зачем нужны ? Без них тебе нужно было бы вынести все необязательные поля в отдельную таблицу, в пределе - каждое поле в свою, но можно выделить зависимые поля совместно, эти таблицы должны относиться к главной как один-к-ноль_или_один, это усложняет дизайн (ненужные лишние сущности могут появляются, высосанные из пальца), усложняет запросы (join-ить -то надо). Так что NULL-ы - очень полезная вещь. Другое дело, что используя их можно, например, запихать две сущности в одну таблицу , а это - не правильно, ну и все такое прочее.
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33211860
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVчтоб в запросах проверок на НУЛЛ было поменьше, т.к. в этом случае сервера работают неоптимально.
Не правда.
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33211861
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KiteСпасибо всем за высказанные мнения.
А как ведут себя индексы, построенные по полям, содержащим множество значений NULL?

Нормально себя ведут. Как и все другие индексы. Для индекса NULL- просто еще одно значение. Правда, не для всех серверов это верно, у Оракла например, как я знаю, на этот счет мнение не совсем обычное.
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33211862
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Kite. Не обращайте внимания. сколько Вам нужно NULL, столько и делайте.
В кадровсой программе возможны NULL
Дата смерти
Дата Увольнения
Дата выхода на пенсию
Имеющиеся правительственные награды
Телефон
И дофига других.


А вот именно эти поля уже под NULL-ом выглядят как дизайн сомнительного качества. Смерти, увольнения и выходы входы можно было бы сделать отдельной таблицей, типа "события в жизни". Телефоны - сам бог повелел в отдельную таблицу, тем более что уже даже во всех мобильных телефонах их для одного товарища принято заводить несколько, а не один.
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33212363
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv Смерти , ... можно было бы сделать отдельной таблицей, типа "события в жизни". Телефоны - сам бог повелел в отдельную таблицу, тем более что уже даже во всех мобильных телефонах их для одного товарища принято заводить несколько, а не один.

аха-аха "дайте две" (И отмечать там все клинические смерти пёрсына, покеда окончательно не сдуецца).
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33212381
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321 wrote:
> MasterZiv
> *Смерти*, ... можно было бы сделать отдельной таблицей, типа "события в
> жизни". Телефоны - сам бог повелел в отдельную таблицу, тем более что
> уже даже во всех мобильных телефонах их для одного товарища принято
> заводить несколько, а не один.
>
>
>
> аха-аха "дайте две" (И отмечать там все клинические смерти пёрсына,
> покеда окончательно не сдуецца).
>
да не, смерть она одна в жизни бывает (политики, правда, скажут, что
есть еще политическая смерть). просто хранить одни события тута, а
другие - тама - некошерно, запашештся потом выбирать...

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33214711
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я имел в виду не только для смерти эту таблицу использовать, но и вообще для всех событий в жизни. Там в таблице много было дат, могли бы и догадаться.
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33215102
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЯ имел в виду не только для смерти эту таблицу использовать, но и вообще для всех событий в жизни. Там в таблице много было дат, могли бы и догадаться.
Вот тут есть некий момент, который в данном случае не слишком явен, но все ж таки...
А именно, "реальный мир" устроен таким образом, что некое значение является в нем членом множества отношений (естественно я уже перешел с реальности на некую "логическую модель", говоря об отношениях). И существует множество способов расположить эти значения в неких табличных структурах (все остальные отношения получая с помощью выборок по связанным таблицам). Для БД похоронного бюро например отношение "событие жизни" неактуально. Там актуальны только "клиенты" с 2-я заведомо единственными "событиями" - рождением и смертью. Добавлять пару ключей, плюс тип, для ухода от NULL в этом случае мяхко говоря нерационально. И вообще говоря выделять заведомо однократные события (или некие другие заведомо единичные аттрибуты) в некое "однородно" образование типа "сущности "события жизни"" видимо уместно только там, где эти "события" (аттрибуты) интересуют пользователя именно в виде таковой "однородной" в смысле "организующей сущности" выборки.
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33215179
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321 wrote:
> MasterZiv
> Я имел в виду не только для смерти эту таблицу использовать, но и вообще
> для всех событий в жизни. Там в таблице много было дат, могли бы и
> догадаться.
>
>
> Вот тут есть некий момент, который в данном случае не слишком явен, но
> все ж таки...
> А именно, "реальный мир" устроен таким образом, что некое значение
> является в нем членом множества отношений (естественно я уже перешел с
> реальности на некую "логическую модель", говоря об отношениях). И
> существует множество способов расположить эти значения в неких табличных
> структурах (все остальные отношения получая с помощью выборок по
> связанным таблицам). Для БД похоронного бюро например отношение "событие
> жизни" неактуально. Там актуальны только "клиенты" с 2-я заведомо
> единственными "событиями" - рождением и смертью. Добавлять пару ключей,
> плюс тип, для ухода от NULL в этом случае мяхко говоря нерационально. И
> вообще говоря выделять заведомо однократные события (или некие другие
> заведомо единичные аттрибуты) в некое "однородно" образование типа
> "сущности "события жизни"" видимо уместно только там, где эти "события"
> (аттрибуты) интересуют пользователя именно в виде таковой "однородной" в
> смысле "организующей сущности" выборки.
Кстати, клиентами похоронных бюро являются не покойники, а родственники,
а для них актуальны такие даты как "Дата обращения", "дата захоронения",
"дата оплаты заказа" и т.д....

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33215187
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv LSVчтоб в запросах проверок на НУЛЛ было поменьше, т.к. в этом случае сервера работают неоптимально.
Не правда.
Для Оракла это правда.
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33215201
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще когда связь между сущностями 1:1, и есть желание иметь хорошую производительность - лучше делать все в одной таблице. Многие базы умею сжимать записи с дефолтными и НУЛЛ значениями. Ввод/Вывод получается меньше.
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33215225
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyКстати, клиентами похоронных бюро являются не покойники, а родственники,
а для них актуальны такие даты как "Дата обращения", "дата захоронения",
"дата оплаты заказа" и т.д....
хммм. Ну этто клиенты несколько другого сорта. Тут вопрос даже не о словах, а об уважении к .... "объектам учета". Давайте таки назовем их как-то иначе, чем "объекты ...". А хотя бы как и "Клиенты", а сродственники перетопчуца - пусть к примеру будут "Контрагентами". И тогда вашу ремарку следует видимо понимать так: "бабло рубят с родственников, и фиксируют их обращения". Но это не причина вести учет "Клиентов" в смысле обслуживаемых боди совместно с учетом "Клиентов" в смысле опустошаемых карманофф. Не так ли?
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33215328
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman MasterZiv LSVчтоб в запросах проверок на НУЛЛ было поменьше, т.к. в этом случае сервера работают неоптимально.
Не правда.
Для Оракла это правда.
Это - личная проблема вашего оракла.
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33215359
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321 wrote:
> хммм. Ну этто клиенты несколько другого сорта. Тут вопрос даже не о
> словах, а об уважении к .... "объектам учета". Давайте таки назовем их
> как-то иначе, чем "объекты ...". А хотя бы как и "Клиенты", а
> сродственники перетопчуца - пусть к примеру будут "Контрагентами". И
> тогда вашу ремарку следует видимо понимать так: "бабло рубят с
> родственников, и фиксируют их обращения". Но это не причина вести учет
> "Клиентов" в смысле обслуживаемых боди совместно с учетом "Клиентов" в
> смысле опустошаемых карманофф. Не так ли?

Так, раз уж такая пьянка...
"Боди" - это всего-лишь ммм... сырье для предоставления услуги тем самым
родственникам, которые и являются клиентами, а даты жизни и смерти -
всего один из параметров, написанный в приходной накладной.
Вы когда кота ведете кастрировать - кого в книгу регистрации пишут? "Кот
Васька осьмнадцати лет" или всё-таки "Иванов Петр Васильевич, услуга -
кастрация ейного кота Васьки"?

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Подскажите насчет NULLов в базе
    #33215493
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky"Боди" - это всего-лишь ммм... сырье для предоставления
ачём споришь, балезный? Если о:
locky кого в книгу регистрации пишут? "Кот
Васька осьмнадцати лет" или всё-таки "Иванов Петр Васильевич, услуга -
кастрация ейного кота Васьки"?то там пишуть и хто, и кого. В разные графы токо.


Если быть точным, то меня интересовал вопрос, нужно ли к боди рисовать отдельную таблицу фактов жизни, когда оно выступает only like a body. Именно на способности неких атрибутов выступать в разном качестве я и говорил. И ничего более. Т.ч. мнение, что "факк-ты" есмь у неких других боди тут как бы показывает отсутствие гляделок или понималки у третьей разновидности боди.
"а он всегда был спорщиком
припрут к стене - откажеца
прошёл он корридорчиком
и кончил
(стенкой, кажеца)"
...
Рейтинг: 0 / 0
25 сообщений из 53, страница 2 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Подскажите насчет NULLов в базе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]