関係データベース

関係データベースは属性とレコードを 2 次元表で作成したものである。 時間割ならば、属性は各曜日であり、レコードは時限で表される。 名簿ならば、学籍番号と氏名であり、属性はそれぞれの個人である。 また、住所録ならば属性は氏名と住所、電話番号でありレコードはそれぞれ個人を表 す。

2 次元表で、唯一一つしかないキーを、プライマリキーと呼ぶ。 また、名簿と住所録を参照したいときにキーとなるのは氏名である。 外部の表にも使えるキーを外部キーと呼ぶ。

作成した 2 次元表全体を関係データベースと呼ぶ。 レコードを要素数とする集合と考える。

関係代数

関係代数とは、以下の基本操作と基本操作を組み合わせた操作から成り立つ ものである。

制限
必要なレコードのみを取り出す
射影
必要な属性のみを取り出す
直積
2 つの関係表の直積を取る
属性の数とドメインが同じ 2 つの関係表の和集合を取る
属性の数とドメインが同じ 2 つの関係表の差集合を取る

基本操作を組み合わせた操作は以下のとおり。

データベース練習シート を参考に、復習していこう。

データベースサーバへのログイン

データベースサーバからのログアウト

データベースへのログイン

専用データベースへのログイン

アカウントが発行されたあとに、データベースを作る。 データベースへは psql コマンドを使う。

一般には psql -d データベース名 -U ユーザ ID で接続することができる。

psql -d itdb -U ipausers で接続して練習したことを覚えているだろうか。

roy{ta05001}% psql

とする。自分専用のデータベースを作ってみよう。 空白ならば、ユーザ ID のデータベースを作成する。

roy{ta05001}% createdb (データベース名)                                               [~]
roy{ta05001}% psql 
Welcome to psql 8.1.3, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

ta05001=> 

% psql データベース名

ユーザ権限を知るには

\du を実行すると、ユーザが どのような権限を持つのか知ることができる。

アカウントがない、あるいは自身で作成していない表は使えないので、

createuser でアカウントを作る。

grant all on 表, ... to 使ってもらう人, ...,

の手続きが必要。

データベースからのログアウト

E-R 図

SQL の操作(復習)

データベース練習帳

練習帳の作り方

%createdb itdb
%psql -d itdb -U ta05001;  

データベース itdb を作り、itdb に作成者として接続

itdb=# create table character (name text, program text, sex text, character text);
CREATE TABLE
itdb=# create table town (name text, town text, hobby text);
CREATE TABLE
itdb=# create table story (program text, abstract text);
CREATE TABLE
itdb=# create table marathon (name text, rank integer);
CREATE TABLE
itdb=# create table hundred (name text, rank integer);
CREATE TABLE
itdb=# create table shop(id integer, shop text, address text);
CREATE TABLE
itdb=# create table item(id integer, item text, color text, stock integer);
CREATE TABLE
itdb=# copy character from '/home/irhome/c105/madoka/public_html/2011/dat/character.csv' DELIMITER ',';
COPY 9
itdb=# copy town from  '/home/irhome/c105/madoka/public_html/2011/dat/town.csv' DELIMITER ',';
COPY 7
itdb=# copy story from  '/home/irhome/c105/madoka/public_html/2011/dat/story.csv' DELIMITER ',';
COPY 5
itdb=# copy marathon from  '/home/irhome/c105/madoka/public_html/2011/dat/marathon.csv' DELIMITER ',';
COPY 5
itdb=# copy hundred from  '/home/irhome/c105/madoka/public_html/2011/dat/hundred.csv' DELIMITER ',';
COPY 6
itdb=# copy item from  '/home/irhome/c105/madoka/public_html/2011/dat/item.csv' DELIMITER ',';
COPY 3
itdb=# copy shop from  '/home/irhome/c105/madoka/public_html/2011/dat/shop.csv' DELIMITER ',';
COPY 2

アカウント発行と許可

% createuser guest
% psql -d itdb -U guest

psql -d データベース -U アカウント

必要な表だけのアクセスおよびそのアクセス種類を同時に許可する。

itdb=# grant select on character,town,story,marathon,hundred,shop,item to guest;
GRANT

GRANT 許可するSQL 表, ... to アカウント