
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
26.07.2004, 09:25:08
|
|||
|---|---|---|---|
|
|||
Что за ссылочная целостность такая? |
|||
|
#18+
Народ, почему я (см. Attachment) могу свободно записать в подчиненную таблицу запись со значением внешнего ключа Null? Ведь такого значения нет в родительской таблице, и свойства объединения (см. схему данных) вроде верные... В чем прикол? Александр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 09:46:49
|
|||
|---|---|---|---|
|
|||
Что за ссылочная целостность такая? |
|||
|
#18+
Очевидно что null не проверяется. И никакого прикола здесь нет Поля надо делать обязательными - если они должны быть обязательными. А не перекладывать проверку наличия значения на внешний ключ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 09:54:23
|
|||
|---|---|---|---|
|
|||
Что за ссылочная целостность такая? |
|||
|
#18+
Это что - и в других базах так, или только в Access? А как же "объединять только те записи, в которых значение поля такого-то совпадает..." ? Это что, Access считает, что Null совпадает с не Null? Т.е. (Null=1)=True? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 09:58:53
|
|||
|---|---|---|---|
|
|||
Что за ссылочная целостность такая? |
|||
|
#18+
А как же "объединять только те записи, в которых значение поля такого-то совпадает..." ? Это что, Access считает, что Null совпадает с не Null? Т.е. (Null=1)=True? А что, у вас запрос на объединение умудрился объединить запись с Null'ом и запись со значением "1" в полях связи? Не рассказывайте сказки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 10:16:19
|
|||
|---|---|---|---|
Что за ссылочная целостность такая? |
|||
|
#18+
Александр 200230Это что - и в других базах так, или только в Access? А как же "объединять только те записи, в которых значение поля такого-то совпадает..." ? Это что, Access считает, что Null совпадает с не Null? Т.е. (Null=1)=True? это значит ,как верно указывает йййй,что FOREIGN KEY НЕЛЬЗЯ строить на поле,если оно не NOT NULL! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 10:22:32
|
|||
|---|---|---|---|
|
|||
Что за ссылочная целостность такая? |
|||
|
#18+
это значит ,как верно указывает йййй,что FOREIGN KEY НЕЛЬЗЯ строить на поле,если оно не NOT NULL! Я??? Нет, я такого не мог указывать. Очень даже льзя строить Foreign Key на необязательном поле. Иначе как, например, строить связь один-ко-многим с необязательным вхождением со стороны многие? Обязательное поле - это обязательное поле. Внешний ключ - это внешний ключ. Не надо путать теплое с мягким. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 10:24:35
|
|||
|---|---|---|---|
|
|||
Что за ссылочная целостность такая? |
|||
|
#18+
Я всё понял - сделаю его Not Null. Только нормальная прога ударила бы меня по рукам еще в момент построения связи и сказала бы - мол, нельзя так, а надо так и вот так. А раз уж позволяешь - будь добр уметь с этим корректно работать, или в автомате делай его Not Null. Вот Visual FoxPro вроде стразу говорит - типа, индекс соответствующий сделай сначала, потом объединяй... Ладно - так, значит так. Вроде больше нечего обсуждать - спасибо всем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 10:27:02
|
|||
|---|---|---|---|
Что за ссылочная целостность такая? |
|||
|
#18+
йййй это значит ,как верно указывает йййй,что FOREIGN KEY НЕЛЬЗЯ строить на поле,если оно не NOT NULL! Я??? Нет, я такого не мог указывать. Очень даже льзя строить Foreign Key на необязательном поле. Иначе как, например, строить связь один-ко-многим с необязательным вхождением со стороны многие? Обязательное поле - это обязательное поле. Внешний ключ - это внешний ключ. Не надо путать теплое с мягким. зззз водка была тёплой , а что было мягким ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 10:35:35
|
|||
|---|---|---|---|
|
|||
Что за ссылочная целостность такая? |
|||
|
#18+
Только нормальная прога ударила бы меня по рукам еще в момент построения связи и сказала бы - мол, нельзя так, а надо так и вот так. Чего нельзя? Связь нельзя делать по необязательному полю? Да кто вам такую чушь сказал? Вот Visual FoxPro вроде стразу говорит - типа, индекс соответствующий сделай сначала, потом объединяй... Ну а аксес и индекс сам делает для связи. Или вам кто-то сказал, что нельзя индексировать необязательные поля? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 14:23:04
|
|||
|---|---|---|---|
|
|||
Что за ссылочная целостность такая? |
|||
|
#18+
ИМНО, в Access есть противоречие между FK и UK. В известных мне других системах (и, кстати, в Access 2.0) FK не проверяется если хотя бы одно из его полей NULL. В Access если в FK есть NULL и не NULL, вставка пройдет лишь если в соответствующем UK есть такая же комбинация значений (которая может и повторяться!). Т.е. получается как-бы многие-ко-многим!!! Не есть ли это грубая архитектурная ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 14:30:21
|
|||
|---|---|---|---|
|
|||
Что за ссылочная целостность такая? |
|||
|
#18+
Не есть ли это грубая архитектурная ошибка? Есть Но это уже немного из другой оперы. Из оперы про то, что на стороне " один " должен быть уникальный индекс по обязательному полю / комбинации обязательных полей. Или же аксес должен по другому обрабатывать Null в уникальных индексах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 15:52:07
|
|||
|---|---|---|---|
|
|||
Что за ссылочная целостность такая? |
|||
|
#18+
2 йййй Уникальность ключа на стороне "один" естественно предполагается (без этого не создашь FK). Но ситуация, когда имеется FK, некоторые поля которого не заполняются возможна. И в нынешнем Access выход из нее - дублирование обязательной части FK (с проверками равенства, естественно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 15:59:12
|
|||
|---|---|---|---|
Что за ссылочная целостность такая? |
|||
|
#18+
В MS-SQL например совершенно спокойно можно создавать Foreign key на nullable поля, при этом проверяются только непустые значения. Не вижу в этом ничего плохого для архитектуры БД :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 16:10:58
|
|||
|---|---|---|---|
|
|||
Что за ссылочная целостность такая? |
|||
|
#18+
2 * Знаю, знаю, не спорю. Ты про логику проверки - я про возможность получения связи многие-ко-многим вместо один-ко-многим. 2 Раз (1) В MS SQL уникальный индекс по необязательному полю не может содержать несколько записей со значением Null - будет нарушение уникальности. Где MS SQL находит нарушение - мне непонятно, ибо в таблице отсутствуют записи, в которых индексированные поля совпадали бы (ибо Null не равен ничему, в том числе и другому Null'у) В аксесе уникальный индекс по необязательному полю может содержать несколько Null'ов. Что само по себе и неплохо, но в сочетании с проверкой частично заполненного FK - дает то самое грубое архитектурное нарушение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 16:19:44
|
|||
|---|---|---|---|
|
|||
Что за ссылочная целостность такая? |
|||
|
#18+
Вдогонку 2 * *2 йййй Уникальность ключа на стороне "один" естественно предполагается (без этого не создашь FK). Уникальность - предполагается Однако я писал: авторчто на стороне "один" должен быть уникальный индекс по обязательному полю / комбинации обязательных полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 16:26:31
|
|||
|---|---|---|---|
|
|||
Что за ссылочная целостность такая? |
|||
|
#18+
Да, но речь не об этом. А о том, что 1. на сторне "много" требуется все или ничего 2. на стороне "один" обязательность заполнения не требуется системой и если ее нет, приходим к странному 3. правила меняются от версии к версии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 16:35:57
|
|||
|---|---|---|---|
|
|||
Что за ссылочная целостность такая? |
|||
|
#18+
2. на стороне "один" обязательность заполнения не требуется системой и если ее нет, приходим к странному Да и я, в общем-то, о том же. Либо обязательность, либо не проверять ссылки для частично заполненного FK (и не выполнять всякие там каскадные обновления/удаления), либо получим бред. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 17:01:14
|
|||
|---|---|---|---|
Что за ссылочная целостность такая? |
|||
|
#18+
ййййибо Null не равен ничему, в том числе и другому Null'уЕсли уйти из проскости Скуля в абстрактное философствование, то это - довольно сильное утверждение. Скорее всего, записи не отбираются потому, что для двух Null-ей сама операция сравнения (равно/не равно) становится невыполнимой, ибо в такой трактовке Null1 <равен/не равен> Null2 - одинаково бессмысленные условия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 17:24:21
|
|||
|---|---|---|---|
Что за ссылочная целостность такая? |
|||
|
#18+
Мощно задвинул ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 17:51:10
|
|||
|---|---|---|---|
Что за ссылочная целостность такая? |
|||
|
#18+
Зашибись. Значит, с точки зрения абстрактного философствования: (Null=Null) = False (Null<>Null) = False Или (Null=Null) = Null (Null<>Null) = Null ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 18:00:23
|
|||
|---|---|---|---|
Что за ссылочная целостность такая? |
|||
|
#18+
Нет. просто недопустимая операция. Типа на ноль делить нельзя, но если вы хотите все же в своей аксиоматике приписать какой-то результат, то будете нести ответственность за весь геморрой, который за этим последует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2004, 18:01:59
|
|||
|---|---|---|---|
|
|||
Что за ссылочная целостность такая? |
|||
|
#18+
Алё, гараж??? Ctrl-G нажмите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=45&tablet=1&tid=1672938]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 253ms |
| total: | 396ms |

| 0 / 0 |
