Отношения подтип / супертип: как выполнить эти требования - PullRequest
0 голосов
/ 01 апреля 2011

Я борюсь с собой, пытаясь смоделировать БД для выполнения определенных требований.

  • Есть две основные сущности.Один из них известен как команда, подумайте о бизнесе или организации.Другой будет индивидуальным.
  • Команды также могут состоять из отдельных лиц (TeamContacts)
  • Это сайт, требующий членства (т. Е. Чтобы стать участником, необходимо войти в систему и зарегистрироваться)
  • TeamContactsбудет только внутренним каталогом, и они не будут иметь доступа к сайту, если, конечно, они не являются членами, а затем будут иметь такие привилегии.
  • Физические лица, классифицированные как TeamContacts, могут или не могут быть участниками сайта.Это моя главная проблема здесь. Будет очень сложно, порой невозможно, волноваться, если TeamContact также является участником, и наоборот. Членство может истечь, и TeamContacts может переходить от команды к команде.История для участников будет сохраняться, но история для отслеживания возможного перемещения TeamContacts между командами не будет.
  • Единственные атрибуты, которые будут совместно использоваться только участником и TeamContact (за исключением атрибутов, существующих на уровне партии).) - это FirstName и LastName.

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

Спасибо

enter image description here

1 Ответ

2 голосов
/ 01 апреля 2011

На первый взгляд кажется, что Ex1 - единственная диаграмма, которая выражает эти два требования.

  • Каждый контакт в команде - это человек.
  • Некоторые люди являются членами.

Ex2 вообще не относится к участникам.

Казалось бы, Ex3 разрешает любую сторону (включая команды) в качестве контакта команды.

Ex4 явно разрешает любую сторону(включая команды), чтобы быть контактом команды.

Вы можете рассмотреть другое невыраженное, но общее требование - человек может быть контактом только с одной командой за раз.(Это может не относиться к вашему конкретному случаю. Я не могу сказать.)

...