Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 4 5 6 7 8 [9] 10 11 12 13 .. 17   вперед  Ctrl
 Re: Все таки Oracle впереди планеты всей!  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
softwarer
SergSuper
таки значит есть что компенсировать?

в принципе я согласен, логично было бы например ввести еще какое-нибудь сложение строк которое бы в null всё не превращало,

Ну дык собственно в Oracle оно и введено :) Если же ставить вопрос как "стоит ли вводить две операции сложения строк, одна из которых превращает, другая нет, только ради того, чтобы сэкономить несколько символов в Вашем примере" - я бы наверное сказал таки, что не стоит. Багов будет больше, чем выгоды.
нет, мои примеры такого не требовали
softwarer
SergSuper
то что выкрутиться всегда можно - кто ж с этим спорит

Я бы поспорил, кто "выкручивается". Передавать два значения в двух переменных по мне - нормально, решение по умолчанию, а вот запихивать, как Вы хотите, в одну переменную сразу и признак "значение найдено" и само найденное значение - хакерство, привет из тёмного прошлого, одного уровня с "если возвращается значение < 0, то это не Id, а код ошибки".
да тут бесполезно спорить, кто как делает тот так и считает правильным
я вот напишу что аналогия неудачная и логичней когда вся информация о строке в ней и содержится, тем более что возможности для этого предусмотрены, Вы не менее обоснованно ответите

я вот частенько смотрю оракловский код и думаю насколько было проще если бы были нулы как у микрософта, уверен что Вы что-то подобное думаете про микросовтовский

мне такое поведение кажется уж очень очевидно неправильным и было интересно понять тех, кому это кажется нормальным
вроде понял, но "я думаю, Владимир Зенонович, последнее слово будет не за вами" :)
8 июл 10, 01:43    [9068395]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
StalkerS
Member

Откуда: Melbourne
Сообщений: 1345
softwarer

Думаю, мы оба способны выдать немало причин, почему эту задачу не стоило решать таким образом. Собственно, посчитайте сами, сколько натяжек необходимо принять, чтобы счесть это серьёзным примером. Мне бы хватило одного только "тонкого момента" - пустые строки в значении "надо заполнить потом" почему-то есть, а вот для числовых характеристик ничего подобного нет, никакого null/пустой строки не используешь.

да там почти все параметры строковые. Даже размеры могли записываться как 23х67. В крайнем случае существует возможность записать число как строку из цифр. Да и дело тут не в том как "правильно" делать, а в том, что определенный подход становится недоступным. По сути сервер на ровном ограничил меня в выборе альтернатив.
softwarer
Во-первых, про "дефолтные значения" тут написано что-то.. имхо вообще не в тему. А вообще - ну дык называйте, смелее. Конкретные примеры. Чем больше, тем лучше. А то ради одного-двух случаев городить огород...

что значит "городить огород", два примера есть, и есть общая формулировка случая. Вам сколько конкретных примеров надо?
В качестве бонуса - согласованое поведение системы, лично мне неудобно, когда система за меня решает что удобно, а что нет. Уж если продолжать мысль, то поведение vb.net в этом смысле более логично - там всем value типам присваивается не-null значение, это плохо, но хотя-бы последовательно
softwarer
Существенно отличный от нуля.

кажется вы там страницу назад писали что-то про один проект или около того.. От нуля это конечно существенно отличается, но если занимает только малый процент об общего опыта, то неудивительно что кажется непривычным и "неудобным"
softwarer

Если тип not null, то возможность присвоить ему null и происходящее при этом присвоение некоего "дефолта" - безусловно, плохое решение. Такая возможность иногда полезна, но пользоваться ей следует осознанно, а не "автоматом". В этой части решения я не вижу никакого соответствия обсуждаемой теме, поскольку not null колонке или переменной ни один сервер присвоить null вроде как не позволит.

почему нет соответствия, аналогия очень даже существенная - при присвоении null на самом деле присваивается нечто "не-null", причем в оракле вообще похоже не определить, что именно там присваивалось
softwarer

В null.toString() == "" я в общем-то никакого криминала не вижу, скорее наоборот, полагаю разумным и удобным.

тут не понял, null.toString() вызовет исключение в любом случае по очевидным причинам, разница в компиляторах vb и c# в том, как они реагируют на присваивание null типам, которые не могут быть null
vadiminfo

Я имел в виду что не только в Оракле декомпозиция чаcто применяется для отсутсвующих свойст. Ну действительно, табла со свойствами, которых заведомо нет у сущностей, выглядит как некоея искажение отображения реальности в БД. И констатировал, что это ближе к NULL чем '', если декомпозицию не делать.

никакого искажения реальности нет, есть разные способы отображения реальности в модели. И иметь отсутствующие аттрибуты в таблице сущности вполне можно. И если сервер толкает меня к определенным решениям только на основе технической реализации, то это не есть хорошо
8 июл 10, 04:25    [9068520]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
sn1251
Guest
softwarer
Я бы сказал так: лучше никакого стандарта, нежели плохой стандарт. Тому, который есть - до хорошего ещё очень далеко. Поэтому я приветствую оправданные отступления от него.

Но стандарты всё-же просачиваются в Оракл.
Давно ль хором декламировали: JOIN, CASE, WITH у нас нет и нахер не нужно
Глядишь и опция CONCAT_NULL_YIELDS_NULL появится.
softwarer
Мне вот до сих пор интересно, есть ли хоть один сервер, в котором реализована прописанная в стандарте конструкция except (со смыслом ораклового minus).

ещё 1
postgres=# select generate_series(1,5) except (values(2),(4)) order by 1;
 generate_series
-----------------
               1
               3
               5
(3 rows)

З.Ы. по теме:
Да, в некоторых областях оракл впереди всех.
Нет, гордится этим как своим достижением не стоит (даже если ты индус).
Нет, во все дыры пихать оракл нецелесообразно.
8 июл 10, 05:43    [9068544]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
sn1251

Но стандарты всё-же просачиваются в Оракл.
Давно ль хором декламировали: JOIN, CASE, WITH у нас нет и нахер не нужно


Собственно я не слышал, чтобы говорилось, что JOIN или рекурсивный WITH не нужны (под предлогом того, что есть legacy конструкции), зато много слышал, что реализация того же JOIN в Oracle 9, к примеру, далека от идеала Кроме того, раньше не понимал, для чего может быть нужен INNER JOIN (серьезно столкнувшись с MySQL понял для чего ). Так что не нужно путать теплое с мягким.
Собственно позиция того о чем Вы говорите складывалась из двух пунктов:

1. 8i - у нас нет JOIN (если склероз не изменил), но мы особо не страдаем, поскольку (+) работает, да и выглядит лаконичнее (имея при этом некоторые ограничения в использовании)
2. 9i - JOIN есть, но работает так хреново, что лучше пользоваться (+)

На мой взгляд, это далеко не "у нас нет и нахер не нужно", да и пользователи других СУБД поступают ровно таким-же образом
8 июл 10, 08:00    [9068601]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
Зайцев Фёдор
Можно можно записать в varchar not null строку '' ?
Можно создать уникальный индекс по полю, где многократно встречаются '' ?


1. нет
2. можно. на пустые строки уникальность распространяться не будет
8 июл 10, 08:02    [9068603]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
Зайцев Фёдор
Можно можно записать в varchar not null строку '' ?
Можно создать уникальный индекс по полю, где многократно встречаются '' ?


Ну вот как бы по моим понятиям, Оракл '' не записывает в таблу, а записал значения отсутсвует null, поскоку запросы на = '' возвращают пустые строки, а на is null возвращают добавленное. Скрипты в ветке приводил.
Поэтому как бы инсерт в колонку varchar not null не долженн пройти. А что до индекса, то поскоку возможность занести '' как в Аксцессе не очевидна, то вопрос луче переформулировать.
Т.е. есть моно считать что в таблах Оракла в полях типа varchar значение '' обнаружить далеко не всем удается после многих попыток исертов и апдэйтов в плане запосов содержащих = '' или там LENGTH(а) = 0.
8 июл 10, 09:14    [9068786]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
StalkerS
никакого искажения реальности нет, есть разные способы отображения реальности в модели. И иметь отсутствующие аттрибуты в таблице сущности вполне можно. И если сервер толкает меня к определенным решениям только на основе технической реализации, то это не есть хорошо

