非常量项的数据库结构

database structure for unconstant items

我有一个数据库,其中包含以下事件:

event(id, name, type, startDate, endDate)

该类型是另一个自定义对象 (Type(id, name, icon)),它被链接为一对多。

我想添加另一个名为 EventDetail 的自定义对象,其中包含详细信息,但字段会因事件类型而异。

例如,如果我的活动是旅行类型,字段可以是指向目的地维基百科的网络链接、照片,但如果活动是工作实习,它们显然会有所不同。

什么样的结构可以处理这种情况?

如果它很重要,我将 java 用于 android,并使用名为 SugarORM

的 ORM 库

最终答案

我终于前往 ORM 库管理我的数据库。使用 Type 和 EventDetail 之间的一对一关系以及 Type 和 Event 之间的一对多关系,目前效果非常好。

你可以用几种不同的方式处理这个...

一个方法是为 EventDetail 创建一个包罗万象的 table,其中包含每个 type 需要的每个字段,并使用 type 来确定哪些字段你从那里读到 table.

另一种方法,如果您没有很多不同的类型,则可以为每种类型创建一个 table,根据该类型的需要构建,在您的查询中,您需要根据类型加入每个 table(可能使用 UNION [ALL],每个 type 一个查询 - 或创建视图)。

第三种可能更理想,具体取决于情况和用途,是从数据库中消除该级别的复杂性。将 "Event Details" 存储为 CLOBBLOBXMLTYPE 等...并使用 type 将数据反序列化为客户端的对象.