Как правильно спроектировать 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 и использовать его как тип данных записи.

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