Я не интересуюсь использованием его для управления версиями исходного кода, но я интересуюсь распределенной управляемой версией персональной Wiki, которую я могу синхронизировать между всеми машинами, которые я использую.
Это означает, что в таблице A может быть одна или несколько записей, относящихся к одной записи в таблице B.
Если у вас уже есть таблицы, используйте оператор ALTER TABLE для создания ограничения внешнего ключа:
ALTER TABLE A ADD CONSTRAINT fk_b FOREIGN KEY (b_id) references b(id)
fk_b
: имя ограничения внешнего ключа, должно быть уникальным для базы данных b_id
: имя столбца в таблице A, в котором вы создаете отношение внешнего ключа b
: имя таблицы, в данном случае b id
: имя столбца в таблице B Это это простой пример классического примера заказа. У каждого клиента может быть несколько заказов , и каждый заказ может состоять из нескольких OrderLine s.
Вы создаете отношение, добавление столбца внешнего ключа . Каждая запись заказа содержит идентификатор клиента, указывающий на идентификатор клиента. Точно так же каждая строка OrderLine имеет значение OrderID. Вот как выглядит диаграмма базы данных:
На этой диаграмме существуют фактические ограничения внешнего ключа . Они не являются обязательными, но обеспечивают целостность ваших данных. Кроме того, они делают структуру вашей базы данных более понятной для всех, кто ее использует.
Я полагаю, вы знаете, как создавать сами таблицы. Тогда вам просто нужно определить отношения между ними. Вы, конечно, можете определять ограничения в T-SQL (как написано несколькими людьми), но они также легко добавляются с помощью конструктора. Используя SQL Management Studio, вы можете щелкнуть правой кнопкой мыши таблицу Порядок , щелкнуть Дизайн (я думаю, что в 2005 году он может называться Edit). Затем в любом месте открывшегося окна щелкните правой кнопкой мыши и выберите Отношения .
Вы увидите другое диалоговое окно, справа должно быть представление сетки. Одна из первых строк гласит: « Спецификация таблиц и столбцов ». Щелкните эту строку, а затем снова щелкните маленькую кнопку [...], которая появляется справа. Вы получите этот диалог:
Таблица Порядок уже должна быть выбрана справа. В левом раскрывающемся списке выберите таблицу клиентов. Затем в левой сетке выберите столбец ID
. В правой сетке выберите столбец CustomerID
. Закрываем диалог, и следующий. Нажмите Ctrl + S для сохранения.
Наличие этого ограничения гарантирует, что никакие записи заказа не могут существовать без сопутствующей записи клиента.
Чтобы эффективно запрашивать такую базу данных, вы можете захотеть ] прочтите о JOINs .
Если вы говорите о двух типах сущностей, скажем, учителях и учениках, вы должны создать по две таблицы для каждой и третью для хранения взаимосвязей. Эта третья таблица может иметь два столбца, например, teacherID и StudentId. Если это не то, что вы ищете, уточните свой вопрос.
Я обычно это делаю (sql server).
Create Table Master (
MasterID int identity(1,1) primary key,
Stuff varchar(10)
)
GO
Create Table Detail (
DetailID int identity(1,1) primary key,
MasterID int references Master, --use 'references'
Stuff varchar(10))
GO
Insert into Master values('value')
--(1 row(s) affected)
GO
Insert into Detail values (1, 'Value1') -- Works
--(1 row(s) affected)
insert into Detail values (2, 'Value2') -- Fails
--Msg 547, Level 16, State 0, Line 2
--The INSERT statement conflicted with the FOREIGN KEY constraint "FK__Detail__MasterID__0C70CFB4".
--The conflict occurred in database "Play", table "dbo.Master", column 'MasterID'.
--The statement has been terminated.
Как вы можете видеть, вторая вставка в деталь не работает из-за внешнего ключа. Вот хорошая веб-ссылка, которая показывает различный синтаксис для определения FK во время создания таблицы или после.
Если вы не используете SSMS, то вот синтаксис:
ALTER TABLE <table_name>
ADD <constraint_name> FOREIGN KEY
(<column_name1> ,
<column_name2> )
REFERENCES <table_name>
(<column_name1> ,
<column_name2>)