関係データベースは属性とレコードを 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 使ってもらう人, ..., >
の手続きが必要。
%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 アカウント