Как задать связи разного вида с помощью Foreign key?
Ну то есть, стандартное назначение key для внешнего ключа и последующее описание внешнего ключа приводит к связи 1 к 1, но как дать понять, что связь 1 ко многим или многие ко многим?
Артем Прохоров, Не совсем. Вы указали версию СУБД, но не её название. MySQL, PostgreSQL, MS SQL, Oracle Database, IBM DB2 и т.д. Эти СУБД имеют отличия за пределами ANSI SQL.
Но, судя по версии, у вас MySQL.
Для правильного вопроса надо знать половину ответа
В MySQL внешний ключ (Foreign Key) служит только для дополнительного автоматического контроля целостности базы. В подчинённой таблице поле не может принимать значение, не входящее в список значений связанного поля родительской таблицы или NULL.
Тип связи в MySQL не учитывается.
Артем Прохоров, Связь 1:1, как правило, не делается. Связь n:n стандартно строится как две связи 1:n с промежуточной таблицей. Так что, можно считать, что все связи имеют тип 1:n.
Любой внешний ключ (FOREIGN KEY в структуре таблицы) задаёт связь типа 1:N (если локальное выражение внешнего ключа не может быть NULL) либо (0-1):N.
Задание связи 1:1 (и соответственно (0-1):1) требует дополнительного ограничения уникальности на локальной стороне.
Задание связи M:N требует дополнительной связующей таблицы.
В данном случае "задание связи" == "создание правила контроля целостности и непротиворечивости данных, контролируемое на стороне сервера соответствующей подсистемой".