数据库的schemas(模式)

10 篇文章 1 订阅
Schemas(模式)

schema(发音 “skee-muh” ,中文叫模式)是数据库的组织和结构。模式中包含了schema对象,可以是表(table)、列(column)、数据类型(data type)、视图(view)、存储过程(stored procedures)、关系(relationships)、主键(primary key)、外键(foreign key)等。

模式是一组相互关联的数据库对象,如表,表列,列的数据类型,索引,外键等等。但是从物理层面上来说,模式与数据库是同义的。你可以在MySQL的SQL语法中用关键字SCHEMA替代DATABASE,例如使用CREATE SCHEMA来代替CREATE DATABASE。

而在Oracle中不能用create新建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决,在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同。

LDAP 中的 Schemas

LDAP的schemas也类似于数据库,LDAP的Schema定义了LDAP目录所应遵循的结构和规则,比如一个 objectclass会有哪些属性,这些属性又是什么结构等等,schema给LDAP服务器提供了LDAP目录中类别,属性等信息的识别方式,让这些 可以被LDAP服务器识别。

在LDAP的schema中,有四个重要的元素:
1. Objectclass
    objectclass定义了一个类别,这个类别会被不同的目录(在LDAP中就是一个Entry)用到,它说明了该目录应该有哪些属性,哪些属性是必须 的,哪些又是可选的。一个objectclass的定义包括名称(NAME),说明(DESC),类型(STRUCTURAL或AUXILARY ,表示是结构型的还是辅助型的),必须属性(MUST),可选属性(MAY)等信息。

2. Attribute
    attribute就是一个上面objectclass中可能包含的属性,对其的定义包括名称,数据类型,单值还是多值以及匹配规则等。后面用具体的例子来说明。

3. Syntax
    syntax是LDAP中的“语法”,其实就是LDAP中会用到的数据类型和数据约束,这个语法是遵从X.500中数据约束的定义的。其定义需要有一个ID(遵从X.500)以及说明(DESP)

4. Matching Rules
    是用来指定某属性的匹配规则,实际上就是定义一个特殊的Syntax的别名,让LDAP服务器可以识别,并对定义的属性进行匹配。

base基本架构和schemas的区别

简单来说。断罪小学一年一班有个学生叫李杀神。

下边是他的信息。

dn : cn=李杀神,ou=一年一班,dc=断罪小学,dc=com

uid: 李杀神
cn: 李杀神
sn: 李杀神
mail: 李杀神@一年一班.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$6$V8.K82Wq$b5mVC7khXo8y8Fcm5GBBhtF.vj7ot6lMRPHuFi5.ufa2XKcZoC0VldwT8VV2uAMba7vEYab7rIpB7C9JJyb1i1
shadowLastChange: 18242
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1000
gidNumber: 1000
homeDirectory: /ldaphome/李杀神

base定义了层级关系,或者说组织架构,它定义了有个断罪小学.com域,也就是 “ 树根 ” ,断罪小学有个一年一班,当然还有能有一年二班,一年三班等等。

李杀神这个学生就是数据,要存到组织架构中去。所以他被分配到了一年一班。我们要想找李杀神,就要通过dn 找。dn : cn=李杀神,ou=一年一班,dc=断罪小学,dc=com找到断罪小学,找到一年一班,最终找到李杀神。

小学 ,班级这种层级的关系,就是由base基本架构来定义的。

schema定义了什么呢?他定义了一个学生可以有什么属性,比如李杀神有名字,ID,邮箱,objectClass,等等,这些东西是由schemas定义的。

所以在使用OpenLDAP时要先导入schemas。

另外 MySQL和 Oracle中也有 schema。而且有所区别

mysql中 show databases;查看所有数据库。
初始的库有这几个 sys 、 information_schema 、 mysql 、 prformance_schema 。这些都是数据库。
在mysql中是databases 用来分开各个项目的数据,一个项目一个数据库。

但是在Oracle中只有1个database只有1个名字,但是Oracle中可以创建多个schema。

在mysql中建库操作:
create database abc;

在Oracle中建schema:
create user hr identified by hr ;

Oracle的schema ---- MySQL的 database

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值