6章−1

(1) 実行結果を参考に次のようなSQLを作成しなさい。制約などは適切に付加すること。
・地区を管理するテーブルareaを作成し、行を追加する。
・店舗を管理するテーブルshopを作成し、行を追加する。ただし次の条件を満たすこと。
	1. a_code列はareaテーブルのcode列と同じデータを意味し、そこに存在する値以外は拒否する。
	2. code列は地区ごとに一意とする。
・店員を管理するテーブルclerkを作成し、clerk.datからデータを取り込む。ただし次の条件を満たすこと。
	1. a_code、s_code列はshopテーブルのa_code、code列と同じデータを意味し、そこに存在する値以外は拒否する。
	2. code列は店舗ごとに一意図とする。
	3. sales列は売上金額を意味する(単位は万円)。

odexer=> \i 06_1_1.sql
psql:06_1_1.sql:9: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "area_pkey" for table "area"
CREATE TABLE
INSERT 0 1
INSERT 0 1
INSERT 0 1
psql:06_1_1.sql:19: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "shop_pkey" for table "shop"
CREATE TABLE
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
psql:06_1_1.sql:41: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "clerk_pkey" for table "clerk"
CREATE TABLE

odexer=> select * from area;
 code | name
------+------
    1 | 関東
    2 | 関西
    3 | 九州
(3 rows)

odexer=> select * from shop;
 a_code | code |  name
--------+------+--------
      1 |    1 | 東京店
      1 |    2 | 横浜店
      1 |    3 | 大宮店
      1 |    4 | 千葉店
      2 |    1 | 大阪店
      2 |    2 | 京都店
      2 |    3 | 神戸店
      2 |    4 | 奈良店
      3 |    1 | 博多店
      3 |    2 | 大分店
      3 |    3 | 長崎店
      3 |    4 | 熊本店
(12 rows)

odexer=> select * from clerk;
 a_code | s_code | code |    name    | sales
--------+--------+------+------------+-------
      1 |      1 |    1 | 杉本浩基   |   167
      1 |      1 |    2 | 八木悦子   |   271
      1 |      1 |    3 | 山本亨     |   273
      1 |      1 |    4 | 村越カズミ |   217
      1 |      1 |    5 | 加藤雄介   |   153
      1 |      2 |    1 | 鈴木勝     |   177
      1 |      2 |    2 | 松本果澄   |   269
...
      3 |      4 |    3 | 戸塚穣     |   177
      3 |      4 |    4 | 清水美穂   |   108
      3 |      4 |    5 | 鈴木智美   |   197
(60 rows)


(2) 実行結果を参考に次のようなSQLを作成しなさい。
・shopテーブルが条件1.を満たしているか確認する。
・clerkテーブルが条件1.を満たしているか確認する。

odexer=> \i 06_1_2.sql

psql:06_1_2.sql:1: ERROR:  insert or update on table "shop" violates foreign key constraint "shop_a_code_fkey"
DETAIL:  Key (a_code)=(4) is not present in table "area".
psql:06_1_2.sql:2: ERROR:  insert or update on table "clerk" violates foreign key constraint "clerk_a_code_fkey"
DETAIL:  Key (a_code,s_code)=(1,5) is not present in table "shop".