|
|
|
null значения
|
|||
|---|---|---|---|
|
#18+
Использование null значений является спорным вопросом. В разрабатываемой БД я бы хотел максимально отказаться для их использования. Если для полей с числовыми и символьными типами данных в качестве значений по умолчанию можно использовать "0", " ", или "—", то как быть полями с типом данных "дата-время"? Какие использовать значения по умолчанию, когда, например, неизвестна дата поставки товара? В этом случае без NULL не обойтись? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2009, 12:05 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
авторЕсли для полей с числовыми и символьными типами данных в качестве значений по умолчанию можно использовать "0", " ", или "—" Поступать по аналогии. Вы "договорились", что значение "—" - это "пустое значение для строки". Выберите себе некую дату, и используйте её как "пустую". ------------------------- There’s no silver bullet! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2009, 13:13 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
Наличие "null" имеет следующие положительные свойсва : не засоряется индекс : имееет дополнительную смысловую нагрузку например "ОТСУТСТВИЕ ДАННЫХ" : занимает меньше места чем данные-заглушки. Непутайте с данными которые имеют значения по умолчанию ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2009, 15:14 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
senleftИспользование null значений является спорным вопросом.С чего бы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2009, 21:03 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
miksoftsenleftИспользование null значений является спорным вопросом.С чего бы? авторИспользование понятия NULL в реляционной модели является спорным вопросом. Кодд [77] рассматривает понятие NULL как составную часть этой модели, а дрyrие специалисты считают этот подход неправильным, полаrая, что проблема отсутствующей информации еще не до конца понята, удовлетворительное ее решение не найдено, а потому включение определителя NULL в реляционную модель является преждевременным [87]. БАЗЫ ДАННЫХ Проектирование, реализация и сопровождение Теория и практика. Томас Коннолли Каролин Бегг _ Мне интересно с практической точки зрения, кто какие использует (и использует ли) значения-заменители NULL для различных типов данных. А вопрос "использовать - не использовать" - тут мне кажется спорить бессмысленно, каждый решает для себя и ищет рациональное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2009, 23:01 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
В качестве заменителя - нет, и никогда. Ибо глупость. Единственное неудобство может быть при использовании той же функции sum, но coalesce или ее аналоги - спасает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2009, 00:33 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
1. Да по сути вы ничего не меняете, раз null-значения заменяете на специальные. null - тоже специальное значение. 2. Попробуйте посчитать avg по числовым полям, содержащие 0 вместо null. Понятно, что можно использовать where value <> 0, но это уже искусственно. 3. А что, если реально нужно хранить значение 0? Сможете найти такое значение, которое точно не будет нигде использовано? 4. Избавляются от null-ов путем дальнейшей нормализации БД (4/5 НФ, Домен-Ключ итп извраты :), а не заменой их на специальные значения. 5. Теоретики бывают зачастую далеко от практиков. Дейт тоже против null-ов, однако иногда практичнее завести null-значения, нежели соединять десятки таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2009, 07:51 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
KREDНаличие "null" имеет следующие положительные свойсва : не засоряется индекс : имееет дополнительную смысловую нагрузку например "ОТСУТСТВИЕ ДАННЫХ" : занимает меньше места чем данные-заглушки. Непутайте с данными которые имеют значения по умолчанию ! Демократия это не только "За" и "Против", но и возможность воздержаться (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2009, 10:07 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
senleftmiksoftsenleftИспользование null значений является спорным вопросом.С чего бы? авторИспользование понятия NULL в реляционной модели является спорным вопросом. Кодд [77] рассматривает понятие NULL как составную часть этой модели, а дрyrие специалисты считают этот подход неправильным, полаrая, что проблема отсутствующей информации еще не до конца понята, удовлетворительное ее решение не найдено, а потому включение определителя NULL в реляционную модель является преждевременным [87]. БАЗЫ ДАННЫХ Проектирование, реализация и сопровождение Теория и практика. Томас Коннолли Каролин Бегг _ Мне интересно с практической точки зрения, кто какие использует (и использует ли) значения-заменители NULL для различных типов данных. А вопрос "использовать - не использовать" - тут мне кажется спорить бессмысленно, каждый решает для себя и ищет рациональное решение.Если "интересно с практической точки зрения", то довольно странно ссылаться на сугубо теоретические источники. Кроме того, вся логика существующих СУБД построена на обработку в качестве особого значения именно NULL. Конечно, в большинстве случаев вы можете с помощью специальных выражений использовать другое значение, но это может выйти вам очень дорого по ресурсам и быстродействию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2009, 10:25 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
senleftИспользование null значений является спорным вопросом. В разрабатываемой БД я бы хотел максимально отказаться для их использования. Если для полей с числовыми и символьными типами данных в качестве значений по умолчанию можно использовать "0", " ", или "—", то как быть полями с типом данных "дата-время"? Какие использовать значения по умолчанию, когда, например, неизвестна дата поставки товара? В этом случае без NULL не обойтись? имхо, идиотский стиль. не отказывайтесь от нул-значений. работаю с БД, в которых очень часто встречается именно описываемая вами ситуация. сначала долго ругался, сейчас смирился, но все равно рычу мысленно. например в поле дата-время по умолчанию содержится значение 1876-12-31 00-00-00, и это в полях увольнения/приема на работу, или для даты рождения. приходится в запросах сравнивать даты с днем победы или с днем великой октябрьской революции , потому что хз может в след.версиях БД таки будут нул, а переделывать старые проги желания нет. опять же, при анализе экономич. или бухгал.данных проблемно понять, 0 -это отсутствие данных или просто значение такое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2009, 10:58 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
Если очень хочется - то можно включить опцию в БД чтобы NULL=NULL было TRUE, возможно это решит ваши проблемы. А спец значения в полях очень сильно зависят от предметной области. Например для лотереи 6 из 36 число 0 или 37 можно запросто делать "спец числом" а вот в вашей области - вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2009, 11:38 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
Дмитрий16Если очень хочется - то можно включить опцию в БД чтобы NULL=NULL было TRUEЭто в какой СУБД такое можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2009, 12:01 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
miksoftДмитрий16Если очень хочется - то можно включить опцию в БД чтобы NULL=NULL было TRUEЭто в какой СУБД такое можно? Код: plaintext 1. 2. 3. 4. результатMicrosoft SQL Server 2005 - 9.00.3042.00 (Intel X86) ...... (строк обработано: 1) ----------- 1 (строк обработано: 1) ----------- (строк обработано: 0) зы. Правда, я этим пока не пользовался. По старинке привык ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2009, 12:43 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
Important: In a future version of SQL Server, ANSI_NULLS will always be ON and any applications that explicitly set the option to OFF will generate an error. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. так шта.... ------------------------- There’s no silver bullet! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2009, 13:02 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
darkbird81senleftИспользование null значений является спорным вопросом. В разрабатываемой БД я бы хотел максимально отказаться для их использования. Если для полей с числовыми и символьными типами данных в качестве значений по умолчанию можно использовать "0", " ", или "—", то как быть полями с типом данных "дата-время"? Какие использовать значения по умолчанию, когда, например, неизвестна дата поставки товара? В этом случае без NULL не обойтись? имхо, идиотский стиль. не отказывайтесь от нул-значений. работаю с БД, в которых очень часто встречается именно описываемая вами ситуация. сначала долго ругался, сейчас смирился, но все равно рычу мысленно. например в поле дата-время по умолчанию содержится значение 1876-12-31 00-00-00, и это в полях увольнения/приема на работу, или для даты рождения. приходится в запросах сравнивать даты с днем победы или с днем великой октябрьской революции , потому что хз может в след.версиях БД таки будут нул, а переделывать старые проги желания нет. опять же, при анализе экономич. или бухгал.данных проблемно понять, 0 -это отсутствие данных или просто значение такое. +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2009, 14:57 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
lockyтак шта.... дык, я почему и не пользовался. не по-людски это, нуллы сравнивать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2009, 15:26 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
В разрабатываемой БД я бы хотел максимально отказаться для их использования. И ради бога. Поставь условие, запрещающее использовать NULL, поставь значение по умолчанию и не используй. Только как ты будешь различать 0, введенный пользователем, и 0 проставленный по умолчанию? Я сейча работаю с такой системой - порой такая возможнеость нужна. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2009, 18:44 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
U-geneВ разрабатываемой БД я бы хотел максимально отказаться для их использования. И ради бога. Поставь условие, запрещающее использовать NULL, поставь значение по умолчанию и не используй. Только как ты будешь различать 0, введенный пользователем, и 0 проставленный по умолчанию? Я сейча работаю с такой системой - порой такая возможнеость нужна. Код: plaintext 1. 2. Ну не везде же я буду использовать "0" как значение по умолчанию, например для поля "Сумма предоплаты" это вполне допустимо - не важно ввел это пользователь или это значение по умолчанию. В каждом отдельном случае - свое решение. Например для дат, значение которых неизвестно, кроме null вредли что-то можно использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2009, 22:00 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
senleft, все-таки поясните, зачем для понятия "значение не задано" придумывать что-то новое? Либо у Вас так мало проблем, что Вы выдумываете себе новые, либо Вы не такой ("значение не задано") смысл вкладываете в "NULL". Уточните, пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2009, 14:32 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
1. По поводу выбора значения для даты: посмотрите в мануалах Вашей СУБД, клиента и возьмите максимальную минимальную. 2. U-gene Только как ты будешь различать 0, введенный пользователем, и 0 проставленный по умолчанию? +1024 3. Я хоть и сам ярый сторонник юзания NULL'ов, но когда встал вопрос о выборке данных из временного интервала, которые могут содержать NULL, в случае, если неопределено, согласился с "магическими" датами и простым запросом: Код: plaintext 1. "Helo, word!" - 17 errors 56 warnings ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2009, 16:50 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
Тоже, но с нулом. По-моему не намного сложнее select SmthField from SmthTable where @DateActual between DateBegin and ISNULL(DateEnd, GETDATE()+99999) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2009, 17:04 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2009, 17:09 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
KRED Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2009, 20:24 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
miksoft и прощайте, индексы... это само - собою... тока вот: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Id DateBegin DateEnd351917-06-291963-11-22421946-08-19null421946-07-06null а нужно ( в контексте ) Id DateBegin DateEnd351917-06-291963-11-22 _________________ "Helo, word!" - 17 errors 56 warnings ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2009, 21:46 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
Ex_Soft, про индексы я пока промолчу так как есть более интерестная тема про мой неправильный запрос :-) что собственно принимать под значением колонок DateBegin,DateEnd "NULL" ? Если понятие что дата не определена и "открыта" , то запрос нашол все возможные. Тоесть Ваши претензии мне не понятны. Если считать что данных "нету" то просто убрать условия (OR ... IS NULL) , но свой запрос я привёл по типу запроса Код: plaintext где из условия видно что если поле DateEnd равно NULL то DateEnd будет охрененно большой и результат будет темже. А что на счот того "контекста" так моё скромное мнение ... нужно организовать "версионность объектов". Хотя детально в тему не въежал и могу ошибаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2009, 23:46 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
miksoft, ваша субд не умеет индексировать значения "NULL" ? или в чом собственно проблема ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2009, 23:49 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
KRED Ваши претензии мне не понятны Да - приношу свои извинения. Погорячился... Совсем уже запутался с этой историографией... BTW, KRED нужно организовать "версионность объектов". Хотя детально в тему не въежал Ну, дык ... Если ЭстЪ время и желание - вЪедтье и скажите свое веское слово... _________________ "Helo, word!" - 17 errors 56 warnings ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2009, 07:03 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
KREDmiksoft, ваша субд не умеет индексировать значения "NULL" ? или в чом собственно проблема ?Оракл, например, не хранит в индексе ссылки на записи, которые по всем полям, включенным в индекс, имеют значение NULL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2009, 09:37 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
KOT MATPOCKuHsenleft, все-таки поясните, зачем для понятия "значение не задано" придумывать что-то новое? Я не придумываю новое значение для понятия "значение не задано". KOT MATPOCKuHЛибо у Вас так мало проблем, что Вы выдумываете себе новые, либо Вы не такой ("значение не задано") смысл вкладываете в "NULL". Уточните, пожалуйста Null я понимаю как "значение не известно". Я всего лишь хочу избавиться от обработки null там, где это возможно. Например, в своей БД я могу вполне отказаться от null в поле "сумма предоплаты" и подставить значение по умолчанию "0" (не важно ввел ли это значение пользователь или сумма действительно неизвестна, на результат это не влияет). А вот с полем "дата предоплаты" отказаться от null не так уж и просто. Поэтому я создал эту тему, чтобы узнать как другие поступают в данных ситуациях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2009, 12:43 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
senleft Я всего лишь хочу избавиться от обработки null там, где это возможно. Например, в своей БД я могу вполне отказаться от null в поле "сумма предоплаты" и подставить значение по умолчанию "0" (не важно ввел ли это значение пользователь или сумма действительно неизвестна, на результат это не влияет). А вот с полем "дата предоплаты" отказаться от null не так уж и просто. Поэтому я создал эту тему, чтобы узнать как другие поступают в данных ситуациях. Лично я такого же мнения как и вы :-) Как минимум в двух выше приведённых примерах . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2009, 15:53 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
KREDsenleft Я всего лишь хочу избавиться от обработки null там, где это возможно. Например, в своей БД я могу вполне отказаться от null в поле "сумма предоплаты" и подставить значение по умолчанию "0" (не важно ввел ли это значение пользователь или сумма действительно неизвестна, на результат это не влияет). А вот с полем "дата предоплаты" отказаться от null не так уж и просто. Поэтому я создал эту тему, чтобы узнать как другие поступают в данных ситуациях. Лично я такого же мнения как и вы :-) Как минимум в двух выше приведённых примерах . дык вроде это называется не авторизбавиться от обработки null там, где это возможно, а просто нормальное проектирование БД. ну не везде же позволять использовать нул, ведь это и так ясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2009, 16:15 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
KREDsenleft Я всего лишь хочу избавиться от обработки null там, где это возможно. Например, в своей БД я могу вполне отказаться от null в поле "сумма предоплаты" и подставить значение по умолчанию "0" (не важно ввел ли это значение пользователь или сумма действительно неизвестна, на результат это не влияет). А вот с полем "дата предоплаты" отказаться от null не так уж и просто. Поэтому я создал эту тему, чтобы узнать как другие поступают в данных ситуациях. Лично я такого же мнения как и вы :-) Как минимум в двух выше приведённых примерах .У разработчиков стандарта SQL расходятся мнения с Вашим по части агрегатных функций. ;) В случае с AVG() как раз без NULL-значения будет трудно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2009, 20:32 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
Senya_LУ разработчиков стандарта SQL расходятся мнения с Вашим по части агрегатных функций. ;) В случае с AVG() как раз без NULL-значения будет трудно. А что мешает с влучае с AVG() отказаться от NULL для этой колонки ? Если у меня есть ссылка на справочник то я могу использовать NULL , а AVG() как раз и не будет использоваться ... ибо мерять температуру по больнице нет смысла ... если колонка с данными то нужно решить ставить на неё ограничение НОТ НУЛЛ или нет и от суда топтать в сторону использования АВГ ... ЗЫ может подскажете в каких моментах использование НУЛЛ и АВГ/СУМ приводит к логической ошибке ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2009, 13:05 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
KREDа AVG() как раз и не будет использоваться ... ибо мерять температуру по больнице нет смысла ... Хм. Вообще-то средняя величина предоплаты - это не "средняя температура по больнице" и должна считаться безо всяких нулей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2009, 14:10 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
KREDв каких моментах использование НУЛЛ и АВГ/СУМ приводит к логической ошибке ? SUM поля NULL игнорирует. Поэтому само по себе использование SUM привести к ошибке не может, пока результат выполнения SUM не пытаться интерпретировать не как SUM. AVG по сути SUM/COUNT, соответственно, беда будет в COUNT. Точнее, в интерпретации того COUNT, который сервер будет использовать в AVG. Нахождение средней величины предоплаты Вам уже привели в качестве примера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2009, 14:15 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
senleftНапример, в своей БД я могу вполне отказаться от null в поле "сумма предоплаты" и подставить значение по умолчанию "0" Как раз все наоборот. Ограничение на значение этого поля - NULL или больше нуля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2009, 14:16 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов, Можно долго спорить на этот счот ... , но я не понимаю почему вы предираетесь к моим словам ... в Вашем случае это "наверное" не подходит из за присутствия НУЛЛ в колонке , но почему : авторКак раз все наоборот. Ограничение на значение этого поля - NULL или больше нуля. Мне не понятно ... Если принимать под значением НУЛЛ отсутствие платежа , то средние будет считатьса отлично (по присутствующим платежам , а не по всем возможным) ... Но скажу сразу что легче было бы отказаться в этом случае от НУЛЛ и заноссить в колонку "0" . Что не будет противоречить логике ... я не прав ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2009, 14:26 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов SUM поля NULL игнорирует. Поэтому само по себе использование SUM привести к ошибке не может, пока результат выполнения SUM не пытаться интерпретировать не как SUM. букварик Код: plaintext 1. Код: plaintext 1. (sum(sales)-sum(quota)) != sum(sales-quota) _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2009, 14:27 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовKREDа AVG() как раз и не будет использоваться ... ибо мерять температуру по больнице нет смысла ... Хм. Вообще-то средняя величина предоплаты - это не "средняя температура по больнице" и должна считаться безо всяких нулей. Из каких убеждений вы решили использовать для такого поля значения НУЛЛ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2009, 14:28 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
Ex_Soft(sum(sales)-sum(quota)) != sum(sales-quota) Вам не кажется, что сложение и вычитание NULL не то же самое, что SUM по полю, которое может принимать значения NULL? KREDно я не понимаю почему вы предираетесь к моим словам Я крайне редко придираюсь к словам из-за спортивного интереса. Возможно, я что-то невнятно объяснил. Тогда спросите об этом подробнее и яснее. [quot KRED] Мне не понятно ... Если принимать под значением НУЛЛ отсутствие платежа , то средние будет считатьса отлично (по присутствующим платежам , а не по всем возможным) ... Но скажу сразу что легче было бы отказаться в этом случае от НУЛЛ и заноссить в колонку "0" . Что не будет противоречить логике ... я не прав ? Во-первых, если Вы говорте о неком поле как о предоплате, то это либо плановое значение предоплаты, либо какая-то очень узкая специфика, потому что предоплат (предварительных платежей) фактически может быть много, а нормальный календарь платежей на одном поле не сделать даже в качестве дипломной работы. Во-вторых, величина предоплаты либо положительна, либо предоплаты нет вообще. Нельзя заплатить 0 денег, это нонсенс. В этом смысле предоплата от обычного платежа ничем не отличается. Если не пытаться привнести логику, которую еще надо обосновать по месту, то вырисовывается совершенно четкий constraint, который я и написал выше. Чтобы использовать другой constraint, необходимо его обосновать. Вы в состоянии обосновать, что default 0 not null + лишняя логика в запросах будут чем-то лучше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2009, 14:59 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
KREDИз каких убеждений вы решили использовать для такого поля значения НУЛЛ ? Контора может работать как с использованием предоплаты, так и без использования предоплаты. Предоплата в первом случае составляет 30%. Если Вы будете забабахивать нули в преоплату, то в один прекрасный момент обнаружите, что средняя предоплата почему-то стала 10%, а не 30%, и чтобы все вернуть на круги своя, придется править запросы, которые бы исключали договора без предоплаты из расчета средней предоплаты по договорам. Оно Вам надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2009, 15:04 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов, по сути мне пока без разницы разрешено ли для предоплаты НУЛЛ или нет ... хотел узнать какой смысл вы в него вкладываете. И по сути наши взгляды схожи ! Но всё началось с того что я ответил Senya_LУ разработчиков стандарта SQL расходятся мнения с Вашим по части агрегатных функций. ;) В случае с AVG() как раз без NULL-значения будет трудно. На что я ответил КРЕД А что мешает с влучае с AVG() отказаться от NULL для этой колонки ? Если у меня есть ссылка на справочник то я могу использовать NULL , а AVG() как раз и не будет использоваться ... ибо мерять температуру по больнице нет смысла ... если колонка с данными то нужно решить ставить на неё ограничение НОТ НУЛЛ или нет и от суда топтать в сторону использования АВГ ... ЗЫ может подскажете в каких моментах использование НУЛЛ и АВГ/СУМ приводит к логической ошибке ? В этом вы увидели где то красную тряпку ... и ответили мне Сергей Васкецов Хм. Вообще-то средняя величина предоплаты - это не "средняя температура по больнице" и должна считаться безо всяких нулей. ?????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2009, 15:37 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
KREDпо сути мне пока без разницы разрешено ли для предоплаты НУЛЛ или нет ... хотел узнать какой смысл вы в него вкладываете. Смысл NULL в предоплате по договору - что по договору не требуется (или не планируется, зависит от постановки) предоплата. Но а) она может быть, даже если и не требуется, б) фактически платежи по предоплате - это отдлельные записи, а не просто одно число. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2009, 15:47 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
KREDСергей Васкецов Хм. Вообще-то средняя величина предоплаты - это не "средняя температура по больнице" и должна считаться безо всяких нулей. ?????? Я имел в виду, что средняя величина предоплаты (особеннов разных разрезах, например, по менеджерам) может иметь вполне обоснованный интерес и не является сферическим конем в вакууме, в отличие от средней температуры по больнице, не имеющей большого смысла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2009, 15:49 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
Мое мнение по теме: Возможность использования NULL-значений в полях - это инструмент. Пользоваться им или нет - решать, наверное, каждому самостоятельно. Однако, если NULL используется, то нужно дать четкое определение значения NULL для конкретного поля. Если вместо NULL используется другое значение, то тоже нужно определить его понимание и использование. Далее. Автор и товарищи упоминают про удобство написания запросов или производительность (индексы), на что я отвечу - по аналогии с нормализацией. Сначала система сторится как нормализованная (+прозрачная +понятная), а потом начинаем заниматься тюнингом производительности и прочего => появляется денормализация. Так и с NULLами: лучше использовать, но в некоторых отдельных случаях бывает удобнее заменить их на нечто другое: или на некоторое значение или таблицей с подчиненными, в т.ч. отсутствующими записями (неявный NULL). И еще не обсуждалось в теме: с NULL для некоторых типов полей получаем выигрыш в занимаемом пространстве, а значит и небольшой выигрыш в производительности. Про теоретиков могу сказать следующее: обычно данные таблицы (сущности, ...) рассматриваются как набор векторов в некотором пространства (размерность задается количеством полей). Тогда возникает вопрос и недопонимание: что значит одна или несколько координат вектора не заданы??!! Отсюда и непонимание теоретиками NULLов (ИМХО, как математика-теоретика в прошлом) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2009, 07:26 |
|
||
|
null значения
|
|||
|---|---|---|---|
|
#18+
Я работаю в сфере хранилищ данных...так вот у нас - в таблицах, данные из которых отображаются в отчетах, все поля not NULL....в плане дат - используем либо очень большую дату, либо очень маленькую - все зависит от использования конкретного поля. А в плане каких-то сумм-amount-ов - я видел такой подход - null заполняют средним значением, например: Amount ------- 2 4 6 NULL В таком случаи NULL заполняют 4 = ....(2+4+6)/3 http://www.ralphkimball.com/html/designtipsPDF/DesignTips2003/KimballDT43DealingWith.pdf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2009, 23:58 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1543278]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
173ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
75ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 517ms |

| 0 / 0 |
