我正在处理一个大型项目,该项目有许多表示简单(不相关)值的对象。有时这些值是单个字符串,有时它们是两个字符串,有时是一个字符串和一个整数......
目前,我们的关系数据库中有一个“值”表,其中包含以下列:Id
、Category
、String1
、String2
...、Int1
、Int2
...Double1
等。它很方便,但很乱。
这些值都具有以下属性:
- 每个具有相同属性的对象
Category
都具有相同的属性(即已键入)。 - 没有相关的对象(唯一的键是
Id
主键)。
我们如何摆脱这种混乱局面?在我看来,我们的选择如下:
- 只需根据需要继续添加列,并忘记表和对象之间的语义映射。把它堆起来。
- 为每个值对象创建一个新表。这将向数据库中添加大量表,其中大多数表少于 6 行。我担心所有这些额外的表都会添加到数据库中。
- 仅为这些对象部署一个无模式的数据库(在我们的部署方案中实际上不可能)。
- 创建一个带有
Id
、Category
列和 BLOBValue
列的表,并将值对象序列化到值列中。这可行吗?
这篇文章重申了我们的选择。使用序列化是否有任何警告或陷阱?有没有我不知道的选项?欢迎咨询。