我正在研究db和Im做一些建模练习。但在一个我无法找到解决方案。
上下文
有一个实体"会议"可以有1种以上的注册类型。对于每种注册类型,有2个必填字段:名称和电子邮件。
但是,我怀疑的是,除了这两个必填字段之外,还可以使用不同的注册类型创建会议,每个注册类型都可以有自定义字段,例如除了姓名和电子邮件之外,会议创建者还可以收集电话什么的。这些自定义字段可以是:复选框,输入,选择,文本区域,日期和上传文件。会议创建者可以选择每个字段是否强制。
疑
我试图找到这种建模的解决方案,但没有成功。你知道如何建模吗?
在这种情况下,我确定了实体:会议,注册类型和表格,它们的相关性如下:
1 to many relationship from Conference To Registration type (non-identifying)
1 to many relationship from RegistrationType to Form (non-identifying)
所以:
Conference: ConferenceID, Name, etc
RegistrationType: RegistrationTypeID, Name, Description, capacity, etc, ConferenceConferenceID
Form: idForm, RegistrationTypeRegistrationTypeID
但是你知道如何设计自定义字段部分吗?
答案 0 :(得分:0)
注册类型的情况看起来像是类和子类的经典案例,或者,如果您愿意,则类型和子类型。在实践中,这个事物的王者总是出现。但在数据建模教程中经常会跳过它。
对象建模器使用对象模型中内置的继承工具来轻松处理这个问题。子类只是扩展了类。
ER建模者可以使用“泛化和专业化”图来在ERD中对此进行描绘。但ER建模并没有告诉你如何构建表。
查看这些标签。
single-table-inheritance class-table-inheritance shared-primary-key
查看标签下分组的问题和信息标签。他们将向您展示如何构建表。您必须在单个表和类表之间进行选择。单桌可能足以满足您的需求。