INSERT INTO Таблица и использование uniqueid для Entry, INSERT во 2-ю таблицу и использование uniqueid для 2-й таблицы, наконец, 3-й., Каждая ссылается на предыдущий - PullRequest
0 голосов
/ 07 апреля 2020

Пример; 3 таблицы.

Table1 = Forms - (key) FormID int, FormName nvchar(30), Required bit, IsActive bit, IsDeleted bit
Table2 = FormLabel - (key) FormLabelId int, FormID int, LabelName nvhcar(30), IsActive bit, isDeleted bit, CustomeField nvchar(30), DisplayOrder int
Table3 = FormEntry - (key) EntryID int, FormID int, FormLabelID int, EntryName nvchar(max), IsActive bit, IsDeleted bit, DisplayOrder int

Мне нужно создать форму, затем использовать FormID этой формы, затем использовать в качестве ссылки для создания метки, а затем с помощью созданного FormLabelId создать X записей, ссылающихся на FormID + FormLabelId

Скорее всего, будет добавлено несколько FormEntry для каждого ярлыка на форму.

Пример;

Создайте новую форму с 5 ярлыками, в каждом по 5 записей , Form1 -> Label1 -> Entry1-5. Form2 -> Label2 -> Entry1-5 et c.

1 Ответ

0 голосов
/ 07 апреля 2020

Полагаю, вы ищете вложенные отношения между тремя (3) таблицами: Forms, FormLabel и FormEntry . Каждый из них имеет уникальный первичный ключ, и отношение может быть изображено как:

  1. Forms является родительской сущностью.
  2. FormLabel ищет Метка регистров из таблицы форм.
  3. 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)   
  ;

Это выглядит так:

enter image description here

Однако в примере

Создайте новую форму с 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) когда эта строка обновляется в родительской таблице (формы).

Итак, я надеюсь, что ваши отзывы заслуживают внимания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...