В SQL у меня есть таблица для пользователей. На моем веб-сайте я хочу, чтобы люди могли создавать группы, состоящие из 2 или более пользователей, но я не знаю, как их сохранить. Одновременно люди могут быть частью нескольких групп. Если я бы сделать таблицу groups
, как я мог бы хранить его члены в этой таблице?
У вас будут groups
таблиц и одна называется userGroups
. Они выглядели бы так:
create table groups (
groupId int auto_increment primary key,
groupName varchar(255)
);
create table userGroups (
userGroupId int auto_increment primary key,
userId int not null,
groupId int not null,
foreign key (userId) references users(userId),
foreign key (groupId) references groups(groupId)
);
То, что вы описываете, называется отношением "многие ко многим", и для этого требуется третья таблица:
С третьей таблицей, содержащей первичный ключ (pk)) группы и pk человека. Эти столбцы представляют собой pk таблицы. У вас могут быть и другие столбцы, например, дата присоединена или что угодно. У вас есть одна строка в этой таблице на человека/группу.
Это общая концепция/образец, поэтому убедитесь, что вы учитесь и понимаете это.