Разные то они есть, и применить то можно, но нельзя быть довольным токой моделью, скорее всего. Ить это все равно что кмокингу одеть шапку ушанку, я думау. Я вседа честно старюсь говорить коллегам, что если не получилось избежать в модели таких изъянов. Луче этого никада не скрывать, и не делать вид что все хорошо.
8 июл 10, 09:20    [9068812]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
Зайцев Фёдор
Можно можно записать в varchar not null строку '' ?

Нет.

Зайцев Фёдор
Можно создать уникальный индекс по полю, где многократно встречаются '' ?

Да.
8 июл 10, 09:28    [9068853]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35345
Gluk (Kazan)
Кроме того, раньше не понимал, для чего может быть нужен INNER JOIN

жесть конечно. В принципе понятно, почему те, кто видел только oracle и ничего больше, придерживаются таких странных взглядов, иногда кажущихся со стороны дикими. Ну и естественно все кажется уникальным.

p.s. Gluk (Kazan), Ваша цитата просто как пример. Ничего личного.
8 июл 10, 10:18    [9069179]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
iscrafm
Gluk (Kazan)
Кроме того, раньше не понимал, для чего может быть нужен INNER JOIN

жесть конечно. В принципе понятно, почему те, кто видел только oracle и ничего больше, придерживаются таких странных взглядов, иногда кажущихся со стороны дикими. Ну и естественно все кажется уникальным.

p.s. Gluk (Kazan), Ваша цитата просто как пример. Ничего личного.


Ага, только ты забыл спросить, почему inner join понадобился в MySQL :)
Это жесть куда большая, поверь
8 июл 10, 10:37    [9069371]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
softwarer
Зайцев Фёдор
Можно можно записать в varchar not null строку '' ?

Нет.

Зайцев Фёдор
Можно создать уникальный индекс по полю, где многократно встречаются '' ?

Да.

т.е. в первом случае '' is not null, а во втором - очень даже is null
по-моему, это не совсем очевидно. ввс я не виду причин, по которым должно быть именно так, а не наоборот или ещё как-нибудь по-другому

З.Ы,
я всё ещё на тему наразличимости '' и null
8 июл 10, 10:58    [9069586]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
Зайцев Фёдор
+ бред
softwarer
Зайцев Фёдор
Можно можно записать в varchar not null строку '' ?

Нет.

Зайцев Фёдор
Можно создать уникальный индекс по полю, где многократно встречаются '' ?

Да.

т.е. в первом случае '' is not null, а во втором - очень даже is null
по-моему, это не совсем очевидно. ввс я не виду причин, по которым должно быть именно так, а не наоборот или ещё как-нибудь по-другому

З.Ы,
я всё ещё на тему наразличимости '' и null

пардон, не проснулся.
burn 0,5 рулит
8 июл 10, 11:02    [9069624]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
ОКТОГЕН
Member

Откуда:
Сообщений: 2498
Зайцев Фёдор, burn жжот.
8 июл 10, 11:24    [9069828]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
Sgt.Pepper
Я с Вами не совсем согласен, но это спор более мировоззренческий, чем айтишный.

Собственно, именно об этом я и говорил в шутке про сержанта :) Вопрос собственно в том, что "то ли стандарт вводится там, где действительно нужен", то ли "стандарт должен быть всегда, а отступления вводятся там, где действительно нужны". Если позволите, ещё один старый анекдот:

Немецкий фельдфебель взял отпуск и поехал на экскурсию в Париж. Остановился в гостинице, поужинал, поднялся к себе. Наступила ночь. От соседей слева раздалось:

- А-а, а-а.. Жан, любимый, помедленнее, не спеши так, а-а...

Чуть позже от соседей справа раздалось:

- А-а, Пьер, ну что же ты, быстрее, быстрее!, А-А!!

Фельдфебель в бешенстве вскочил, схватил стек, и, стуча поочерёдно в ту и другую стену:

- Все! Слушаю мою команду! Раз-два, раз-два, раз-два!!


Sgt.Pepper
Извините, я уже Вам некоторое время назад говорил, что аналогии и аллегории должны иллюстрировать высказанный тезис, а не являться сами по себе основой доказательства чего-то,

Дык и иллюстрирую. Тезис о том, что люди, ездящие по разным дорогам, не особо нуждаются в общем стандарте, и попытка бездумно внести такой и требовать соблюдения "потому что стандарт" влечёт много минусов и мало плюсов.

Sgt.Pepper
Вариант, ненужность которого должны доказать Вы, а не говорить, что "пока что серьезных примеров не приведено - это никому не нужно".

Я могу обосновать ненужность этого варианта, но меня совершенно не устраивает декларируемая Вами постановка вопроса. Мы обсуждаем равноправные вариации некоторой концепции, поэтому доказывать должны в равной степени. Кроме того, я очень прошу не перевирать мои слова: я говорю, что потребность именно в такой реализации крайне редка, и вносимые ей минусы и неудобства несравнимо перевешивают редкие полезные случаи.

А обосновывается, собственно, просто. У человека есть довольно чёткое интуитивное понимание понятия "значение введено / значение не введено", соответствующее is not null / is null. Скажем, для тех же чисел 0, 1, 2, 1.2e8, 238.85(342) - примеры введённых значений, пустота - значение не введено, null. Он с ними удобно и естественно оперирует, как программист так и пользователь. И глядя на поле ввода, где может стоять ноль, а может ничего не стоять, особенно наглядно видна демагогичность предложения отождествить 0 и null.

Для строковых значений действует ровно то же самое восприятие, "Иванов" - значение введено, "" - значение не введено. И да, любой нормальный человек - то есть не-программист - считает, что "Иванов " = "Иванов", а " " = "". Мы пишем программы для людей, они должны вести себя ожидаемым для пользователя образом. Поэтому, пока нет существенных оснований поступать иначе, следует выбирать концепции, соответствующие модели мира, ожиданиям пользователей.

Программист вполне может держать в голове концепцию "есть null (воспринимаемый пользователем как пустота), есть пустая строка (воспринимаемая пользователем опять же как пустота) и есть непустые строки". Но в 99.99% случаев ему просто незачем это делать, это только лишнее неудобство на пустом месте, проявляющееся каждый раз, когда программисту надо сконкатенировать это поле, сджойнить его или получить в него ввод из интерфейсной формы. Реальную потребность в этой концепции лучше всего показывает факт повсеместного отсутствия визуальных компонент, способных наглядно показать пользователю отличные null и пустую строку или дать пользователю выбрать между тем и другим. В тех редких случаях, когда такое требуется, программисты рожают что-нибудь вроде edit-а "Password" с чекбоксом "Password is blank".

Так вот: я утверждаю, что из двух концепций, одна из которых позволяет "один в один" реализовать почти все реальные потребности и с тривиальными доработками - оставшиеся, а другая - требует некоторой работы почти в каждом случае, первая лучше. Потому как при прочих равных делает работу проще, а её результат - качественнее.

Sgt.Pepper
Так почему бы не пойти по пути осмысленного выбора программистом?

Давайте рассмотрим ситуацию в общем виде. У нас есть несколько вариантов поведения системного объекта. Реализуя объект, мы можем:

1. Обязать явно указывать вариант в каждом месте использования объекта (те альтернативы, которые Вы привели)
2. Обязать явно указывать вариант в каждом месте создания объекта (то есть в create table кроме null / not null указывать отношение к пустым строкам)
3. Выбрать единственный вариант и заставить, когда он не подходит, делать явную доработку руками (как сейчас в Oracle).

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

