|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
LSVhVosttя большой противник «промежуточных вычислений» (т.е. бизнес-логики) в СУБД, поэтому меня это не парит ))А как Вы делаете сложный отчет с 50 колонками из 5-6 источников ? Человек страшно далек от BI, OLAP и прочих DWH ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 11:23 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
Ivan DurakLSVпропущено... А как Вы делаете сложный отчет с 50 колонками из 5-6 источников ? Человек страшно далек от BI, OLAP и прочих DWHЭто в чей адрес реплика ? Если в системе просто нет ОЛАП/БИ/ДВХ (нецелесообразно). А неск. сложных отчетов есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 13:17 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
LSVhVosttя большой противник «промежуточных вычислений» (т.е. бизнес-логики) в СУБД, поэтому меня это не парит ))А как Вы делаете сложный отчет с 50 колонками из 5-6 источников ? у нас дофига отчётов, где колонок и по-более и источников по-более, и это ещё с учётом исторических данных и данных, полученных из внешних источников. удивить 50-ю колонками, не получится. да, без логиги в БД всё прекрасно получается делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 15:08 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
Ivan DurakЧеловек страшно далек от BI, OLAP и прочих DWH т.е. вы прямо утверждаете, что BI, OLAP и прочие DWH, без логики в БД невозможен или нормальной жизни нет? а вы точно разработчик, а не начитались каких-то терминов с хабра? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 15:10 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
hVostt... удивить 50-ю колонками, не получится. да, без логиги в БД всё прекрасно получается делать. Что-то да, действительно непонятно, при чем тут логика в БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 16:58 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
Считаю null полноценным определением "ничего, пусто". А ноль (0) всего лишь цифра. Как и все остальные. Поэтому заменять им "ничего" не стоит. На уровне микросхем используются три значения - 0, 1 и "ничего" в виде разного напряжения или его отсутствия. Теоретически микросхемный "0" может иметь напряжение 0-1 вольт, но 0 практически не используется, так как это означало бы сплошное обнуление при отсутствии питания. Отсутствие напряжения, это не "0", а "ничего" (null). Так и в "бизнес-логике" считаю употребление null вполне оправданным. "Если null существует, значит это кому-то нужно". ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 17:41 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
hVosttя большой противник «промежуточных вычислений» (т.е. бизнес-логики) в СУБД, поэтому меня это не парит )) A+B это уже промежуточные высичления. К тому же надо как-то сопрягаться с бизнеслогикой :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 19:22 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
Смешной топик. Впрочем, другим он не мог быть, так как стартовал с ухмылочек. Юзер 01 ...есть ли смысл для "бизнес" - значений... Проблема со смыслами не в том, чтобы их куда-то "вложить", а в том, чтобы после такого "вложения" использовать полученный смысл непротиворечиво со всеми предыдущими смыслами, существовавшими до такого "вложения". Юзер 01Ну вот кому конкретно станет плохо, когда length('') станет равен 0? В ту же секунду станет плохо каждому , кто использует конкатенацию в такой системе. Потому что, при таком раскладе, конкатенаций, внезапно, должно образоваться две . Иначе нет смысла в раличении Null и ''. А length, возращающий ноль применительно к null - нонсенс. То есть, буквально, length('') внезапно ставший возвращать ноль, означает, что старую математику, обслуживавшую тип данных, из коробочки вынули, и новую туда поставили, не обращая внимания на использующий её клиентский код. В переводе на русский - системообразующий код может меняться. Но правильно он меняется только путем замены самой системы, и, автоматически, вместе с заменой (переписыванием) всей базы использующего возможности системы клиентского кода. Юзер 01Или AVG() станет возвращать действительно средний уровень дохода в семье именно на человека, а не средний уровень дохода только среди получающих этот доход? Это псевдовопрос, то есть, не вопрос. Используя Avg, таким, каков он есть сейчас, вы можете решить обе задачи. А тот, который вам померещился, может решать только одну из них. Юзер 01Вот и вопрос: есть ли смысл для "бизнес" - значений использовать типы с ограничениями not null & (devault value = 0|'') ? Не создаст ли сие каких-либо неудобств в дальнейшем? Тут божий дар и яичница. Божий дар - это "бизнес-значения", а яичница разведена в значениях по умолчанию. Исходный смысл значений по умолчанию состоит именно в представлении "естественных" бизнес-значений. Именно "бизнес-значений". Так, если у вас есть пара полей с датой, для одного из них - даты начала, чаще всего естественно объявить ограничение not Null, а для второго - дата завершения, может возникать естественное значение по умолчанию, сорта - Date '9999-12-31'. Это значение - вполне себе бизнес значение, никаким специальным образом не отличимое ни от какого другого пригодного для бизнеса значения даты, допустимого для указания в этом поле. И не требующее специальной математики для своей интерпретации. Имеющая физический смысл "актуальной бесконечности" времени действия. Существо вашего предложения здесь сводится к тому, чтобы в качестве значений по умолчанию указывать именно "не-бизнес-значения". Специальные стоп-значения, не имеющие бизнес-смысла, и необходимые только для имитации "отказа" от null. Между тем: a) это не имеет никакого отношения к "отказу от null". Это замена "универсального" null на специфически типизированный - "не значение" для конкретного домена. Поэтому б) по смыслу это действие отлично от заявления значения по умолчанию. Это заявление специфического null для конкретного типа данных. То есть это просто другое свойство. И для самого поля базовой таблицы оно будет отсутствовать почти во всех системах. Вообще говоря, это свойство не самого поля, а типа данных, хранимого в этом поле. Ведет это к следующему: в) техника такого сорта обязывает вас, по крайней мере для себя, научиться явно отличать (на уровне предоставляемой вами библиотечной математики) - где вы задействуете значение по умолчанию именно для бизнес-значения, а где для представления такого "типизированного для конкретного поля Null". По существу - вы сначала умножаете сущности, а потом перемешиваете их, путем использования одного и того же sql-интерфейса. г) сам перемешал, самому и расхлебывать. Т.е. ответственность за интерпретацию, совместимость и непротиворечивость использования - целиком ваша. Вот есть у вас две таблицы T1 и T2. И в каждой по числовому полю - T1.P1 и T2.P2 И для T1.P1 естественным "не значением", решили вы, является ноль, а для T2.P2 - минус единица. Затем вы собственными руками рисуете union на этих двух таблицах: Select P1 as Eternity From T1 Union All Select P2 From T2 Теперь вы бог "своей системы", и никто, кроме вас не знает, каким должно оказаться "не значение" для свежеполученного поля Eternity Юзер 01Не создаст ли сие каких-либо неудобств в дальнейшем? Для богов не существует понятия "неудобство". Ну, просто иногда чуть-чуть не хватает времени, чтобы сложить слово "Вечность". Это не является неудобством. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 19:28 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
Юзер 01hVostt... удивить 50-ю колонками, не получится. да, без логиги в БД всё прекрасно получается делать. Что-то да, действительно непонятно, при чем тут логика в БД. непонятно к чему этот комментарий ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 20:22 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
Юзер 01Ну, можно придумать. Например, поле "Дата начала строительство". Пока оно null, строительство и не началось. Но ведь можно для этого задействовать какую-либо "волшебную константу", какой-нибудь? любой, у кого есть реальный опыт работы с базами данных всегда использует именно nulls для подобного рода вещей, никаких констант ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2018, 10:56 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
stenfordЮзер 01Ну, можно придумать. Например, поле "Дата начала строительство". Пока оно null, строительство и не началось. Но ведь можно для этого задействовать какую-либо "волшебную константу", какой-нибудь?любой, у кого есть реальный опыт работы с базами данных всегда использует именно nulls для подобного рода вещей, никаких констант"любой", "все знают" и пр. - типичные, довольно грубые приёмы демагогических и манипулятивных обобщений... Кароч низачод... Вы банальный 1С чтоле не видели ? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2018, 23:41 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
Юзер 01База, в в ней таблички. Каждая табличка имеет суррогатный ключ типа Int64. Таблички связаны между собой с помощью FK - ограничений. Каждое поле, ссылающееся по FK на другую табличку, может быть как "nullable", так и "not null", в зависимости от особенностей FK - связи. Тут удобство null-ов не вызывает сомнений. С полями, реализующими FK-связи, вопросов нет. ... А еще есть поля, несущие уже "кондовую" смысловую нагрузку: Фамилия, Стоимость, Адрес... Какой смысл разрешать для таких полей значение null? Ну, можно придумать. Например, поле "Дата начала строительство". Пока оно null, строительство и не началось. Но ведь можно для этого задействовать какую-либо "волшебную константу", какой-нибудь Код: sql 1.
... Для строк использовать значение "пустая строка", для чисел - "0". Null, конечно, сам по себе является такой "волшебной константой". Но ведь значение 0 (или "пустая строка") можно использовать в запросах наравне с остальными значениями, а с null-ами приходится кочевряжиться! Вот и вопрос: есть ли смысл для "бизнес" - значений использовать типы с ограничениями Код: sql 1.
? Не создаст ли сие каких-либо неудобств в дальнейшем? Вы с самого начала ввели себя в заблуждение. "Кондовые" поля - это результат денормализации. Фамилия, например - это самостоятельный тип сущности, имеющий свои свойства (такие, как происхождение, например). Так что - "не вызывает сомнений":) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2018, 16:55 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
Те, кто говорят что NULL усложняет запросы, просто не могут принять, что кроме двузначной логики есть еще и трехзначная, и придется ее выучить. Разучивать различные фреймворки не лень, а логику лень. Да взять хотя бы обычный битовый признак: 0 - задание завершилось не успешно 1 - задание завершилось успешно NULL - завершение задания еще не известно.. оно или выполняется в данный момент или еще не началось А теперь в игру включается NOT NOT 0 = 1 - отрицаем, что задание завершилось не успешно, получаем успешно NOT 1 = 0 - отрицаем, что задание завершилось успешно, получаем не успешно NOT NULL = NULL - отрицаем непонятное состояние, получаем непонятное состояние Пример надуманный, но показывает суть NULL-величин, кстати NULL это обозначение отсутствующего значения, а не величины. Просто принято говорить как значение, ради простоты общения и обозначения. Вообще правильно говорить NULL-маркер. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2018, 22:01 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
WebSharperhVosttя большой противник «промежуточных вычислений» (т.е. бизнес-логики) в СУБД, поэтому меня это не парит )) A+B это уже промежуточные высичления. К тому же надо как-то сопрягаться с бизнеслогикой :) Если речь только о чтении, то допустимо такие "приложения" делать. Но, в целом, любая "логика" в приложении делает такую информационную систему не системой БД. Тогда это еще можно как-то обсуждать, но, только не в разделе "Проектирование БД", потому что приложение БД, которое что-то вычисляет - это не приложение БД, или ПО очень низкого качества. Это просто основной закон теории БД:) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2018, 11:35 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
X-CiteТе, кто говорят что NULL усложняет запросы, просто не могут принять, что кроме двузначной логики есть еще и трехзначная, и придется ее выучить. Разучивать различные фреймворки не лень, а логику лень.Если бы она ещё была в стандартном SQL, эта логика NULL-ов... всё равно придётся исключения запоминать (а они сделаны исключительно для удобства в типичных случаях, похоже). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2018, 20:51 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
БредятинаЕсли речь только о чтении, то допустимо такие "приложения" делать. Но, в целом, любая "логика" в приложении делает такую информационную систему не системой БД. Тогда это еще можно как-то обсуждать, но, только не в разделе "Проектирование БД", потому что приложение БД, которое что-то вычисляет - это не приложение БД, или ПО очень низкого качества. Это просто основной закон теории БД:) Поздравляю с грибным трипом! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2018, 21:32 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
БредятинаТогда это еще можно как-то обсуждать, но, только не в разделе "Проектирование БД", потому что приложение БД, которое что-то вычисляет - это не приложение БД, или ПО очень низкого качества. Что такое "приложение БД"? Есть язык SQL в нем есть вычисления. A+B это уже вычисление. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2018, 09:19 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
hVosttБредятинаЕсли речь только о чтении, то допустимо такие "приложения" делать. Но, в целом, любая "логика" в приложении делает такую информационную систему не системой БД. Тогда это еще можно как-то обсуждать, но, только не в разделе "Проектирование БД", потому что приложение БД, которое что-то вычисляет - это не приложение БД, или ПО очень низкого качества. Это просто основной закон теории БД:) Поздравляю с грибным трипом! Бетховен никогда не был в Уфе. И потом - какое отношение имеет Бетховен к приложениям БД? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2018, 15:06 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
WebSharperБредятинаТогда это еще можно как-то обсуждать, но, только не в разделе "Проектирование БД", потому что приложение БД, которое что-то вычисляет - это не приложение БД, или ПО очень низкого качества. Что такое "приложение БД"? Есть язык SQL в нем есть вычисления. A+B это уже вычисление. На стороне БД? Очень хорошо, что нет никакого приложения БД. Я полагал, что у hVostt, которому Вы написали, оно есть:) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2018, 15:09 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
БредятинаБетховен никогда не был в Уфе. И потом - какое отношение имеет Бетховен к приложениям БД? Если не получается понятным для людей языком излагать мысли, можно найти себя на каком-нибудь другом поприще. У вас как раз это не получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2018, 22:12 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
hVosttБредятинаБетховен никогда не был в Уфе. И потом - какое отношение имеет Бетховен к приложениям БД? Если не получается понятным для людей языком излагать мысли, можно найти себя на каком-нибудь другом поприще. У вас как раз это не получается. Ты зачем это пишешь персонажу с ником Бредятина? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 07:03 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
skyANAТы зачем это пишешь персонажу с ником Бредятина? Ну я глянул в профиль, вроде не ПТ-шник же ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 09:39 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
БредятинаWebSharperпропущено... A+B это уже вычисление. На стороне БД? На стороне СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 12:03 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
hVosttБредятинаБетховен никогда не был в Уфе. И потом - какое отношение имеет Бетховен к приложениям БД? Если не получается понятным для людей языком излагать мысли, можно найти себя на каком-нибудь другом поприще. У вас как раз это не получается. 1) Что значит "для людей"? Это профессиональный форум. Если Вы не разбираетесь в теории и проектировании БД (а это - факт), то, разумеется, Вы не все можете понять. 2) Если я что-то не понимаю, то считаю, что дело исключительно во мне, а не в том, кто объясняет, и столько раз переспрошу, сколько нужно для того, чтобы понять. Если этот вопрос меня интересует, разумеется. 3) Вероятно, Вас БД не настолько интересуют, чтобы в них разбираться:) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 16:04 |
|
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
|
|||
---|---|---|---|
#18+
skyANAhVosttпропущено... Если не получается понятным для людей языком излагать мысли, можно найти себя на каком-нибудь другом поприще. У вас как раз это не получается. Ты зачем это пишешь персонажу с ником Бредятина? А Вы зачем упоминаете персонаж с ником Бредятина?:) Чувствуете, все-таки, ограниченность своих знаний в области БД:)? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 16:05 |
|
|
start [/forum/topic.php?fid=32&msg=39627670&tid=1540052]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
128ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 242ms |
0 / 0 |