如何为这种情况正确设计 Z 架构?

How do I properly design a Z schema for this scenario?

我找到的所有示例都只有 2 个声明 such as name and date OR members and telephone。但是,我的情况是这样的:

I would like to create a Z schema called AppointmentDB. AppointmentDB keeps appointments details such purpose, attendees and schedule


我的看法(已编辑):

有 5 个声明和 1 个谓词

|--AppointmentDB----------------
|attendees : P Person
|appointments : P APPOINTMENT
|hasAppointment : Person ↔ APPOINTMENT
|schedule : APPOINTMENT → DateTime
|purpose : APPOINTMENT → Report 
|-----------------------------
|attendees ⊆ dom(hasAppointment)
|-----------------------------

如您所见,我正在尝试 link 对其所有其他属性的任命。我的模式是否正确或完整,或者我如何进一步优化它?另外,我怎么知道我应该从关系中考虑哪个关系来定义谓词部分?

在您的规范中有例如purposeschedule 之间没有 link。您定义 schedule 的方式是将一个人映射到任意次数,将一个人映射到任意数量的单词。但是没有办法知道这个人是什么时候有约会的,目的是什么。

我想你想要一个约会有时间和目的。我的建议(实际上有很多方法可以实现这一点)是为约会引入一种数据类型,例如带有载体组:

[APPOINTMENT]

那么你可以指定一个人有任意数量的约会:

|--------------------
| appointments: P APPOINTMENT
| hasAppointment: Person <-> APPOINTMENT
|----
| appointments = ran(hasAppointment)
|--------------------

对于每个约会,您都可以指定其时间和目的:

|--------------------
| schedule: appointments --> DateTime
| purpose: appointments --> Word
|--------------------

所以这不是您在架构中指定的所有内容,但我不确定如何准确解释例如objectavailability 您的规格。但我认为将约会本身作为对象的基本方法在大多数情况下都会有所帮助。

另一种不引入类型 APPOINTMENT 的方法是定义模式 Appointment 并将其用作记录数据类型。