Как я могу создать обязательные неидентифицирующие отношения между двумя объектами?

Я работаю в MS Visio 2010. Это актуальная часть моего ERD:

ERD

Связь между событием и приключением правильная: есть внешний ключ от события к приключению, и этот FK является частью первичного ключа события.

Однако я не могу понять, как сделать линию отношений между приключением и типом размещения такой же, как и между событием и приключением, не делая эти отношения частью ПК приключения. Когда я смотрю на "Разные" свойства этой линии отношений, я хочу, чтобы это было:

  • Кардинальность: ноль или более
  • Тип отношений: Неидентифицируемый
  • Ребенок имеет родителя: не обязательно (обязательно)

Но флажок для третьего свойства неактивен и переключается между Истиной / Ложью, когда я делаю связь Неидентифицирующая / Идентифицирующая.

Единственный способ выяснить это - отсоединить два столбца от вкладки "Определение", которая затем снимает серый флажок "Необязательно", но затем я теряю свойство внешнего ключа в столбце tainType, и в то время как символы отношений правильно, линия остается пунктирной.

Как я могу сделать так, чтобы количество элементов в строке слева отображалось так же, как и в строке отношения справа, без добавления аккомпанемента к PK Adventure?

2 ответа

Этот поток MS TechNet идентифицирует проблему как связанную с тем, как Visio 2010 автоматически вставляет внешний ключ при создании отношения между объектами:

Действительно, кажется, что сначала ввод имени поля внешнего ключа, а затем установление отношения делает это возможным. Проверка / снятие флажка Req'd на внешнем ключе затем автоматически проверяет / снимает флажок Необязательно для отношений.

Есть два способа решения этой проблемы, в зависимости от того, создаете ли вы новую связь на диаграмме или пытаетесь исправить существующую.

Как создать обязательные неидентифицирующие отношения

Перед созданием отношения добавьте требуемый атрибут (ы) FK к дочернему объекту, используя те же имена, что и в PK родительского объекта. Убедитесь, что опция "Req'd" отмечена для каждого атрибута FK.

В вашем примере мы добавляем атрибут "name" к сущности Adventure:

Теперь добавление отношения автоматически создает FK, но сохраняет неидентифицирующее, необязательное состояние существующего атрибута в Adventure:

Вы можете переименовать атрибут FK так, как вам нравится.

Обратите внимание, что флажок "Дочерний родитель: необязательный" по-прежнему недоступен. Даже после этого изменения свойств отношения и / или задействованных атрибутов иногда имеют нежелательные побочные эффекты, и вы можете обнаружить, что неправильный символ "гусиная лапка" снова "застревает". К счастью, есть более быстрый способ исправить это, чем удалить отношения и начать заново.

Как исправить существующие отношения

Выберите связь с "застрявшим" символом вороньей лапки и перейдите на вкладку "Определение" в окне "Свойства базы данных".

Вы увидите линию со стрелками, соединяющую атрибуты PK и FK в родительских и дочерних объектах. Выберите связанные атрибуты в обеих таблицах и отключите их, нажав кнопку в среднем столбце. Если ключ составной, вы увидите несколько пар атрибутов:

После того, как вы отключили все атрибуты, связанные с отношением, поле "Дочерний родитель: необязательный" на вкладке "Разное" снова станет активным. Установите для свойств отношения значение Неидентификация с необязательным родителем, дважды проверьте, чтобы атрибуты FK в дочерней сущности были установлены на "Req'd", а затем вернитесь на вкладку "Определение" и заново свяжите атрибуты PK и FK.:

Visio автоматически добавляет столбец внешнего ключа при создании новых отношений. Чтобы изменить обязательные отношения, просто установите обязательный атрибут этого столбца (в свойствах объекта, вкладки столбцы).

Другие вопросы по тегам