@Frik44

Как присвоить несколько элементов в одной ячейки SQLite3?

Здравствуйте не могу разобраться как сделать такую схему в бд
ID_User - "id одного пользователя" - INT
ID_name - "id_name1, id_name2..." - INT
Name - "name1, name2" - TEXT
То есть к id одного пользователя должно быть привязано несколько id имя и само имя. Помогите пожалуйста разобраться как можно заполнить это и после делать запрос SELECT
  • Вопрос задан
  • 409 просмотров
Решения вопроса 1
@rPman
сделаю 'медвежью услугу'.

создаешь две таблицы
user (id и другие поля пользователя в будущем) и user_name (id, name, user_id) где на каждого пользователя будет по одной записи в user и по несколько (точнее от задачи, ведь может быть и 0 и 1) будет записей на каждое имя.

p.s. таблица user в твоем примере оказывается не нужна, если больше никаких полей не предвидится, а значит для хранения данных хватило бы user_names но существование таблицы user идеологически верное, так как на его id можно определить автогенерацию идентификатора, контроль уникальности и прочее прочее

чтобы база данных эффективно работала с такими связями есть индексы foreign key в данном случае это индекс user_name.user_id -> user.id

запросы к базе у тебя будут типа
select * from user left join user_names on user_names.user_id=user.id where user.id=xxx

выдаст список user_names указанного пользователя xxx
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Согласно законам нормализации в самой первой нормальной форме 1НФ требуется чтобы все данные лежали
в таблице и ячейчки содержали атомарные значения. Тоесть списки - нельзя. Иначе такая таблица
не признается реляционной и делать с ней реляционные действия невозможно.

Попробуй разбить свою таблицу на две. Пользователи. И id_пользователей.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы