千家信息网

Oracle面向对象的应用实例

发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,近期做项目,遇到一个基站的数据模型,此基站有7大属性,每个属性下面又有第二层的若干个属性,第二层下面又有第三层的若干属性,一直到第五层的最底层属性超过1000个,现在要把这个基站按照7大属性,设计成7
千家信息网最后更新 2025年11月12日Oracle面向对象的应用实例

近期做项目,遇到一个基站的数据模型,此基站有7大属性,每个属性下面又有第二层的若干个属性,第二层下面又有第三层的若干属性,一直到第五层的最底层属性超过1000个,现在要把这个基站按照7大属性,设计成7个表,每个属性的最底层属性从100到400多不等。


如何设计呢?

第一、最常见的用每个属性的最底层属性来建表,最大的一个表超过400个字段,这样从性能到维护都是不行的。

第二、按照事实表与纬度表的关系来设计,把每个大属性分为若个小属性来设计表,结果可能是得到几十个表,相互之间还有复杂的逻辑关系,在业务处理上不方便。

第三、按照Oracle面向对象的设计方法,以第三层为准设计对象,就是把每个大属性下面的第三层属性设计为每个对象,然后再用对象来定义表。


原数据模型太复杂了,就不举例了,下面用一个简单的例子来说明下。

例如常见的员工表,有这些字段(eid、ename、sex、borthady、address、phone、job、dept、manager、sal、subsidy、tax、school、grad、educa、degree、extcol、extcol2、extcol3、、、)

按照字段的类别设计为下面的几个类:

--员工基本类

create or replace type ty_person as object

(ename varchar2(20),--姓名

sex char(1), --性别

borthady date, --生日

address varchar2(20),--地址

phone varchar2(20) --电话

);

--工作基本类

create or replace type ty_job as object

(job varchar2(20), --职位

dept varchar2(20), --部门

manager varchar2(20) --经理

);

--工资基本类

create or replace type ty_sal as object

(sal number, --工资

subsidy number, --补贴

tax number --税费

);

--教育基本类

create or replace type ty_edu as object

(school varchar2(20), --毕业学校

grad date, --毕业时间

educa varchar2(20), -- 学历

degree varchar2(20) --学位

);


--使用上面的类来构造员工表

create table t_emp

(eid varchar2(20) not null,

person ty_person,

job ty_job,

sal ty_sal,

edu ty_edu,

extcol varchar2(50),

extcol2 varchar2(50),

extcol3 varchar2(50),

extcol4 varchar2(50),

extcol5 varchar2(50)

);

--extcol 表示扩展字段


下面介绍类的基本操作:

1.使用构造函数加入数据

insert into t_emp(eid , person,job,sal,edu ,extcol,extcol2,extcol3 ,extcol4,extcol5)

values('001',

ty_person('scott','M',to_date('1981-10-10','yyyy-mm-dd'),'beijing','0102345678'),

ty_job('DBA','IT','smith'),

ty_sal(8000,1000,500),

ty_edu('Peking University',to_date('2004-10-10','yyyy-mm-dd'),'bachelor','bachelor'),

null,null,null,null,null);

2.查询数据

select * from t_emp t;

--查某个类的数据

select t.person.name,t.person.sex,t.person.borthady,t.person.address,t.person.phone

from t_emp t;


3.删除数据

delete t_emp t where t.person.name='scott';


4.修改数据

update t_emp t set t.person.name='Mark'

where t.person.name='scott';

UPDATE t_emp e

SET e.person = ty_person('mark','M',to_date('1982-10-10','yyyy-mm-dd'),'neijing','0212345678')

WHERE e.eid = '001';


基本的操作就是这些,更多的面向对象操作请查看Oracle文档。


属性 设计 数据 对象 字段 员工 基站 最底层 面的 复杂 二层 就是 工资 常见 模型 不行 最大 相互之间 之间 事实 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 qq中如何清除运动数据库 科技和互联网的关系 微信携程的数据库在哪里 机房服务器管理运维题库 软件开发哪些专业 傲森电子商务有限公司软件开发 数据库多表关联等 夸克区块链存储中心化服务器 晨信网络技术有限公司电话 江西网络技术服务价格 区块链防护服务器 北京erp软件开发销售电话 幼儿园网络安全教育宣传活动 对网络安全意识的剖析 云顶之弈遇到一个服务器的错误 趋势科技服务器安全防护系统 roblox服务器价格 大学生网络安全意识调查心得 数据库怎么设置代理键 拼多多软件开发地在哪里 猎杀游戏版本和服务器 刀片服务器维修哪家便宜 我国网络安全法有哪些亮点 警校的网络安全是干什么的 贵州智慧社区软件开发 购物车在数据库中的表 数据库引擎属性打不开 导入数据库数据重复是啥意思 数据平台与数据库的关系 云道保定软件开发有限公司
0