Итак, у вас есть Groups
и Users
.Каждый Group
имеет ноль или более Users
;каждый User
имеет ноль или более Groups
.Традиционное отношение «многие ко многим».
Обычно можно добавить User
к Group
или Group
к User
.Однако у вас нет ни Group
, ни User
, у вас есть только GroupId
и UserId
.и из-за большого количества вставок вы не хотите извлекать Users
и Groups
, из которых вы хотите создать отношения
Проблема в том, что если бы вы могли добавить комбинацию GroupId-UserIdнепосредственно к вашей соединительной таблице, как вы узнали бы, что не добавите уже существующее отношение «группа-пользователь»?Если тебя это не волнует, ты получишь двойное отношение.Это может привести к проблемам: хотите ли вы, чтобы они отображались дважды, если вы спросите Users
из Group
?Какой из них должен быть удален, если связь заканчивается, или все они должны быть удалены?
Если вы действительно хотите реализовать возможность двойного отношения, тогда вам нужно будет Реализовать таблицу пользовательских соединений какздесь описано В дополнительном поле будет указано количество отношений.
Это не поможет вам с большой партией, поскольку вам все равно потребуется извлечь поле из пользовательской таблицы соединений, чтобы увеличить NrOfRelations
value.
С другой стороны, если вы не хотите двойных отношений, вам нужно проверить, существует ли значение, и вы не хотите извлекать данные перед вставкой.
Обычно количество добавлений в базу данных намного меньше, чем количество запросов.Если у вас есть большой пакет данных для вставки, то обычно это происходит только на этапе инициализации базы данных.Я бы не стал слишком сильно оптимизировать инициализацию.
Подумайте о том, чтобы запомнить уже выбранные группы и пользователей в словаре, чтобы они не выбирались дважды.Однако, если ваш список действительно огромен, это не практичное решение.
Если вам действительно нужна эта функция в течение длительного периода времени, подумайте о создании хранимой процедуры, которая проверяет, существует ли GroupId / UserId всоединительную таблицу, и если нет, добавьте ее.