Так вот, "осмысленный выбор" в данном контексте не устраивает меня в первую очередь из-за нарушения требования "в явном виде".

Sgt.Pepper
Ну возможно, придется Вам написать пару лишних символов по варианту 2 или 3, которые Вы бы не хотели писать, но зато сохранится возможность для других использовать в конкретном случае конкретный вариант, ... Неужели плата так велика?

Плата здесь - не лишние символы, это мелочь. Плата здесь - это внесённые ошибки. Я видел довольно много технологий, постулировавших "а вот здесь программист должен написать вот так", и, несмотря на все оргмеры, видел кучу ошибок, проистекающих из "программист забыл написать" или "написал не так".

Возвращаясь к примеру с пробелами - можно сделать технологию вроде "программист обязан писать trim() для каждого поля во всех хранимках, вставляющих или обновляющих информацию в таблицах". И гарантированно - будут отлавливаться ошибки. Люди не роботы. Такие вещи надёжны только когда они работают "без участия программиста в каждом конкретном случае".

Sgt.Pepper
да и стандарты не нарушим.

Это стоит ещё меньше, чем лишние символы, имхо.
8 июл 10, 11:49    [9070145]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
Зайцев Фёдор
т.е. в первом случае '' is not null, а во втором - очень даже is null

Да нет, в обоих случаях '' is null. Во всяком случае, так следует из написанного. Возможно, Вы подразумевали не то, что написали, конечно :)

Зайцев Фёдор
по-моему, это не совсем очевидно. я всё ещё на тему наразличимости '' и null

Видите ли в чём дело.... они физически неразличимы. У них одно представление в дампе БД. Поэтому найти пример, где они различимы, будет.... непросто
8 июл 10, 11:58    [9070265]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Хм. а почему именно пустая строка транслируется в null?
Почему не наоборот - null в пустую строку?
8 июл 10, 12:00    [9070284]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Yo.!
Guest
locky
Хм. а почему именно пустая строка транслируется в null?
Почему не наоборот - null в пустую строку?

меньше писанины, проще код, более логично в современном мире веба.
8 июл 10, 12:05    [9070339]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
SergSuper
да тут бесполезно спорить, кто как делает тот так и считает правильным

Я не вижу причин всерьёз спорить об этой детали в рамках нашей основной темы. Но и не сказал бы, что бесполезно - вполне себе содержательная тема для "программирования вообще".

SergSuper
я вот частенько смотрю оракловский код и думаю насколько было проще если бы были нулы как у микрософта, уверен что Вы что-то подобное думаете про микросовтовский

Дык я, собственно, и прошу привести примеры такого кода, где "насколько бы проще". С nvl/nvl2 уже увидели. Пример nvl vs || я тоже уже привёл.

SergSuper
мне такое поведение кажется уж очень очевидно неправильным

Неправильное - это либо "неудобное", либо "удобное, но всё равно неправильное, потому что Иван Иваныч сказал, идеология должна быть другой". Второй вариант - меня не вдохновляет :)
8 июл 10, 12:06    [9070359]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
StalkerS
Да и дело тут не в том как "правильно" делать, а в том, что определенный подход становится недоступным. По сути сервер на ровном ограничил меня в выборе альтернатив.

(пожимая плечами) Вы не протестуете против того, что тип number представляет только действительные числа и не содержит мнимой части? По сути сервер на ровном месте ограничил Вас в выборе альтернатив.

StalkerS
кажется вы там страницу назад писали что-то про один проект или около того..

Я делал проект на MSSQL, несколько раз работал с IB/FB-проектами, немного с MySQL и кроме того, довольно много возился с перекачками данных. При этом я никогда не пытался "приходить со своим уставом в чужой монастырь", каждый раз честно смотрел "как тут принято", пробовал работать именно так и искал ответы на вопрос "почему".

StalkerS
то неудивительно что кажется непривычным и "неудобным"

Вы второй раз употребляете слово "кажется", на этот раз не по адресу.

