Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
vadiminfoТам просто данных нет и потому операции сравнения бессмысленны. Можно тока проверить что значения нет (IS NULL). Ну вот есть один, допустим, у меня столбец. И в нём есть 819 строк. В каждой из строк нет значения. И в чём тут уникальность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 18:53 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
GoldХотя да, если об этом написано в документации, то это у MS фича... И не только у MS. Все идут не в ногу, один Оракл идет в ногу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 19:36 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
gardenmanможет проголосуем? )) Sybase,MS SQL,DB2 - на одной стороне Oracle,PostgreSQL,MySQL - на другой Как интересно у INFORMIX и как у INTERBASE? Informix на стороне стандарта - не более одного NULL значения. А IQ щас проверим... хм, IQ позволяет больше одного NULL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 20:00 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
vadiminfo все хорошо объяснил. Если null интерпретировать как "значение пока не известно", то Oracle работает "правильно". Но поскольку такие значения в Oracle, похоже, все еще не индексируются (возможно именно поэтому он и допускает много null), он не может быстро найти соответствующие записи. Если null интерпретировать как "значение равно пустоте", то MS SQL работает "правильно". Но тогда трудности с примером vadiminfo (1611329). Попробуйте привести практический пример, когда null следует интерпретировать как "значение равно пустоте" при объявлении для атрибута unique. А вот примеров с "значение пока не известно" (и, тем более, "не определено" - в случае "разреженных таблиц") - сколько угодно. Так что Oracle практически "правильнее", но отсутствие индекса по пустым значениям - жуткая убогость (если это все еще так)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 21:01 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
www.fun4me.narod.ru Ну вот есть один, допустим, у меня столбец. И в нём есть 819 строк. В каждой из строк нет значения. И в чём тут уникальность? В том, что нет дубликатов, например. Нет значений, потому они и не могут дублироваться. Вопрос в том считать ли NULL значением. Но ведь это не значение? Это отсутствие значения. Причем не известна причина отсутствия. Могут быть, например причины: свойство не определено для данной записи, не известно на момент ввода, отсутствует на момент ввода. Следовательно, ничего нельзя сказать дублирует оно, одно из имеющихся или нет. Просто ограничение целостности уникальность - не есть выделенный ключ (первичный или альтернативный). В обоих пустые значения должны быть запрещены. Или должно разрешаться только одно. Но тогда пустое значение трактуется как значение. Но это плохо согласуется с тем, что на самом деле реальное значение либо не известно, либо отсутствует. Поэтому, мне кажется, что уникальность значений должна распространяться именно на значения. А для решения вопросов с отсутствием значений должны быть другие средства. Например, их запрет или разрешение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 21:18 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
В ASA сделано просто: 1. UNIQUE CONSTRAINT можно создавать только на NOT NULL поля 2. UNIQUE INDEX можно создавать на NULL поля (поведение как в Оракле) 3. Оптимизатор учитывает индексы с NULL полями 4. В CHECK CONSTRAINT выражение (Поле IN (1, 2, 3)) при поле со значением NULL вернет true 4 пункт самый веселый и самый злобный в отношении стандарта ANSI SQL. Но ... при использовании оказывается самый удобный. Действительно, если у меня NULL поле и я пишу на него проверку, то это уже означает, что к ней изначально подразумевается, что помимо перечисленных условий поле может содержать NULL. Соотвествующе вместо того, чтобы дописывать "OR Поле IS NULL" и увеличивать скрипт и работу сервера при проверках, здесь ввели сей возмутительный факт (Значение = NULL) = TRUE P.S. Можно возмущаться сколько угодно, но лично мне поддержка NULL в UNIQUE INDEX и нарушение булевых операций с NULL в CHECK очень даже нравится, потому как помимо понятия "Правильно" есть еще понятия "Обоснованно" и "Удобно". Тем более, что если посмотреть на все существующие РСУБД и их "отклонения", сложно уже говорить о каких то стандартах, хотя каждый производитель и уверяет, что его РСУБД уж точно в полном обьеме поддерживает стандарты ANSI SQL таких то версий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 23:16 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
2 azhukov >и следовательно в уникальном столбце может быть сколько угодно пустых значений, если только это не первичный ключ. Именно так и написано в стандарте, если я не ошибаюсь, но ссылки у меня нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2005, 03:05 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
ASCRUS Sybase IQ как и полагается аналитическому серваку естественно сверху Sybase IQ именно как "аналитический" сервак, действительно должен был бы быть сверху во всех позициях, но к сожалению, судя по тестам на производительность TPC-H ему больше наравится снизу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2005, 11:42 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
Весело у вас. ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2005, 12:15 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
Вот слушаю вас и радуюсь, ну что вы пристали к unique? В Oracle действительно может быть несколько null в поле с наложенным ограничением уникальности, но если по данному полю будет обявлено огранчение целосности первичный ключь, то сразу включится not null. В стандарте явно ничего по поводу уникальных полей не прописано (в противном случае во всех СУБД это было бы реализованно одинаково), и если мне не изменяет память Кодд сам толком не мог обяснить, что с этими null делать. Каждая компания разрабатывающая СУБД в меру своих представлений и потребностей клиентов, реализует то, что не прописано в стандартах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2005, 13:48 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
Посмотрим же наконец в стандарт. У меня есть только SQL 2002 SQL 2002 Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. Syntax Rules ... 3) If <unique column list> UCL is specified, then ... c) Case: i) If the <unique specification> specifies PRIMARY KEY, then let SC be the <search condition>: Код: plaintext 1. 2. ii) Otherwise, let SC be the <search condition>: Код: plaintext 4) If UNIQUE (VALUE) is specified, then let SC be the <search condition>: Код: plaintext General Rules ... 2) The unique constraint is not satisfied if and only if Код: plaintext А что такое UNIQUE ? А вот: SQL 2002 Код: plaintext Код: plaintext General Rules 1) Let T be the result of the <table subquery>. 2) If there are no two rows in T such that the value of each column in one row is non-null and is not distinct from the value of the corresponding column in the other row, then the result of the <unique predicate> is True ; otherwise, the result of the <unique predicate> is False Т.е. значения колонок не должны быть не NULL'ами и не различными, говоря по-русски - значения колонок должны быть или NULL'ами или отличаться, т.е. допускается неограниченное кол-во NULL'ов. Вопросы ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2005, 15:19 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
alexey_tmВ стандарте явно ничего по поводу уникальных полей не прописано (в противном случае во всех СУБД это было бы реализованно одинаково) Добро пожаловать в реальный мир. http://www.cse.iitb.ac.in/dbms/Data/Papers-Other/SQL1999/ansi-iso-9075-2-1999.pdf разд. 4.17.2 "Table Constraints" "A unique constraint is satisfied if and only if no two rows in a table have the same non-null values in the unique columns. In addition, if the unique constraint was defined with PRIMARY KEY, then it requires that none of the values in the specified column or columns be a null value." Выделено мной. Т.е. если значения null, то может повторяться сколько угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2005, 05:17 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
2 hvlad Виноват, не заметил. Авторство не оспариваю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2005, 05:23 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
c127Т.е. если значения null, то может повторяться сколько угодно. Строго математически - из этого мало что следует. Допускается повторение null и это не нарушает стандарт; в то же время, как водится, и недопущение повторения null-ов его тоже не нарушает - во всяком случае я бегло не нашел фразы, и Вы такой вроде бы не привели. Реализовано решение, которое соответствует стандарту и накладывает дополнительное, не предусмотренное стандартом ограничение. Практически - я бы сказал, требование уникальности null-ов оправдано, если применяется совместно со связкой по null-у - в смысле, если запрос вида Код: plaintext способен вернуть непустой результат. Но это вроде бы уже явно нарушает стандарт и - по моему опыту - ведет к очень противным ошибкам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2005, 06:02 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
c1272 hvlad Виноват, не заметил. Авторство не оспариваю.Я тоже не оспариваю - оно у соотв. комитета ANSI ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2005, 14:43 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
2 softwarer c127Т.е. если значения null, то может повторяться сколько угодно. Строго математически - из этого мало что следует. Допускается повторение null и это не нарушает стандарт; в то же время, как водится, и недопущение повторения null-ов его тоже не нарушает - во всяком случае я бегло не нашел фразы, и Вы такой вроде бы не привели. По-моему в приведенной c127 цитате все совершенно однозначно. Нет двух строк с одинаковыми ненулловыми значениями (в уникальных столбцах) -> уник констрейнт сатисфаед. И наоборот. По определению. If and only if. Тогда и только тогда. Необходимо и достаточно. Реализовано решение, которое соответствует стандарту Не соответствует. Нет двух строк с одинаковыми ненулловыми значениями, но тем не менее (по прихоти разработчика) уник констрейнт получился не сатисфаед. Не выполняется один из двух if-ов в буквосочетании "if and only if" и накладывает дополнительное, не предусмотренное стандартом ограничение. И из всего этого получается некий (свой собственный) констрейнт. Но этот свой собственный констрейнт - это не Unique Constraint. По крайнем мере, не Unique Constraint в ANSI-шном понимании этого слова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2005, 15:15 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
hvlad c1272 hvlad Виноват, не заметил. Авторство не оспариваю.Я тоже не оспариваю - оно у соотв. комитета ANSI Я не оспариваю авторства решения задачи. Приведя цитату из стандарта, Вы первым решили обсуждаемую задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2005, 01:08 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
ЛПИ из всего этого получается некий (свой собственный) констрейнт. Но этот свой собственный констрейнт - это не Unique Constraint. По крайнем мере, не Unique Constraint в ANSI-шном понимании этого слова. Согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2005, 13:01 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
hvladПосмотрим же наконец в стандарт. У меня есть только SQL 2002 Вопросы ? Какие вопросы? Микрософт - козлы. Извините, что поздно присоединилась. Искала ответ на свое недоумение, нашла и ... не могу прийти в себя. Вот моя маленькая история. Сменила работу. Как следствие, сменила oracle на ms sql server. Перед проектированием бд прочилата(!!!! решила в кои-то веки документацию почитать :-#) ОФИЦИАЛЬНУЮ документацию к учебному курсу "Проектирование и реализация баз данных MS SQL Sqerver 2000" Цитирую: Ограничения UNIQUE разрешается определить для столбцов, допускающих пустые значения (NULL)... ... SQL Server 2000 проверяет имеющиеся в столбцах данные, чтобы гарантировать уникальность ВСЕХ значений, КРОМЕ пустых. И вот бд спроектирована, тестирую... Добро пожаловать в реальный мир! Микрософт - ... нет слов, одни нецензурные выражения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2005, 12:25 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
Dreamy_Helga hvladПосмотрим же наконец в стандарт. У меня есть только SQL 2002 Вопросы ? Какие вопросы? Микрософт - козлы. Извините, что поздно присоединилась. Искала ответ на свое недоумение, нашла и ... не могу прийти в себя. Вот моя маленькая история. Сменила работу./. Хотите угадаю Вашу реакцию в первый рабочий день на новом месте? "Прихожу я на работу - сидят одни козлы" Девушка, ну что же Вы первое своё сообщение начинаете с ругани? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2005, 15:05 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
Dreamy_HelgaОФИЦИАЛЬНУЮ документацию к учебному курсу "Проектирование и реализация баз данных MS SQL Sqerver 2000" А надо все-таки было BOL читать: Also, unlike PRIMARY KEY constraints, UNIQUE constraints allow the value NULL . However , as with any value participating in a UNIQUE constraint, only one NULL value is allowed per column . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2005, 10:07 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
pkarklin Dreamy_HelgaОФИЦИАЛЬНУЮ документацию к учебному курсу "Проектирование и реализация баз данных MS SQL Sqerver 2000" А надо все-таки было BOL читать: Also, unlike PRIMARY KEY constraints, UNIQUE constraints allow the value NULL . However , as with any value participating in a UNIQUE constraint, only one NULL value is allowed per column . ок, так и сделаю (и сразу проверять - на всяк случай) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 17:10 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
Dreamy_Helga pkarklin Dreamy_HelgaОФИЦИАЛЬНУЮ документацию к учебному курсу "Проектирование и реализация баз данных MS SQL Sqerver 2000" А надо все-таки было BOL читать: Also, unlike PRIMARY KEY constraints, UNIQUE constraints allow the value NULL . However , as with any value participating in a UNIQUE constraint, only one NULL value is allowed per column . ок, так и сделаю (и сразу проверять - на всяк случай)все проверять нужно в любом случае, и неважно какой продукт. А то что MS SQL отличается от Oracle и наоборот - так это давно известный факт. Удивительно что вы думали работать с MSSQL как с Oracle. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 17:56 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
segunвсе проверять нужно в любом случае, и неважно какой продукт. А то что MS SQL отличается от Oracle и наоборот - так это давно известный факт. Удивительно что вы думали работать с MSSQL как с Oracle. В том то и дело, что в не-мелкософтовских продуктах ВСЕ проверять как раз не нужно, оно работает как написано в документации. Это у серьезных производителей, не обязательно больших и не обязательно платных. Поработав с мелкософтом и привыкнув к необходимости все проверять, переходишь потом на другой продукт и не устаешь удивляться, когда все пишешь по документации и оно сразу работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 03:29 |
|
||
|
UNIQUE в MS SQL и в ORACLE
|
|||
|---|---|---|---|
|
#18+
c127В том то и дело, что в не-мелкософтовских продуктах ВСЕ проверять как раз не нужно, оно работает как написано в документации. Ой, я Вас умоляю... Metalink по объемам ни чуть не меньше MSKB. И то что безбажных продуктов не бывает сие есть факт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 09:25 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=33404717&tid=1553723]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 364ms |

| 0 / 0 |
