Полагаю, вы ищете вложенные отношения между тремя (3) таблицами: Forms, FormLabel и FormEntry . Каждый из них имеет уникальный первичный ключ, и отношение может быть изображено как:
- Forms является родительской сущностью.
- FormLabel ищет Метка регистров из таблицы форм.
- FormEntry проверяет регистры из таблицы FormLabel, а также из таблицы форм.
Таким образом, сценарий SQL может использоваться с вышеупомянутыми объектами следующим образом, если вы иметь базу данных с именем MYAPP в виде обычного SQL ANSI уже на SQL сервере на помещении или SQL Azure ядро базы данных:
create Table Forms (
FormID int not null,
FormName nvarchar(30),
IsRequired bit,
IsActive bit,
IsDeleted bit
CONSTRAINT PK_FormID PRIMARY KEY CLUSTERED (FormID)
) on [PRIMARY];
create Table FormLabel (
FormLabelId int not null,
FormID int,
LabelName nvarchar(30),
IsActive bit,
isDeleted bit,
CustomeField nvarchar(30),
DisplayOrder int,
CONSTRAINT PK_FormLabelId PRIMARY KEY CLUSTERED (FormLabelId)
) on [PRIMARY];
create Table FormEntry (
EntryID int not null,
FormID int,
FormLabelID int,
EntryName nvarchar(max),
IsActive bit,
IsDeleted bit,
DisplayOrder int
CONSTRAINT PK_EntryID PRIMARY KEY CLUSTERED (EntryID)
) on [PRIMARY];
Итак, подход для внешних ключей на
FormLabelId create X Записи ( или n ), ссылающиеся на FormID + FormLabelId
, которые вы написали, могут быть сгенерированы с набором внешних ключей для FormID и для FormLabelId, указанных в таблице. FormEntry:
/* FormEntry */
alter table FormEntry
add constraint fk_FormLabelID foreign key (FormLabelID)
references FormLabel (FormLabelId)
constraint fk_FormEntry_FormID foreign key (FormID)
references Forms (FormID)
;
Это выглядит так:
Однако в примере
Создайте новую форму с 5 метками, каждая с 5 записями. Form1 -> Label1 -> Entry1-5. Form2 -> Label2 -> Entry1-5
Вы указываете на создание 5 меток, таким образом, они представляют собой 5 регистров в таблице FormLabel с 5 регистрами в таблице FormEntry, но здесь не очищаются никакие правила целостности. Инсайт используется следующим образом с тем же сценарием с легкой модификацией:
/* FormLabel */
alter table FormLabel
add constraint fk_FormID foreign key (FormID)
references Forms (FormID)
ON UPDATE CASCADE
;
Где ключевое слово CASCADE соответствует соответствующим строкам, которые обновляются в ссылочной таблице (в данном случае FormLabel) когда эта строка обновляется в родительской таблице (формы).
Итак, я надеюсь, что ваши отзывы заслуживают внимания.