データベースシステム概念ノートCH 4(下)
15879 ワード
データベースシステム概念ノートCH 4(下)
第四章:中級SQL
4.4整合性制約
整合性制約は、データベースに対する認可されたユーザーの変更がデータの一貫性を損なわないことを保証します.
1つの関係の制約:
--
name varchar(20) not null
budget numeric(12,2) not null
SQLリレーショナルモードのプライマリコードに空の値が表示されないことを禁止unique(A1,A2...,An)
--
--
create table section (
course_id varchar (8),
sec_id varchar (8),
semester varchar (6),
year numeric (4,0),
building varchar (15),
room_number varchar (7),
time slot id varchar (4),
primary key (course_id, sec_id, semester, year),
check (semester in (’Fall’, ’Winter’, ’Spring’, ’Summer’))
--
);
参照整合性は、ある関係において与えられた属性の値が他の関係の特定の属性セットの値にも現れることを保証するために使用される.外部コード制約:dept_name varchar(20) references department -- , department
-- , ,
-- :
--on delete cascade on update cascade
-- :
dept_name varchar(20) references department
on delete cascade
on update cascade,
-- ,
日付と時刻のタイプ
デフォルト
SQLでは、属性のデフォルト値を設定できます.操作は次のとおりです.
create table student
(ID varchar (5),
name varchar (20) not null,
dept_name varchar (20),
tot_cred numeric (3,0) default 0,
primary key (ID));
ここにいるよcredのデフォルト値は0です.これは、作成時に値を割り当てない場合、デフォルトは0です.
大きいオブジェクトタイプ
book review clob(10KB)
image blob(10MB)
movie blob(2GB)
--
create type Dollars as numeric (12,2) final;
--
create table department
(dept_name varchar (20),
building varchar (15),
budget Dollars);
--
create domain person_name char(20) not null;
create domain degree_level varchar(10)
constraint degree_level_test
check (value in (’Bachelors’, ’Masters’, ’Doctorate’));
-- , , ,
create tableの拡張
-- ,
create table temp_instructor like instructor;
create table t1 as
(select *
from instructor
where dept name= ’Music’)
with data;
4.6ライセンス
データの認可には、次のものが含まれます.
grant文は、権限を付与するために使用されます.
grant < >
on < >
to < >
権限付与の例:
--
grant select on department to Amis;
--
grant update(budget) on department to Amis;
revoke回収権限:
revoke < >
on < >
from < >
--
revoke select on department from Amis;
--
revoke update(budget) on department from Amis;
ロール#ロール#
ロールセットを作成し、ロールに権限を付与できます.
--
creat role instructor;
--
grant select on takes
to instructor;
-- ,
grant dean to Amit;
creat role dean;
grant instructor to dean;
grant dean to Satoshi;
ビューの承認
create view geo_instructor as
(select *
from instructor
where dept_name = ’Geology’);
The creator of the view must have select authorization on the instructor relation..
grant select on geo_instructor to geo_staff
権限の移行:
grant select on department to Amit with grant option;
-- Amit
権限の回収:
revoke select on department from Amit, Satoshi restrict;
--