相信在项目开发当中都曾经遇到过,有某些要储蓄到数据库当中的实体字段是不确定的,可能会动态变化,或者多个类型的字段同时存在或同时不存在,那创建数据库字段时,因为实体的字段不能确定,数据库的字段也就不能确定.
例子:
笔者参与开发的一个招生系统当中,每个课程都有各自的入学要求,而入学要求需要被保存到数据库当中被课程引用,但入学要求的实体是不确定的,入学要求可能是面试分数大于某个数字,亦可能是是否通过4级英语,那将是一个布尔类型的字段,而在进行某个操作时需要校验该申请人是否满足他申请课程的入学要求.
由于以上的需求,入学要求需要被保存到数据库,但数据库中没办法设立相应的字段保存所有的入学要求信息,所以项目当中我们抽象出多个入学要求的实体,将实体转换成XML的形式来保存到数据库中
public class XmlConverter {
private XmlConverter() {}
public static String toXml(Object obj) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
XMLEncoder encoder = new XMLEncoder(out);
encoder.writeObject(obj);
encoder.close();
String xml = out.toString().trim();
return xml;
}
public static Object fromXml(String xml) {
ByteArrayInputStream in;
try {
in = new ByteArrayInputStream(xml.trim().getBytes("UTF-8"));
XMLDecoder decoder = new XMLDecoder(in);
Object obj = decoder.readObject();
return obj;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
Test test = new Test();
test.setId("1");
test.setUsername("Hello");
test.setPassword("World");
String xml = XmlConverter.toXml(test);
System.out.println(xml);
Test test1 = (Test) XmlConverter.fromXml(xml);
System.out.println("--------id:" + test1.getId());
System.out.println("--------name:" + test1.getUsername());
System.out.println("--------password:" + test1.getPassword());
}
}
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0_45" class="java.beans.XMLDecoder">
<object class="com.accentrix.vtc.apm.domain.Test">
<void property="id">
<string>1</string>
</void>
<void property="password">
<string>World</string>
</void>
<void property="username">
<string>Hello</string>
</void>
</object>
</java>
以上是通过toXml方法返回的xml样式,简简单单的两个方法就解决了数据库保存不确定字段的问题,如读者有更好的方法希望能指点一二,谢谢
分享到:
相关推荐
数据库必须存储必要的信息,支持在设计时确定的信息需求,并支持用户可能提出的实时查询。 表应当正确、有效地构造。数据库中的每个表都代表一个主题,由一些相关的字段组成,数据的冗余度尽可能小,并且在整个...
在这个阶段,开发者需要分析项目需求,确定数据模型和实体关系。常用的数据库设计方法有关系数据库(如MySQLOracle)和非关系数据库(如MongoDB、Redis)。开发者需要根据数据的特性和业务需求来选择适合的数据库...
确定所有字段的名称、类型、宽度、小数位数及完整性约束 确定数据库及表的名称及其组成 确定索引文件和索引关键字 5、数据库安全及维护设计阶段 设计一个适合的数据库安全策略(用户身份认证、访问权限、视图) 为了...
4.1 确定数据库的存储结构 14 4.2 确定数据库的存取方法 15 5 数据库应用设计 15 5.1 数据库脚本 15 5.2 数据库完整性设计 15 5.3 数据库安全性设计 15 5.4 存储过程设计 15 6 数据库应用开发 15
1需求分析 1 1.1编写目的 1 1.2背景 1 1.2.1电子商务的发展历史 1 1.2.2乐购电子商城开发背景 2 1.3定义 2 1.4目标 3 1.5需求分析 3 1.5.1系统的功能描述 3 ...4.1确定数据库的存储结构 25 4.2确定数据库的存取方法 26
物理设计:设计数据库的物理结构,包括选择存储结构、确定存取方法、确定数据的存放位置并选择合理的存取路径,以提高数据库访问速度及有效利用存储空间,一般由数据库系统自动完成。 四、数据库维护和管理 1、...
4 逻辑设计 3 5 物理设计 4 5.1 表汇总 4 5.2 表[X]:[XXX表] 4 5.3 视图的设计 6 5.4 存储过程、函数及触发器的设计 6 6 安全性设计 6 6.1 防止用户直接操作数据库的方法 6 6.2 用户帐号密码的加密方法 7 6.3 角色...
根据用户需求,确定数据库中要保存的数据信息。对用户需求进行分析时数据库设计的第一个阶段。不断的调查与研究用户需求,了解企业运作流程等系统需求,是设计概念模型的基础。 (2)设计数据库的概念模型。概念模型...
1 数据库设计概述 数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据。 数据库设计的基本步骤: 需求分析 概念结构设计 逻辑结构设计 物理结构设计 ...
也就是说,数据在数据库中怎样存储是由数据库管理系统管理的,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变时应用程序不用改变。 ②逻辑独立性是指用户的应用程序与数据库的...
注释: 2.4专门指导 三、结构设计 3.1概念结构设计 3.1.1、确定实体类型 3.1.2、确定联系类型 3.1.3、确定实体及联系类型的属性(在ERD中标出) 3.1.4、根据实体类型和联系类型画出ERD。 3.2逻辑结构设计 3.3物理...
需求分析步骤: 1、 确认业务需求 2、 标识关系实体 3、 标识每个实体的具有的属性 4、 确认实体之间的关系 Ø 概要设计阶段:绘制E-R图 作为数据库设计者,你需要和项目组内其他成员分享你的设计思路,共同研讨...
因此,本文选用E-R图来实现数据库结构分析,公交线路查询系统数据库E- R图如图1、图2、图3所示: 图1线路属性实体 图2公交线路实体 图3管理员实体 3公交线路查询系统数据库表设计 3.1公交站台表 公交站台表负责记录...
在选择好局部应用之后,就要对每个局部应用逐一设计出E-R图,标定局部应用中的实体、实体的属性、标识实体的码,确定实体之间的联系及其类型。在这个过程中应当遵循两条准则:(1)作为"属性",不能再具有需要描述的...
需求分析步骤: 1、 确认业务需求 2、 标识关系实体 3、 标识每个实体的具有的属性 4、 确认实体之间的关系 Ø 概要设计阶段:绘制E-R图 作为数据库设计者,你需要和项⽬组内其他成员分享你的设计思路,共同研讨...
因此,本文选用E- R图来实现数据库结构分析,公交线路查询系统数据库E-R图如图1、图2、图3所示: 图1 线路属性实体 图2 公交线路实体 图3 管理员实体 3 公交线路查询系统数据库表设计 3.1 公交站台表 公交站台表负责...
以扩充的实体—(E-R模型)联系模型方法为例,第一步先明确现实世界各部门所含的各种实体及其属性、实体间的联系以及对信息的制约条件等,从而给出各部门内所用信息的局部描述(在数据库中称为用户的局部视图)。...
【说明】要确定模型设计的方式:星型、雪花,对于分析应用,可以按照主题域的方式进行实体域的设计 担保物 【说明】 1.从概要层次说明每类实体所反映的业务信息关系,说明实体域有多少实体。 2.通过PowerDesigner...
第1章 建立和配置数据库 1.1 数据库创建规划 1.1.1 规划以及提出正确的问题 1.1.2 怎样确定恰当的数据块尺寸 1.2 组织文件系统 1.2.1 怎样命名数据库文件 1.2.2 使用最佳灵活结构 1.2.3 怎样配置符合 OFA 的 ...