在Oracle数据库中存储不同类型数据的最佳体验



晚上好

我目前正在开发一个Java应用程序。现在我想让用户为一个对象保存无限数量的关联附件。

这些附件可以是以下类型:字符串、xml文件、二进制文件。

我使用Oracle数据库作为数据库。实际上,建议为每种类型使用不同的数据类型:字符串-VARCHARXML文件-CLOB二进制文件-BLOB

这里最好的路是什么?一个通用表,其中包含3个字段(varchar、clob、blob(,根据类型的不同,是两个字段,然后为NULL,还是三个单独的表?

我期待着你的答案

您不必担心"浪费的";对于VARCHAR2CLOBBLOB的每个广泛分类,具有具有具有三个不同列的单个表。Oracle不会使用任何(有意义的(空间来完成这项工作,如果您有3个表,那只会使事情变得复杂。您已经为这些类型的文件内容选择了适当的数据类型。

为了方便起见,我还会有一个额外的列FILE_TYPE VARCHAR2(10),它可以包含文件类型。该列将通过一个简单的内联约束进行限制,以验证FILE_TYPE:

create table user_files (
file_name varchar2(4000) not null, 
, file_type varchar2(8) not null check (file_type in ('VARCHAR2', 'CLOB', 'BLOB'))
, text_data varchar2(4000)
,xml_data  clob
, binary_data blob
);

最新更新