2013-03-05 4 views
0

Например, у меня есть таблица positions, в которой я хотел бы создать связь между несколькими строками таблицы. Если количество строк, которые должны быть связаны друг с другом, неизвестно, что имеет наибольшее значение с отдельной таблицей для связывания идентификаторов?Создать связь/ссылку между несколькими строками таблицы

Является ли это лучше всего ...

  • Создайте отдельную таблицу links со многими колоннами (т.е. linked_id1 [...] linked_id [п]), где linked_ids являются идентификатором каждой строки и Столбец links.id - это идентификатор ссылки. Логика заключается в том, что мы можем создавать больше столбцов, чем нам кажется.

ИЛИ

  • Создать отдельную таблицу links с двумя колоннами, id и linked_ids где linked_ids представляет собой разделенная запятая массива «связанные» строки из positions.

ИЛИ

  • ли вышеупомянутая заменить массив с данными JSON.

Каждая строка может быть связана только с одной группой, которая, мы надеемся, упрощает вещи.

+0

Ничего из этого. 3. Читайте немного о 1NF и 2NF и 3NF, и вы получите хорошее направление. –

+0

@HankyPanky ㇱ Спасибо за ваше предложение. Вы говорите, что я должен сделать параметр массива, а затем использовать 1NF в массиве, чтобы у меня было два столбца 'link_id' и' row_id' в третьей таблице, где 'link_id' не уникален? – Tomanow

ответ

0

Если каждая строка может быть включена в несколько связанных групп, вы можете создать таблицу LINKS с двумя полями: ID1, ID2, которые будут хранить каждую отдельную ссылку.

Если каждая строка может быть только в одной связанной группе, вы можете добавить поле GROUP_ID в таблицу positions.

Если вышеизложенное не отвечает на ваш вопрос, уточните ваши требования.

+0

Я отредактировал свой OP, чтобы включить разъяснение: Каждая строка может быть связана только с одной группой. Вы не совсем ответили на этот вопрос, хотя, возможно, я не спрашивал так четко, как я думал. – Tomanow

+0

@Tomanow - Если каждая строка может принадлежать только одной группе связанных строк (скажем, ученики того же класса, солдаты в одном и том же взводе), то вам не нужна дополнительная таблица из * моделирования данных *. У вас есть только два тега [mysql] и [sql], которые заставляют нас думать, что ваш вопрос касается базы данных, а не вашего приложения, которое ее использует. –

+0

Было бы намного проще, если бы в рядах было что-то общее, как ваши ученики, в том же классе, к сожалению, они будут добавлены вручную в связанную группу через флажок. Каждой связанной группе нужен уникальный идентификатор, поэтому я хотел бы сначала добавить данные в отдельную таблицу с AI PK. Тогда я мог бы использовать простой триггер для обновления каждой строки с идентификатором ссылки, если мне нужно. Прочитайте мой комментарий в ответ на Хэнки, я думаю, что это направление, которое я должен принять. Спасибо за ваше предложение, я ценю отзывы. – Tomanow