PowerDesigner表设计&Oracle数据库的使用

PowerDesigner表设计

1安装

语言选择中文RPC,同意协议,其他一路next即可

 

2特点

1)数据库建模的最佳工具

2)可视化全览整个系统所有的表和表之间的关联关系

3)可以轻松的针对不同数据库形成不同的建表SQL语句

3配置工具栏

 

 

4去掉Name to Code mirroring

5 PD配置直线

新版本默认拐角线,老版使用直线。先创建对应的模型,然后改其所有线类型。

 

 

 6表设计

1)外键:由子表出发向主表拖动鼠标,到达主表后松手,PD会自动添加外键字段

2)老师表和课程表:一对多,两张表。关联关系体现:子表存储主表的主键,称外键

3)课程表和学生表:多对多,三张表。关联关系体现:子表无法存储主表的多条关联信息,只能再创建一张表来存储其信息

4)中间表:存储两张表各自的主键,某一张表的主键无法标识记录的唯一性,两个一起才可以标识唯一,称为复合主键

7生成建表SQL

 

 

Oracle数据库的使用

1 PD创建Oracle模型

1)构建物理模型,数据库选择Oracle

 

2)表设计

2安装

1 安装步骤

1)一定要“以管理员身份运行”,Oracle是系统级别的,要安装服务,要求权限大。

2)安装时把防火墙关闭,否则很容易安装失败。

 

3)修改安装路径

 

4)管理员名和密码。统一设成root/root

 

5)端口会和tomcat冲突

 

 

2 Oracle10g EX

1)安装OracleXEUniv简版.exe,会自动创建EX服务。如果安装安装版本,需要手动创建本地服务。

2)安装完成后,侦听Listener和ServiceXE自动启动

 

 

3安装注意事项

1)安装时,最好不要安装到c盘,选择d盘。

2)记住system的密码安装时需要输入system的密码,oracle的密码是无法破解的,忘记了只能重新安装。

3)oracle默认会开启8080跟tomcat默认8080端口冲突。可以关闭oracle的8080,或者换tomcat的默认端口。

4)oracle安装完成后,不能使用sql-plus测试是否安装成功,因为它权限非常大。可以直接和oracle通讯。可以使用plsql工具,如果可以连接,则写的程序才能正常访问。

5)如果安装失败,先停掉侦听服务,再停掉Service服务,然后运行安装包,进行卸载

4配置本地服务-访问远程Oracle服务端。

1)远程访问前,在服务器上安装Oracle服务器端,客户端安装Oracle客户端,使用PL/SQL通过Oracle客户端访问Oracle服务端。

 

2)修改tnsnames.ora文件配置远程访问的地址:

D:\oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMIN\tnsnames.ora

XEremote =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.105)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = XE)

    )

  )

5链接错误

长时间没有访问,oracle会自动断开连接,遇到这样的情况,重新登录即可。

 

3创建数据库

1注意事项

1)oracle的数据库概念和mysql不同,它是创建一个账号,将所有表等都放在这个账号下。所以在oracle中的账户等同于mysql中的数据库

2)不要将system给用户直接使用,权限太大,造成安全隐患,数据泄露,甚至删除别人的账号(数据库)。

3)所以通常给每个业务单独创建账号,单独分配权限。

2密码安全

System账号不能修改,它是超级管理员,密码必须安全,否则非常危险要设置复杂密码

14yHl9t-hjCMT 疑似银河落九天-回家吃馒头

3创建用户

 

4设置权限

一般只赋给链接connect和资源resource访问权限,需要更大权限则设置dba。

 

使用新账号ht重新登录:

 

4常见错误

1监听失败

 

1)安装时,必须以管理员身份安装,关闭杀毒软件

2)下面两个服务必须启动,有时异常关机会造成服务停止,或者被杀毒软件停止

 

2 PL/SQL自动断掉链接

如果太久未访问oracle,oracle会自动关闭链接。关闭,重新打开即可。

 

5 PL/SQL客户端操作

1选择自己的内容

2常用对象

 

3 SQL窗口

输入SQL语句执行,可以输入多条SQL,通过选中的内容进行执行,不选中执行所有

 

6 SQL差异

1 日期

Oracle默认日期格式为:dd-mon-yy 日月年。09-6月-99日期为1999年6月9日

insert into student values(2,'张琪','女','01-12月-19',10);

--修改格式为我们国人习惯的格式:yyyy-mm-dd

alter session set nls_date_format='yyyy-mm-dd';

insert into student values(3,'李欢','女','1919-10-11',100);

2 性别

使用的oracle 10g简版中汉字为unicode码,占3个字节sex char(2)是无法存储的,修改为char(3)就可以。

 

3 Oracle使用decode()函数做条件选择

DECODE(value,if1,then1,if2,then2,if3,then3,......,else),

表示若value等于if1,则返回then1,

否则若等于if2则返回then2,若均不满足则返回else

 

要求:显示性别,0代表女,1代表男

select xm,sex,decode(sex,1,'男',0,'女') sex from student

