Очередная странность при работе СОСТАВНОГО внешнего ключа (два nullable-столбца).

Таблоид
Дата: 29.06.2012 00:28:10
hi all

Есть ощущение, что уже натыкался на это. Но найти не могу (ни тут, ни в трекере по своим тикетам).
Чтение обличительной речи DS про FK в разных базах и то, как это плохо, навеяло на следующий простой эксперимент (в ОДНОМ окне):
SQL> recreate table t2(f01 int); commit; -- drop dependency on table `t1`
SQL> recreate table t1(f01 int, f02 int, unique(f01,f02)); commit;
SQL> recreate table t2(f01 int, f02 int, foreign key(f01,f02) references t1(f01,f02) ); commit;
SQL> insert into t2 values(1,1);
Statement failed, SQLSTATE = 23000
violation of FOREIGN KEY constraint "INTEG_12" on table "T2"
-Foreign key reference target does not exist

SQL> -- Пока всё очень хорошо.
SQL> rollback;
SQL> insert into t2 values(1,null); -- ?!
SQL> insert into t2 values(null,1); -- ??!!
SQL> commit;

В итоге, в таблице t2 есть строки, с частично заданными столбцами, которым нет соотв-вия в t1.
Этот результат - правильный или нет ? я не про вариант, когда все столбцы из unique-набора содержат null'ы,
а именно про данный вариант: часть столбцов - задана, часть - нет.

PS.
SQL> show version;
ISQL Version: WI-V2.5.2.26501 Firebird 2.5
Server version:
Firebird/x86/Windows NT (access method), version "WI-V2.5.2.26501 Firebird 2.5"
Firebird/x86/Windows NT (remote server), version "WI-V2.5.2.26501 Firebird 2.5/XNet (BALAHA)/P12"
Firebird/x86/Windows NT (remote interface), version "WI-V2.5.2.26501 Firebird 2.5/XNet (BALAHA)/P12"
on disk structure version 11.2
Таблоид
Дата: 29.06.2012 00:50:28
Проверил в ora 10 xe & m$ sql 2005: там поведение точно такое же. Значит, сиё общепринято.
Вопрос снимаю (пока ).
Гаджимурадов Рустам
Дата: 29.06.2012 00:57:51

Зря вопрос снимаешь. Я на всякий случай еще раз скажу,
что составные FK - суть зло. Независимо от СУБД.

Posted via ActualForum NNTP Server 1.5

Dimitry Sibiryakov
Дата: 29.06.2012 01:04:13

Гаджимурадов Рустам
составные FK - суть зло. Независимо от СУБД.

nullable unique - зло. А FK это всего лишь последствия.

Posted via ActualForum NNTP Server 1.5

Гаджимурадов Рустам
Дата: 29.06.2012 01:11:40

Nullable unique это не зло. На их отсутствие даже жаловались.
Более того, даже составные nullable unique ни разу не зло.

Posted via ActualForum NNTP Server 1.5

Dimitry Sibiryakov
Дата: 29.06.2012 01:19:18

Гаджимурадов Рустам
Nullable unique это не зло. На их отсутствие даже жаловались.

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

Posted via ActualForum NNTP Server 1.5

Гаджимурадов Рустам
Дата: 29.06.2012 02:17:07

Патологоанатомы из морга подсказывают, что кое-кто бредит...
Ты всерьез не допускаешь NULL в UNIQUE-полях и не путаешь
при этом UNIQUE и Primary Key ? Точно-точно?

Posted via ActualForum NNTP Server 1.5