Как я могу создать обязательные неидентифицирующие отношения между двумя объектами?
Я работаю в MS Visio 2010. Это актуальная часть моего 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 автоматически добавляет столбец внешнего ключа при создании новых отношений. Чтобы изменить обязательные отношения, просто установите обязательный атрибут этого столбца (в свойствах объекта, вкладки столбцы).