4 MySql使用case when做条件选择

select xm,sex,

  case when sex='0' then '女' else '男' end

from student

5第一条数据查询方式

select top 1 * from students #sqlServer数据库

select * from students limit 1 #mysql数据库

select * from dept_p where rownum<2 #oracle数据库

7 过气技术

下面的技术在历史长河中已经被淘汰,但老项目,小项目依然再用,很多在阿里的开发手册中已经禁止使用

1 虚表 dual

1)dual是一个虚拟表,mysql没有

2)用来构成select的语法规则,oracle保证dual里面永远只有一条记录,用它可以做很多事情。

将结果存储在dual表中:

select 1 from dual #虚拟出一个数字列

select 'abc' from dual #虚拟出一个字符串列

select sysdate from dual #获取系统当前日期

select sys_guid() from dual #获取uuid

2 序列 sequence

Oracle自身提供的自增主键支持,和mysql的实现思路完全不同

 

 

-- 创建序列,没有替换replace语法

create sequence DEPT_ID_SEQ

minvalue 1

maxvalue 999999999999999999999999999

start with 1

increment by 1

cache 20;

--访问当前值:

SELECT DEPT_ID_SEQ.currval FROM dual

--访问下一个值:

SELECT DEPT_ID_SEQ.nextval FROM dual

--插入记录是调用:

insert into user_p (user_id) values(DEPT_ID_SEQ.nextval)

1)必须执行一次nextval后,才可以访问当前值,否则报错:尚未在此会话中定义。执行2)一次nextval值就会按步长增加。说明oracle内部维护这个信息,每次调用就修改这个值。

3授权视图

 

使用system登录,修改ht的权限为dba,否则无法创建视图

 

或者:使用system账户执行,分配视图权限。

grant create any view to ht;

4视图 view

1)视图本质就是一个查询

2)和我们自己查询的区别是,它执行完会有缓存,下次查询就直接使用。

3)因为事先缓存,无法做优化,大型项目中禁止使用。

4)视图只需创建一次,后面就可以类似表来使用,只是用来查询不能更新和删除

再用ht登录,执行下面SQL语句

create or replace view DEPT_V as

  select *

    from DEPT

 

select * from dept_p #查询表

select * from dept_v #查询视图

可以看到两者查询结果没有分别

5触发器 trigger

记录生效点:BEFORE/AFTER

记录的操作:INSERT/UPDATE/DELETE

例子:不让减薪

当薪资少于10000时,就发10000。

update user_info_p set salary = 300; #更新操作将触发器生效

commit; #提交事务

在更新表

CREATE OR REPLACE TRIGGER UPDATE_USER_INFO_TRI

  BEFORE UPDATE

  ON USER_INFO_P

  FOR EACH ROW

  

DECLARE

    -- local variables here

  BEGIN

    IF :NEW.SALARY<10000 THEN

       :NEW.SALARY:=10000;

    END IF;

  END;

 

6存储过程 procedure

概念:

1)存储过程(Stored Procedure)其实就是数据库端的编程

2)在数据库为王的时代,虽然已经过去,当时数据库大集中,部署在超级好的服务器,所以执行的性能超群,运行在上面的程序性能极佳

3)但当分布式架构兴起后,数据库在整个架构中的作用一再衰落,逐步边缘化。

4)存储过程中的SQL是依赖数据库厂商,每个厂商都有其个性的SQL,导致程序迁移数据库时,如从oracle迁移到mysql时基本重写,工作量巨大,造成修改的风险。

5)于是主流方式已经将其从数据库端前置到java程序端实现,这样迁移数据库变得轻松。

案例:

非常难维护和调试,这就是被禁止的原因。

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROCEDURE  [dbo].[SP_TMS_AUTO_BILLING] (
@V_TMS_ORDER_ID              VARCHAR (32),              --订单主ID
@V_RETUREN_VALUE             VARCHAR (20)  output       --状态返回)
BEGIN
	DECLARE @V_OPERATION_ITEM VARCHAR (30)     ----订单上的费用协议操作项目
END
--插入表结束	
			FETCH NEXT FROM V_CHARGE_CURSOR 
			INTO @V_CHARGE_CODE, @V_CHARGE_ITEM_NAME, @V_FRT_NAME_EN, @V_RATES_NUMBER, 
				 @V_CUST_OPERATION_ITEM_ID, @V_CUST_CONTRACT_ID, @V_CUST_CODE, @V_CRM_CUST_ID,
				 @V_CUST_INNER_OUTER
		END
		CLOSE V_CHARGE_CURSOR
		DEALLOCATE V_CHARGE_CURSOR

END

8分页

1 rownum伪列

rownum它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀。

利用这个伪列和两次子查询实现分页查询,如果有排序必须在线排序在分页

2 分页SQL

SELECT * FROM

(

SELECT t.*,ROWNUM r FROM TABLE t

WHERE ROWNUM <= pageNumber*pageSize

)

 WHERE r > (pageNumber-1)*pageSize

