SQL - я должен использовать соединительную таблицу или нет? - PullRequest
4 голосов
/ 18 августа 2011

Я создаю новую базу данных SQL Server 2008.У меня есть две таблицы, которые связаны между собой.

Первая таблица выглядит следующим образом:

 BRANDS // table name
 BrandID // pk
 BrandName // varchar

Вторая таблица выглядит следующим образом:

 MODELS // table name
 ModelID // pk
 ModelDescription // varchar

Каждый бренд будетиметь хотя бы одну модель и каждая модель будет принадлежать только одной марке.

Вопрос в том, должен ли я создать такую ​​соединительную таблицу

 BRANDS_MODELS // table name
 RecordID // pk
 BrandID
 ModelID

Или я должен изменить таблицу MODELS, добавив в нее BrandID, подобный этому

 MODELS // table name
 BrandID // 
 ModelID // pk
 ModelDescription // varchar

Спасибо!

Ответы [ 3 ]

10 голосов
/ 18 августа 2011

Если модель принадлежит только одному бренду, вы можете поместить FK для бренда на стол модели (ваш второй подход).Первый способ с таблицей соединений - это отношение «многие ко многим».

3 голосов
/ 19 августа 2011

Исходя из того, что вы сказали до сих пор, я исключил бы соединительную таблицу и использовал бы обычный внешний ключ в таблице MODELS.

Но если модель может перемещать бренды, и вам необходимо поддерживатьВ текущем соединении и истории таблица соединений имеет преимущества по сравнению с сохранением истории всей строки MODELS, когда изменяется только внешний ключ.Также, если существуют другие вещи, которые могут быть связаны с отношением «сущность» больше, чем сущность MODEL, может иметь смысл иметь соединительную таблицу.Вы всегда можете установить уникальное ограничение для ModelID в соединительной таблице, чтобы гарантировать, что одна и та же модель не связана с несколькими брендами.Поэтому, хотя для эффективной реализации отношения «многие ко многим» требуется таблица соединений, она также может быть полезна для отношений «один ко многим», где само это отношение имеет атрибуты.

1 голос
/ 18 августа 2011

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

Например, вы не хотели бы включать создание Honda Civic и Toyota Civic. Это пример отношения марки / модели автомобиля, но оно должно соответствовать отношениям марки / модели.

...