Столбец SQL, содержащий массив значений строк таблицы - PullRequest
5 голосов
/ 20 февраля 2012

Я довольно плохо знаком с базами данных и SQL. У меня есть задание, но я не знаю, как это решить.

Допустим, у меня есть таблица с именем Persons. Он имеет следующие столбцы: userId (первичный ключ), userName и tags.

Tags - это еще одна таблица, содержащая только id и tagName. Человек может иметь несколько тегов, например: «футбол», «кулинария» и т. Д.

Каждый тег соответствует Tag строке таблицы. Но я не уверен, как добиться такого рода отношений. Как мне этого добиться?

Я предполагаю, что это как-то связано с внешними ключами и делает столбцы людей тегом массива внешних ключей.

1 Ответ

9 голосов
/ 20 февраля 2012

Обычно вы хотите иметь таблицу отношений (это называется отношением многие-ко-многим, или M: M).

Persons(id int, name varchar(40)...)

Tags(id int, name varchar(40)....)

PersonTags(id int,
           personid FOREIGN KEY References Persons(id), 
           TagId FOREIGN KEY references Tags(id))

Таким образом, вы можете иметь столько или меньше тегов, скольковы хотите, но данные тега не хранятся в строке для человека.Вы можете потенциально хранить ряд значений в одном поле, но это действительно ужасная идея по ряду причин.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...