目录长度未知,我有很多文章。我想将目录存储在我的 MySQL 中。我不知道我是否应该使用 BLOB,因为那样我将无法通过 SQL 查询来更改它们。
我需要能够将目录返回到 Java 中的数组对象中。
我猜你会想要使用 Text 而不是 blob,因为它会处理文本而不是二进制正确的。文本字段类似于 Varchar,但具有您需要的所有大小。
好的,所以您的目录实际上是一个字符串数组。
您的选择是:
创建一个新表,以便每个数组元素是表中的一行。您可能需要用于外部键的列以及其目录中的每个字符串的索引。这为您在 ToC 及其元素(或文章和 ToC 元素......取决于您选择如何建模它)之间提供了正确的一对多关系。(借用 @oldCurmudgeon 的评论。)
使用 Java 序列化来序列化String[]
并使用BLOB
列类型。
创建(或选择)自定义编码方案以将其String[]
转换为文本表示并将其存储在TEXT
列中。
如果您希望能够查询和/或更新各个目录元素,那么第一个方案就是要走的路。
@ppeterka 指出(正确地)您最好阅读数据库规范化的主题......这是关于设计模式以减少信息重复的主题。在这种情况下,它将帮助您权衡将抽象模型(例如“一对多关系”)转换为数据库模式的替代方法。
有关对象的序列化和反序列化,请参阅什么是对象序列化。然后将序列化的数据字节存储在 SQL 的 BLOB 列中。