--每页3条记录,第1页

select * from

(select t.*,rownum r from dept_p t where rownum <=3)

where r>0

--每页3条记录,第2页

select * from

(select t.*,rownum r from dept_p t where rownum <=6)

where r>3

Oracle实现分页非常变态,需要嵌套查询才能筛选出来,合理吗?而MySQL多么的轻盈。Oracle 8时语法这么写,现在都Oracle 20c了,还没有变化。Oracle为什么会被击倒,可见一斑。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PowerDesigner设计数据库使用步骤及规范 使用PowerDesigner可以方便地对管理信息系统进行分析设计,它几乎包括了数据库模型设计的全过程。它可以制作多种数据模型,也能对团队设计模型进行控制。还可以与许多流行的软件开发工具,例如PowerBuilder、Delphi、VB等相配合使系统设计更优化并缩短开发时间。 并不是每个设计都需要用到PD,对于比较大型的项目,它是很好的,对于短平快类型的项目,例如时间要求一周左右的系统,没有必要使用,直接维护数据库即可,对于的数量超过10个的系统,建议使用PD进行设计和交流。 创建概念数据模型(CDM) 1.1 创建CDM步骤 选择 文件建立新模型,弹出如图所示对话框,选择ConceptualDataModel模型(即概念数据模型),单击OK,即确认创建。 PowerDesigner设计数据库使用规范全文共15页,当前为第1页。双击资源浏览窗口中新创建的CDM 名称图标,打开CDM 模型属性窗口,进行相关属性信息设置。如下图: PowerDesigner设计数据库使用规范全文共15页,当前为第1页。 1.2 对象命名通用规范 以下三种规范属于基本规范,适用于本文所有数据库对象命名规范。 1、长度规范:凡是需要命名的对象其标识符均不能超过3个英文单词长度(30个字符),也即:Oracle中的名、字段名,函数名,过程名,触发器名,序列名,视图名的长度均不能超过3个英文单词长度(30个字符); 2、构成规范:数据库各种名称必须以字母开头,但严禁使用SYS开头;名称只能含有字母,数字和下划线"_"三类字符,"_"用于间隔名称中的各语义字段;不要使用DUAL作名; 3、大小写规范: 构成Oracle数据库中的各种名称(明,字段名,过程名,视图名等等)的所有字符,必须使用大写,也就是不能在脚本中,对任何名称添加双引号""来设定字符的大小写形式,只要不采用""限制,Oracle自动会将各名称转化成大写。 PowerDesigner设计数据库使用规范全文共15页,当前为第2页。 PowerDesigner设计数据库使用规范全文共15页,当前为第2页。 进行ER设计的准备工作 2.1 实体命名不相同检查 PowerDesigner 默认不能存在相同名称的实体属性,这也是考虑到可能产生的一些如主键外键等名称冲突问题,但当进行实际数据库设计时,可能会多次使用相同数据项(DataItem)便于理解各实体。为此需要对更改PowerDesigner 相关设置。软件默认DataItem不能重复使用,需要进行以下操作: 选择工具Model Options,在 Model Setting 设置目录中,将Data Item下的Unique Code取消选中即可,系统默认将Unique Code和Allow Reuse均选中。 PowerDesigner设计数据库使用规范全文共15页,当前为第3页。同时该设置均是面向特定模型的,即针对当前模型有效,若希望在其它模型中也有此命名设置,则需要重新进行设置。不过在Check Model 时,如果选择全部Check,则依旧会报DataItem 重名的错误信息,这时需要我们在人为检查确认数据项无误时,可以在选择不对DataItem 不检查,如下图示: PowerDesigner设计数据库使用规范全文共15页,当前为第3页。 PowerDesigner设计数据库使用规范全文共15页,当前为第4页。 PowerDesigner设计数据库使用规范全文共15页,当前为第4页。 定义实体 3.1 创建entity 3.1.1 创建entity步骤 1、在CDM的图形窗口中,单击工具选项版上的Entity工具,再单击图形窗口的空白处,在单击的位置就出现一个实体符号。点击Pointer工具或右击鼠标,释放Entity工具。如图所示: 2、双击刚创建的实体符号,打开下列图标窗口,在此窗口"General"标签中可以输入实体的名称、代码、描述等信息。 PowerDesigner设计数据库使用规范全文共15页,当前为第5页。 PowerDesigner设计数据库使用规范全文共15页,当前为第5页。 Name:是用来在模型中标识一个实体,一般用于模型在界面中的显示(这个可以通过更改选项设置进行改变)。在一个模型当中,实体的名字不能重复。 Code:在模型转化时一般作为对象的物理名称,比如把实体属性的Code转化为数据库中的列名,一般采取与Name一致。 Generate:默认是选择状态,如果取消,则在转化为其他模型时,会忽略这个实体。 3.1.2 entity命名规范 CDM中的实体等价于PDM中的。 1、的命名只能使用英文字母,数字和下划线。 2、命名以是名词的复数形式,如cit

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值