StalkerS
почему нет соответствия, аналогия очень даже существенная - при присвоении null на самом деле присваивается нечто "не-null",

Плюньте в лицо тому, кто Вам сказал такую глупость. В оракле при присвоении null присваивается null. В том числе при присвоении пустой строки присваивается null. Соответственно, аналогия "при присвоении null присваивается не-null" - мягко говоря, неуместна.

StalkerS
тут не понял, null.toString() вызовет исключение в любом случае по очевидным причинам,

Ну и плохо. Я уж думал, микрософт не поленился сделать получше.
8 июл 10, 12:21    [9070537]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
locky
Хм. а почему именно пустая строка транслируется в null?
Почему не наоборот - null в пустую строку?

Боюсь, это вопрос уже не к нам :) Подозреваю, "в далёкие xxxдесятые годы" это вообще был вопрос больше технической реализации (значение с длиной 0), нежели чистоты идеологии.
8 июл 10, 12:27    [9070621]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
softwarer
locky
Хм. а почему именно пустая строка транслируется в null?
Почему не наоборот - null в пустую строку?

Боюсь, это вопрос уже не к нам :) Подозреваю, "в далёкие xxxдесятые годы" это вообще был вопрос больше технической реализации (значение с длиной 0), нежели чистоты идеологии.

с т.з. технической реализации проще держать именно пустую строку вместо null, нежели наоборот
8 июл 10, 12:28    [9070634]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Yo.!
locky
Хм. а почему именно пустая строка транслируется в null?
Почему не наоборот - null в пустую строку?

меньше писанины, проще код, более логично в современном мире веба.

писанины если не ровно столько же, то меньше
И веба в момент принятия решение не было, тем более - современного.
8 июл 10, 12:30    [9070655]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Yo.!
Guest
locky

писанины если не ровно столько же, то меньше
И веба в момент принятия решение не было, тем более - современного.

когда принимаются решения по критериям логично и удобно, не удивительно, что они совпадают. писанины гораздо меньше, читайте ветку - примеры даны.
8 июл 10, 12:38    [9070725]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
locky
softwarer
locky
Хм. а почему именно пустая строка транслируется в null?
Почему не наоборот - null в пустую строку?

Боюсь, это вопрос уже не к нам :) Подозреваю, "в далёкие xxxдесятые годы" это вообще был вопрос больше технической реализации (значение с длиной 0), нежели чистоты идеологии.

с т.з. технической реализации проще держать именно пустую строку вместо null, нежели наоборот

Меня радует уместная категоричность.

Поясняю: когда проектировали формат хранения, видимо, решили, что каждое значение имеет размер, чаще всего динамический, и соответственно решили хранить как [длина, байт1, байт2, ...]. Null решили хранить как значение длины 0, то есть в файле БД ему соответствует либо один байт (длина = 0), либо вообще ничего (если в конце строки). Когда реализовывали varchar, строку 'abcde', вполне естественно, решили хранить как [5, 'a', 'b', 'c', 'd', 'e']. И в этот момент "совершенно случайно" оказалось, что null и пустая строка хранятся физически одинаково, как [0].

Есть у меня подозрение, что на самом деле примерно так всё и было, а идеологии - дело более позднее.
8 июл 10, 12:47    [9070816]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
locky
Хм. а почему именно пустая строка транслируется в null?
Почему не наоборот - null в пустую строку?

Ну как же? Значения могут не иметь не тока строуки. Т.е. null более общее для всех типов. Кроме того, оно типа не транслируется, а объявлентся что значения нет. Ну и так по мелочам. Там пустая строека типа похожа на 0 для числовых, но числовые тоже могут не иметь значения, даже 0. Тада если пустая строка отранслировалась сюда, то она не похожа становится на 0. А зачем это надо. Кроме того, пустая строка разными челами по разному понисается: для кого есть такое значение в плане там равенства, а для кого то нет. А с null таких заморочек вроде нет.
8 июл 10, 12:47    [9070821]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 4 5 6 7 8 [9] 10 11 12 13 .. 17   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить