Застрял в вопросе дизайна базы данных - PullRequest
2 голосов
/ 08 ноября 2010

Скажите, у меня есть следующие таблицы:

  • GearType: сноуборд / шлем / обувь / что угодно

  • GearModel: описание производителя, размера и GearType

  • Gear: представляет собой физический экземпляр экипировки, принадлежит GearModel и описывает его штрих-код, количество раз его износа ...

  • Участник: лицо, которому может быть назначено Снаряжение для каждого существующего geartype

  • GearAssignation: имеет двойной PK MemberId / GearTypeId, так что Участнику может быть назначено 0..1 шестеренка для каждого типа, также есть FK GearId

Мой вопрос: Поскольку Gear не может быть назначен более чем одному Участнику одновременно, как составить связь между Gear и Gear. Назначение мощности от 1 до 0..1?

В лучшем случае мне удалось сделать это, используя связь между Gear.Id и GearAssignation.GearId с уникальным ключом (помните, что это не может быть PK из-за двойного PK MemberId / GearTypeId) в GearId. Но я бы хотел избавиться от этой Великобритании, потому что мой инструмент разработки программного обеспечения не распознает ее.

Как и предполагалось, вот диаграмма из SSMS: all irrelevant columns have been deleted

Внесение значительных изменений в текущую модель не проблема для меня. Предложения?

PS: не знаю, поможет ли это, я использую Microsoft SQL Server 2008

1 Ответ

7 голосов
/ 08 ноября 2010

Я бы сделал это, имея поле в Gear для member_id, которому он назначен.

...