java - 在 Oracle 数据库中存储不同类型数据的最佳体验
问题描述
晚上好
我目前正在开发一个 Java 应用程序。现在我想让用户为一个对象保存无限数量的关联附件。
这些附件可以是以下类型:字符串、xml 文件、二进制文件。
我使用 Oracle 数据库作为数据库。每种类型实际上建议使用不同的数据类型:字符串 - VARCHAR XML 文件 - CLOB 二进制文件 - BLOB
这里最好的方法是什么?一个通用表,其中包含 3 个字段(varchar、clob、blob)并且根据类型是两个字段,然后是 NULL 或三个单独的表?
期待你的回答
解决方案
您不必担心“浪费”空间,因为单个表包含三个不同的列,用于 、 和 的每个VARCHAR2
广泛CLOB
分类BLOB
。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
);
推荐阅读
- java - 我们可以在Java中的枚举中的常量内有空间吗
- python - pip:根据包名称选择索引 url?
- javascript - 在我 ajax 一个 rails 表单后没有显示验证错误
- react-native - Share 在 iOS 13 上不起作用。 Expo 模块
- python - 只要数字是,就可以循环继续
- python - 向 Python 提供站点包的其他位置
- r - 如何解决数据密度图的错误消息“提供给连续比例的离散值”;差异功能?
- ios - 如何在不为 AppStore 切片的情况下为 iOS 创建通用框架
- java - 如何使用 Math.pow 计算 bmi
- javascript - json object deserialize issue typescript