Подтвердить что ты не робот

SQL Server Management Studio - добавление внешнего ключа запутывает?

Мне всегда сложно вводить внешние ключи в основную таблицу в Management Studio.

Допустим, у меня есть

Table1 
{
    ID int, -- Primary Key
    Table2ID int, -- Refers to Table2 ID 
}

Table2 
{
    ID int, -- Primary Key
    SomeData nvarchar(50)
}

Я добавляю внешний ключ в таблицу 1 Right Click -> Relationships -> Table and column specification. Я устанавливаю всплывающие окна "Первичный" в таблицу2, ID и "таблицу внешних ключей" в таблицу1, таблицу2ID.

Мои вопросы:

  • Не следует указывать Таблицу2 для    "Таблица внешних ключей" и Таблица 1 для   Основной ключ? Я понимаю   неправильно?

  • При сохранении я получаю предупреждение "Следующие таблицы будут сохранены в вашей базе данных". и он показывает обе таблицы. Я действительно этого не понимаю. Я только изменил таблицу1. Почему отображается вторая таблица?

4b9b3361

Ответ 1

  • Нажмите символ расширения рядом с таблицей.
  • Щелкните правой кнопкой мыши по папке "Ключи" и выберите "Новый внешний ключ".
  • (В качестве альтернативы вы можете нажать кнопку "Отношения" на панели инструментов, когда открыта таблица)
  • Нажмите кнопку "..." в строке "Таблицы и столбцы", чтобы открыть редактор.
  • Выпадающим слева будет таблица, которую вы добавляете, и статическое текстовое поле отобразит таблицу, в которую вы добавляете.
  • Используйте выпадающие меню, чтобы указать ваши ограничения, и убедитесь, что обе стороны имеют одинаковое количество столбцов.

Ответ 2

Почему бы вам просто не использовать эквивалентные выражения T-SQL? Кажется намного легче и менее запутанным для меня:

ALTER TABLE dbo.Table1
  ADD CONSTRAINT FK_Table1_Table2
    FOREIGN KEY(Table2ID) REFERENCES dbo.Table2(ID)

Когда я читаю это, я считаю, что сразу видно, какие две таблицы задействованы и как они связаны (Table1.Table2ID - (ссылки) → Table2.ID)

Если вы хотите остаться в мире дизайнеров SSMS: вы также можете создать диаграмму базы данных ваших вовлеченных таблиц, а затем просто перетащить и отбросить столбец Table2ID с Table1 до Table2 и перенести его на столбец ID - это графически сообщит SSMS, что вы хотите сделать, и вам просто нужно просмотреть свои варианты и нажать "ОК" в появившемся диалоговом окне.

Ответ 3

1. Не следует указывать Таблицу2 для "Таблицы внешнего ключа" и Таблицы 1 для Основной ключ? Я понимаю не так?

Я считаю, что ваше понимание неверно. Таблица 2 - это таблица, основной ключ которой вы указываете. Поэтому он указан в разделе Первичный ключ. Таблица 1 - таблица, которая будет иметь внешний ключ (ссылка на первичный ключ другой таблицы); поэтому он указан в разделе "Таблица внешних ключей".

Насколько обе таблицы сохранены, даже если внешний ключ указан ниже, как принадлежащий таблице 1: я считаю, потому что внешний ключ сдерживает обе таблицы. Они оба должны "знать" об ограничении, поэтому их нужно сохранить.

Ответ 4

ALTER TABLE dbo.Table1
  ADD CONSTRAINT FK_Table1_Table2
    FOREIGN KEY(Table2ID) REFERENCES dbo.Table2(ID)