То, что у вас есть, это отношение «многие ко многим» между логинами и сценами.
Правильный способ реализации этого - три таблицы, например:
CREATE TABLE logins (login_id INT PRIMARY KEY ...);
CREATE TABLE scenes (scene_id INT PRIMARY KEY ...);
CREATE TABLE login_has_scene (
login_id INT NOT NULL,
scene_id INT NOT NULL,
PRIMARY KEY (login_id, scene_id),
FOREIGN KEY (login_id) REFERENCES logins (login_id),
FOREIGN KEY (scene_id) REFERENCES logins (scene_id)
);
Таким образом, вы можете добавлять новые сцены в любое время, и вы можете ссылаться на любую сцену из любого входа в систему, добавив по одной строке на каждую пару входа в систему.
Это лучше, чем использование SET
, потому что SET
требует, чтобы вы переопределяли список значений, используя ALTER TABLE
каждый раз, когда добавляете сцену, и это станет довольно тяжелой работой.
Также столбец SET
допускает только до 64 различных значений. Если вы хотите, чтобы эти таблицы поддерживали дальнейшие сцены, вам придется добавить больше столбцов SET или начать перерабатывать идентификаторы сцен или что-то в этом роде.
Таблица «многие ко многим» - гораздо лучшее решение.
Честно говоря, я использую MySQL в течение почти 20 лет, и я никогда не нашел хорошего применения для типа данных SET
.