导 读

PostgreSQL是一种非常流行的数据库管理方式,其中IvorySQL是一种基于PG并兼容Oracle的数据库管理系统。在使用IvorySQL时,数据库建模是非常重要的一步。

如果您正在使用IvorySQL进行开发,并且需要进行数据库建模,那么以下是一些建议,可以帮助您创建一个优秀的数据库模型。

01 概览

IvorySQL是在PostgreSQL数据库的基础上提供特有附加功能并兼容oracle特性的数据库,基于开源数据库解决方案之上为其终端用户提供价值,并为中小型企业提供一个具有高性能、可扩展性、可靠性和易于使用的解决方案。

IvorySQL提供的扩展功能可以让用户能够建立高性能和可扩展的PostgreSQL数据库集群,具备更好的数据库兼容性,更加方便管理。这样就简化了从其他DBMS迁移到PostgreSQL的过程,从而增强了数据库管理经验。

1.1 架构概述

IvorySQL沿用了PostgreSQL的一般架构,再其基础上增加了一些内容,但它并没有偏离PostgreSQL的核心理念。请参考图1,图1基本上描述了IvorySQL的运行方式。

图片

图1 IvorySQL运行方式图

图片

图2 数据库逻辑结构图

图中的黄色表示IvorySQL在现有的PostgreSQL基础上增加的新模块,同时IvorySQL也对现有的模块和逻辑结构进行了修改。

在这些支持Oracle兼容性的模块中,最值得注意的是后端分析器和系统目录的更新

1.2 目录的变化

下图(图3)描述了对PostgreSQL现有目录的变化以及所做的补充。

图片

图3

02 数据库建模

2.1 创建一个数据库

创建一个数据库是判断能否访问数据库服务器的例子之一。正在运行中的IvorySQL服务器可同时管理大量数据库。我们通常会提供给每个项目和每个用户一个单独的数据库。

如果站点管理员为您创建了一个可供使用的数据库,那你就可以省略这一步并跳转到下一节。

您可以通过以下命令来创建一个新的数据库(此例中数据库命名为mydb)

$ createdb mydb

如果在键入命令后不产生任何提示则表明数据库创建成功,您可以跳过本节内容。

📍如果产生下述情况:

createdb: command not found

则表明您的IvorySQL部署出现了问题,需要卸载重新安装,或者是因为你的shell搜索路径设置错误,应将其更改为绝对路径后再调用该命令,绝对路径如下:

$ /usr/local/pgsql/bin/createdb mydb

若该路径与您的站点中的路径不同,请联系你的站点管理员或参考安装指导获取绝对路径。

📍同样另一种情况如下:

createdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory        Is the server running locally and accepting connections on that socket?

这意味着该服务器没有启动,或者在`createdb`期望去连接它的时候该端口没有在监听。若启动服务器后仍报错,您可以查看安装指导或者咨询管理员。

📍再另外一种情况如下:

createdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL:  role "joe" does not exist

在此处提到了个人的用户名,若管理员没有为您创建提供IvorySQL用户账号则会发生以上情况(IvorySQL用户账号和操作系统用户账号是不同的。)如果你是管理员,参阅第22章(http://www.postgres.cn/docs/14/user-manag.html获取创建用户账号的相关内容和帮助。你需要转换成安装IvorySQL的操作系统的用户身份(通常是 postgres)才能创建第一个用户帐号。同时也有可能是你创建或被赋予的IvorySQL用户名和你的操作系统用户名不同导致的;这种情况下,你需要使用`-U`选项或者使用`PGUSER`环境变量来指定你的IvorySQL用户名。

如果您拥有数据库用户帐号,但是没有创建数据库所需要的权限的话,那么你会看到下面的报错信息:

createdb: error: database creation failed: ERROR:  permission denied to create database

并非所有用户都会被许可创建新数据库。如果IvorySQL拒绝为您创建新数据库, 那么你需要联系站点管理员赋予你创建数据库的权限。详细内容请咨询你的站点管理员。如果是个人安装IvorySQL,登录启动数据库服务器的用户身份然后参考手册完成权限的赋予工作。

[1](http://www.postgres.cn/docs/14/tutorial-createdb.html#ftn.id-1.4.3.4.10.4)

同时您还可以用其它名字创建数据库。IvorySQL允许你在一个站点上创建任意数量的数据库。但数据库名必须是以字母开头且字长小于 63 字符。创建和你当前用户名同名的数据库会简便很多。因为有许多工具会假设该数据库名为缺省数据库名,所以这样可以节省你的时间。要创建该数据库,只需要键入以下命令:

$ createdb

如果您不想继续使用你的数据库,那么你可以将其删除。比如你是数据库`mydb`的所有人(创建人), 那么你就可以以下的命令将其删除:

$ dropdb mydb

(对于这条命令而言,该数据库名并不是缺省的用户名,因此您就必须声明它) 。这个命令将会把所有与该数据库相关的文件都删除并且不可取消, 因此进行该操作之前一定要慎重考虑

更多关于createdb 和dropdb 的信息可以分别在createdb和dropdb 中查询到。

createdb:

http://www.postgres.cn/docs/14/app-createdb.html

dropdb:

http://www.postgres.cn/docs/14/app-dropdb.html

2.2 创建一个新表

您可以通过指定表的名字和所有列的名字及其类型来创建表∶

CREATE TABLE weather (
    city            varchar(80),
    temp_lo         int,           -- 最低温度
    temp_hi         int,           -- 最高温度
    prcp            real,          -- 湿度
    date            date
);

您可以在psql 输入这些命令以及换行符。psql 可以识别其中所有命令直到分号结束。

您可以在 SQL 命令中自由使用空白符(即空格、制表符和换行符)。这就意味着你可以用和上面不同的对齐方式键入命令,或者将命令全部放在一行中。文中两个划线(“--”)表示引入注释。任何在它后面直到行尾的文字都会被作为注释。SQL 是对关键字和标识符大小写不敏感的语言,只有在标识符被双引号包围时才能保留它们的大小写(上例并无该操作)。

varchar(80) 指定了一个可以存储最长 80 字符的任意字符串的数据类型。int 是普通的整数类型。real 是一种用于存储单精度浮点数的类型。date 类型是日期类型,类型为‘date’的列名字也为date,这样命名可能容易让人混淆,但在某些地方也很便利,你需要谨慎选择

IvorySQL支持标准的SQL类型int、smallint、real、double precision、char(N)、varchar(N)、date、time、timestamp 和 interval,同时还支持其他的通用功能的类型和丰富的几何类型。IvorySQL中可以定制任意数量的用户定义数据类型。因而除了SQL标准要求支持的特例外,类型名并不是语法关键字。

第二个例子将保存城市和它们相关的地理位置:

CREATE TABLE cities (
    name            varchar(80),
    location        point
);

类型point 就是IvorySQL特有的一种数据类型的例子

最后,我们还需要提醒如果您不再需要某个表,或者你想以其它形式重新构建它,那么你可以用下面的命令将其删除:

DROP TABLE tablename;


官方网址:

https://www.ivorysql.org/zh-cn/

社区仓库:

https://github.com/IvorySQL/IvorySQL

IvorySQL社区欢迎并赞赏所有类型的贡献,

期待您的加入!

记得在GitHub给我们一个 ⭐奥~

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