Как вставить несколько значений в один столбец? - PullRequest
0 голосов
/ 20 января 2020

Я настраиваю базу данных для игрового сервера, и я новичок в базах данных, я столкнулся с проблемой, когда мне нужно вставить несколько игроков в тот же столбец , в основном, у меня есть группа, и в этой группе мне нужно добавить несколько игроков, поэтому у меня есть следующие столбцы:

Group Name:
Group Owner:
Players:
Creation Date:

Как бы я go добавил несколько игроки в группу? Нужно ли просто вставить все они в тот же столбец и использовать String.split () в Java? Или есть лучший способ сделать это?

Ответы [ 2 ]

3 голосов
/ 20 января 2020

Я собираюсь предположить, что вы настраиваете реляционную БД. Чтобы быть тупым, вы не хотите вставлять несколько значений в один столбец. Вы хотите спроектировать свои таблицы на основе данных и их отношений друг с другом. Прямо сейчас у вас есть две сущности: группы и игроки. Связь между этими двумя заключается в том, что игрок может принадлежать к группе, правильно? Итак, вы хотите иметь таблицу для каждой сущности и связать их на основе ключа, который представляет их отношения:

Group:
 - group id (PRIMARY KEY)
 - name
 - owner
 - creation date

Player:
 - player id (PRIMARY KEY)
 - (any other player info you may need, like a name)
 - group id (FOREIGN KEY)

A первичный ключ - это уникальный идентификатор вашей таблицы - он идентифицирует одну и только одну запись. внешний ключ ссылается на одну и только одну запись в другой таблице (в данном случае, Group). Приведенный выше дизайн работает , если игроки могут принадлежать к одной и только одной группе . Если игроки могут принадлежать к нескольким группам, вам понадобится еще одна таблица для представления этих отношений:

Group:
 - group id (PRIMARY KEY)
 - name
 - owner
 - creation date

Player:
 - player id (PRIMARY KEY)
 - (any other player info you may need, like a name)

PlayerGroup:
 - player id (FOREIGN KEY)
 - group id (FOREIGN KEY)

Этот дизайн теперь реляционный и нормализован . Вы можете получить данные в своем оригинальном дизайне (или рядом с ним) с помощью запросов (особенно с объединениями). Может быть, это объясняет немного лучше: https://www.ntu.edu.sg/home/ehchua/programming/sql/Relational_Database_Design.html

0 голосов
/ 20 января 2020

Если есть возможность изменить структуру БД, я бы предложил немного ее нормализовать, а не хранить все в одной таблице. Например, вы можете иметь: таблицу игроков, в которой хранятся все игроки (например, имя / фамилия, уникальный идентификатор и т. Д. c), а затем в таблице групп хранятся имя группы, владелец, дата создания и уникальный идентификатор группы. И, наконец, таблица со ссылками «Игрок и группа», в которой будут храниться идентификатор игрока и идентификатор группы для каждого игрока <> Групповые отношения.

Из такой структуры вы можете легко получить любую нужную информацию через SQL (например, от java). Например, чтобы получить всех игроков для данной группы:

select p.player_name from Player_table p
join Player_Group_table pg on p.player_ID = pg.player_ID
join Group_table g on pg.group_ID = g.group_ID
where g.group_name = 'Your Group Name'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...