Есть ли лучший способ хранить данные о связи между двумя таблицами? - PullRequest
0 голосов
/ 07 ноября 2019

В настоящее время у меня есть одна база данных SQL с таблицами.

Я назову их таблицей A и таблицей B. Каждый элемент таблицы A связан с любым числом от 0 до всех существующих столбцов таблицы B (я использую своего рода систему «тегов», которые хранятся в этомТаблица B)

Сейчас я решил создать третью таблицу с именем C, которая состоит из трех столбцов -

Id(key) 
AId
BId
Count

пример

Итак, если у меня есть предмет с ID 1

Id| Name
1 | ColumnOne

, который связан с 3 другими предметами из таблицы B - например, Id: 1, 2, 3

Id| Name
1 | TagOne
2 | TagTwo
3 | TagThree

Тогда C будет выглядеть примерно так:

Id|AId|BId
1 | 1 | 1
2 | 1 | 2
2 | 1 | 3

Я просто чувствую, что иметь несколько записей для одной и той же таблицы довольно излишне. Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 07 ноября 2019

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

Таблица C:

AId|BId
1 | 1
1 | 2
1 | 3
...