Как правильно спроектировать Z-схему для этого сценария?
Все примеры, которые я нашел, имели только 2 объявления such as name and date OR members and telephone
, Тем не менее, мой сценарий таков:
Я хотел бы создать Z-схему под названием AppointmentDB. AppointmentDB хранит детали встреч, такие как цель, участники и расписание
Мой дубль (отредактировано):
Есть 5 объявлений и 1 предикат
|--AppointmentDB----------------
|attendees : P Person
|appointments : P APPOINTMENT
|hasAppointment : Person ↔ APPOINTMENT
|schedule : APPOINTMENT → DateTime
|purpose : APPOINTMENT → Report
|-----------------------------
|attendees ⊆ dom(hasAppointment)
|-----------------------------
Как вы видите, я пытаюсь связать НАЗНАЧЕНИЕ со всеми другими его атрибутами. Является ли моя схема правильной или полной или как я могу оптимизировать ее дальше? Кроме того, как мне узнать, какое отношение я должен рассмотреть из отношения, чтобы определить внутри предикатной части?
1 ответ
В вашей спецификации, например, нет никакой связи между purpose
а также schedule
, Вы определяете schedule
таким образом, что человек отображается на произвольное количество раз, а цель отображает человека на произвольное количество слов. Но невозможно сказать, в какое время у человека назначена встреча с какой целью.
Я полагаю, вы хотите, чтобы у одной встречи было время и цель. Мое предложение (существует множество способов добиться этого) - ввести тип данных для встреч, например, с набором операторов:
[APPOINTMENT]
Затем вы можете указать, что у человека есть произвольное количество назначений:
|--------------------
| appointments: P APPOINTMENT
| hasAppointment: Person <-> APPOINTMENT
|----
| appointments = ran(hasAppointment)
|--------------------
И для каждой встречи вы можете указать свое время и цель:
|--------------------
| schedule: appointments --> DateTime
| purpose: appointments --> Word
|--------------------
Так что это не все, что вы указали в своей схеме, но я не уверен, как именно интерпретировать, например, object
или же availability
вашей спецификации. Но я думаю, что основной подход к назначению самой встречи будет полезным в большинстве сценариев.
Другой подход вместо введения типа APPOINTMENT
будет определять схему Appointment
и использовать его как тип данных записи.