Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
Стоит ли В справочнике иметь "пустой" элемент, для того чтобы в полях , использующих этот справочник поставить признак "Обязательное". Т.е. Пусть есть таблица "Клиенты" и таблица "Города" В таблице "Клиенты" поле "ИзГорода" - ВК на "Города" Бывает что не известно из какого города клиент, соответсвенно "ИзГорода"=NULL, тогда в запросе придётся использовать LEFT JOIN, а если сделать "ИзГорода" обязательным и в "Города" добавить "---", тогда INNER JOIN. Вопросы : Кто как ? Почему? IMHO, Mon$te® ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 13:07 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
Ну не зря же существует null. Он строго означает "нет значения", а все другое - зависит от контекста. Т.е. в общем случае придется для каждой сущности иметь свое значение "Null" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 13:15 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
4d_monsterВопросы : Кто как ? Почему? Иногда отсутствие NULL повышает производительность запросов (типа при where field_name is null индексы не работают). Но все это надо взвешивать в каждом конкретном случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 13:36 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
Спасиббо за ответы. Пример утрирован. По логике задачи мне казалось что надо использовать и null и " - - - ". Но было "пожелание единообразия ... и посмотреть что без null лучше...". Как только стал вводить тестовые строки (прям в таблицы), понял: надо и то и другое. IMHO, Mon$te® ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 13:41 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
некоторые утверждают что присутствие null свидетельствует об ошибке проектирования. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 14:31 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
> По логике задачи мне казалось что надо использовать и null и " - - - ". По логике задачи нет и не может быть null значений и тем более непонятных значений "---". Описанные связи огранизуются только и исключительно посредством третьей таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 14:58 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
Абсолютно правильная система (идеальная, как идеальный газ): 1. не должна иметь null 2. для ввода первичных данных должен использоваться только insert (никаких update и delete не должно быть вообще в системе) 3. для отчетов и вывода данных использовать только select В принципе это реализуемо, но на практике не всегда целесообразно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 15:16 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
2 Роман Дынник 2 Old Nick Что-то я не въехал. Это новогодний прикол? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 15:44 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
Поясню для непонимающих приколов :-) 1. Можно реализовать города в виде папок, тогда клиентов можно хранить кроме папки Клиенты еще и в конкретных городах, как в папках. При этом не значит что клиентов будет 2, просто ссылка на клиента будет в двух папках. В таком случае если какой-то клиент находится только в папке Клиенты, это значит что город для него еще не определен. В дальней его можно будет поместить в конкретную папку Город. Почитайте Анатолия Тенцера, у него это хорошо описано. И у меня сделано так же. 2. Часто для изменения данных используют update записи, но если мы хотим хранить всю историю изменений, то можно просто добавлять еще одну запись с указанием даты изменения. В таком случае ни одна редакция объекта не пропадет. Только это нужно не всегда и не везде. Некоторые объекты не требуют истории хранения, а в некоторых случаях нет смысла добавлять запись, если мы просто ошиблись в наименовании и хотим поправить. Тоже не менее часто необходимо удалять объекты не физически, а логически, чтобы иметь возможность восстановления записи. Для этого достаточно создать создать таблицу Deleted и помещать туда указатели на удаленные объекты. 3. При правильно построенной архитектуре сложные выборки будут не нужны, только группировки с вычислениями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 16:07 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
1. Понял очень смутно, видимо привык объясняться в терминах реляционной модели, т.е. в таблицах. Однако насчет null - абсолютно несогласен, это в порядке вещей и очень даже логично 2. Конечно можно и так, но как раз по моему опыту, история изменений часто храниться только определенный период (на случай разборок или отката неправильных изменений). В этом случае в основной таблице храниться только текущее значение, а в исторической - предыдущая, причем историческая периодически очищается от старых значений. Если мы будем в основной таблице только вставлять записи, то она будет шибко расти. Так что все зависит от задачи. 3. Против SELECT для запросов я и не возражал, только непонятно - сложная выбока и SELECT - это не одно и то же? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 16:21 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
Я ведь написал, что это в идеале :-) На практике полностью придерживаться этих правил далеко не всегда целесообразно -------------------- Не учи отца и баста! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 16:23 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
tru55 А знаешь откуда взялся на самом деле null? Его ведь не специально придумали. Возмем к примеру таблицу в которой хранится вся информация базы, как она будет выглядеть? Table_ID Column_ID Row_ID Value так вот, если у нас в какой-то ячейке пользовательской таблицы значение null, то это значит, что для этой ячейки нет записи в вышеприведенной таблице и при формировании пользовательской таблицы в этом месте просто получается дыра. Это можно хорошо проследить если поработать с кубами (OLAP). Именно поэтому -------------------- Не учи отца и баста! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 16:29 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
С OLAP не работал, спорить не буду. Однако простой пример (из любимой Oracle обучалки) - для простоты. Есть отделы department dep_id dep_name Есть служащие employees emp_id emp_name dep_id где dep_id - внешний ключ на department Завожу я служащего, который еще не приписан к отделу. Что в таком случае должно содержать dep_id ? И ведь подобных случаев масса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 16:36 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
А ведь служащий может быть не к одному отделу приписан. Допустим я в отделе ИТ и при этом мне не хватает денег и я решил подрабатывать техничкой по вечерам, а потом еще и сторожить по ночам :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 16:39 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
> Однако простой пример (из любимой Oracle обучалки) Для "обучалки" такой пример подойдет. Для проектирования - нет. Учите матчасть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 16:55 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
2 tru55 > 2 Роман Дынник > 2 Old Nick > > Что-то я не въехал. Это новогодний прикол? Ага. Приколисты. Как они, интересно, собираются работать без null с таким случаем: "на сегодня не введен курс рубля к баксу" --- ping eblan.us ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 16:58 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
:-))))))))))))))))))))))))))))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 17:06 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
Old NickА ведь служащий может быть не к одному отделу приписан. Допустим я в отделе ИТ и при этом мне не хватает денег и я решил подрабатывать техничкой по вечерам, а потом еще и сторожить по ночам :-) Понятно, что в этом случае связь будет реализована через третью таблицу. Я говорил про случай, когда связь четко один-к-одному. Или вы полагаете, что в реальных системах такого не бывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 17:09 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Однако простой пример (из любимой Oracle обучалки) Для "обучалки" такой пример подойдет. Для проектирования - нет. Учите матчасть. А чем такой пример нереален? И почему вы думаете, что я новичек в БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 17:11 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
Бывает конечно, при упрощении модели. Если допустим нам в системе понадобился набор из 10 сущностей, которые наследуются от одной базовой и отличаются от нее одним единственным полем, то вместо огорода из 11 таблиц (одна для базовой сущности, и 10 для наследников, в каждой из которых по одному дополнительному полю) можно хранить все эти сущности в одной таблице и для записей относящихся к другим типам проставлять в поле NULL. -------------------- Не учи отца и баста! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 17:13 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
на сегодня не введен курс рубля к баксу хранение null и проверка на null это разные вещи. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 17:14 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
tru55, я не говорю что примеры приведенные Вами нельзя реализовывать. Вполне возможно и допустимо. Просто меня что-то понесло сегодня :-) -------------------- Не учи отца и баста! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 17:23 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
Такое бывает довольно часто. Я поступаю так. Допустим имеется таблица Люди и справочник Города Люди (Имя char not Null, КодГорода int not Null default 0) Города (КодГорода Int identity (0,1), Имя Null) В Городах имею запись (0,Null) Для людей, у которых неизвестен Город - КодГорода=0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 17:29 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
А если нужно вывести отчет по людям в городе и при этом пользователь должен подставить город выбрав его из справочника? Если не выбрать никакой город, то как вести себя? Вывести все записи или те что с 0? Лучше иметь в справочнике неопределенный город и подставлять его по-умолчанию. Красивее получается. -------------------- Не учи отца и баста! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 17:33 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
> А чем такой пример нереален? Почему нереален? Если Вы говорите, что он есть в учебной бд, то он наверняка там есть. Его реальность сомнений не вызывает. > И почему вы думаете, что я новичек в БД? Я ничего по этому поводу не думаю. Я просто ответил на Ваш вопрос. "Учите матчасть" относится к тому, что вопрос использования null значений освещается практически в любой литературе по реляционным базам данных, потрудитесь прочесть хоть что-нибудь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 17:43 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=32851849&tid=1546103]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
19ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 265ms |
| total: | 454ms |

| 0 / 0 |
