Детерминации
Распорка
Распорка - это два внешних ключа, соединяющих три таблицы:
ссылающиеся поля находятся в одной промежуточной таблице.
create table a (
id num primary key,
data float
);
create table b (
id num primary key,
ref1 num references a(id), -- important
ref2 num references a(id), -- ballast
ref3 num references c(id), -- important
ref4 num references c(id), -- ballast
data float
);
create table c (
id num primary key,
data float
);
Детерминация
состоит из двух полей, перечисленных через двоеточие:
поле, ссылающееся на предыдущую секцию ("a"), указывается первым;
поле, ссылающееся на последующую секцию ("c"), указывается вторым
(ссылающиеся поля могут быть одноименными).
Пайщик распорки состоит из трех звеньев и выглядит так:
Стяжка
Стяжка - это два внешних ключа, соединяющих три таблицы:
ссылающиеся поля ссылаются на одну промежуточную таблицу.
create table a (
id num primary key,
ref1 num references b(id), -- important
ref2 num references b(id), -- ballast
data float
);
create table b (
id num primary key,
data float
);
create table c (
id num primary key,
ref1 num references b(id), -- important
ref2 num references b(id), -- ballast
data float
);
Пайщик стяжки состоит из трех звеньев и выглядит так:
Перекресток
Перекресток - это два внешних ключа,
соединяющих две таблицы в противоположных направлениях:
одно ссылающееся поле находится в одной таблице и ссылается на первичный ключ второй таблицы,
другое ссылающееся поле находится во второй таблице и ссылается на первичный ключ первой таблицы.
create table a (
id num primary key,
ref num references b(id),
data float
);
create table b (
id num primary key,
lnk num references a(id),
data float
);
Существуют два не эквивалентных пайщика перекрестка.
Разветвление
Разветвление - это два внешних ключа, соединяющих три таблицы:
ссылающиеся поля ссылаются на одну обрамляющую таблицу
create table a (
id num primary key,
data float
);
create table b (
id num primary key,
ref1 num references a(id), -- important
ref2 num references a(id), -- ballast
data float
);
create table c (
id num primary key,
ref1 num references a(id), -- important
ref2 num references a(id), -- ballast
data float
);
(пайщик разветвления:)
.a.(b/ref1 c/ref1).
.a.(b/ref1,c/ref1).
... или ссылающиеся поля находятся в одной обрамляющей таблице
create table a (
id num primary key,
ref1 num references b(id), -- important
ref2 num references b(id), -- ballast
ref3 num references c(id), -- important
ref4 num references c(id), -- ballast
data float
);
create table b (
id num primary key,
data float
);
create table c (
id num primary key,
data float
);
(пайщик разветвления:)
.a/ref1+ref1.(b c).
.a/ref1,ref1.(b,c).
Продолжение
Продолжение - это два внешних ключа, соединяющих три таблицы:
ссылающиеся поля ссылаются на две обрамляющие таблицы
create table b (
id num primary key,
data float
);
create table c (
id num primary key,
data float
);
create table d (
id num primary key,
ref1 num references b(id), -- important
ref2 num references b(id), -- ballast
ref3 num references c(id), -- important
ref4 num references c(id), -- ballast
data float
);
(пайщик продолжения:)
.(b.d/ref1 c.d/ref3).
.(b.d/ref1,c.d/ref3).
... или ссылающиеся поля находятся в двух обрамляющих таблицах
create table b (
id num primary key,
ref1 num references d(id), -- important
ref2 num references d(id), -- ballast
data float
);
create table c (
id num primary key,
ref1 num references d(id), -- important
ref2 num references d(id), -- ballast
data float
);
create table d (
id num primary key,
data float
);
(пайщик продолжения:)
.(b/ref1 c/ref3).d.
.(b/ref1,c/ref3).d.
Тюрин Дмитрий
Сайт управляется системой
uCoz