Как установить связь один к одному, без создания записи в таблице?
Предположим что есть таблица с ролями в которой 5 записей, я хочу сделать так что бы у меня пользователи ссылались на какую-то из этих записей,но я не знаю как это реализовать, ниже примеры
вот к примеру запись многие ко многим, с промежуточной таблицей, и в этом случае запись в таблице roles не нужно будет создавать каждый раз, а лишь запись в user_roles - как это реализовать но со связью один к одному ? Что бы у юзера была роль
мои предположения но с промежуточной таблицей, но мне кажется это каким-то не верным вариантом не знаю почему, потому что я явно хочу что бы у юзера была лишь 1 роль
без промежуточной таблицы, и без создания записи в таблице ролей, но зато у роли есть юзер а не наоборот, как в этом случае выбрать при запросе на получения юзера, получить ещё и его роль ? если связь в другом направлении
Ответы (1 шт):
При конфигурации связи один-к-одному вам не нужна дополнительная таблица, всё что вам нужно для установки данной связи - это просто добавить ссылку (references
) к одной из таблиц. Связь много-ко-многим
требует наличия дополнительной таблицы, но связь один-к-одному
- нет. В одну из таблиц добавьте столбец, который будет Внешним ключом
к другой таблице. Вот пример реализации такой связи:
CREATE TABLE Пользователи (
id INT PRIMARY KEY AUTO_INCREMENT,
имя VARCHAR(50),
email VARCHAR(50) UNIQUE
);
CREATE TABLE Профили (
id_профиля INT PRIMARY KEY AUTO_INCREMENT,
id_пользователя INT UNIQUE REFERENCES Пользователи(id) not null,
дата_рождения DATE,
фото VARCHAR(100),
);
Тут стоит учесть, что связь один-к-одному осуществляется при помощи этой строчки кода:
id_пользователя INT UNIQUE
Если не указывать UNIQUE
, это будет связь один-ко-многим. not null
делает эту связь обязательной.
Ресурсы для изучения: