今回は長いので数回に分けて投稿します。
データベースには”スキーマ”という概念があり、
テーブルをカテゴリわけすることが出来るようになっています。
そこで、プログラムがアクセスするスキーマ(以下 trnスキーマ)と
顧客情報など重要度が高いスキーマ(以下mstスキーマ)の2種類を作成し、
それぞれにテーブルを格納していくことをします。
まずは、どんなテーブルを作成するかですが・・・・
・ユーザ情報
・商品情報
・ユーザ購入情報(親)
・ユーザ購入情報(子)
の4つを作成しようと思います。
さてこの2つをtrnスキーマ、mstスキーマに分けてみますと・・・・。
trnスキーマ
・ユーザ購入情報(親)
・ユーザ購入情報(子)
こんな感じになるのではないかと思います。
ではそれぞれのスキーマを作成し、テーブルを格納しましょう。
CREATE SCHEMA [mst]
GO
CREATE SCHEMA [trn]
GO
次に スキーマの所有者を作成します。
mstスキーマの所有者は mstuser
trnスキーマの所有者は trnuser
とします。
さてこの2人を作成します。
CREATE LOGIN [mstuser] WITH PASSWORD=N'パスワード';
GO
CREATE LOGIN [trnuser] WITH PASSWORD=N'パスワード';
GO
これでmstuserとtrnuserが作成されました。
でもこれだけでは接続するためのユーザが出来ただけなんです。
なので、次に以下のSQLを発行します。
CREATE USER [mstuser] FOR LOGIN [mstuser] WITH DEFAULT_SCHEMA=[mst]
GO
CREATE USER [trnuser] FOR LOGIN [trnuser] WITH DEFAULT_SCHEMA=[trn]
GO
このSQLを発行することによって、データベースにユーザが登録されたことになります。
このSQLを見てもらうとわかるのですが、
接続したときにどのスキーマがデフォルトスキーまであるかを定義することが出来ます。
次にスキーマの所有者を設定するSQLを発行しましょう。
ALTER AUTHORIZATION ON SCHEMA::[mst] TO [mstuser]
GO
ALTER AUTHORIZATION ON SCHEMA::[trn] TO [trnuser]
GO
すでに作成したスキーマに対し、mstスキーマの所有者はmstuser
trnスキーマの所有者はtrnuserにしなさいというSQLを発行しています。
ここまでの作業によって mstスキーマとtrnスキーマが作成され、それぞれにmstuser、trnuserというスキーマ所有者を作成したことになります。
さて、スキーマを作成したので、テーブルを作成します。
テーブルの内容は以下の通りとします。
ユーザ情報
| ID |
LN |
FN |
POST |
ADDRESS |
| 100 |
NULL |
今川 |
1234567 |
神奈川県 |
| 110 |
NULL |
大木 |
7654321 |
東京都 |
| 120 |
NULL |
林 |
9873216 |
千葉県 |
商品情報
| ITEMID |
PRICE |
ITEMNAME |
| 1 |
30000 |
ラケット |
| 2 |
3000 |
ボール(1ダース) |
| 3 |
300 |
ボール(2個入り) |
| 4 |
15000 |
シューズ |
| 5 |
1000 |
ソックス |
ユーザ購入情報(親)
| ID |
BUYDATE |
| 100 |
2007/01/01 0:00:00 |
| 100 |
2007/01/02 0:00:00 |
| 110 |
2007/01/02 0:00:00 |
| 120 |
2007/01/03 0:00:00 |
ユーザ購入情報(子)
| ID |
BUYDATE |
ITEMID |
NUM |
DOWN |
DOWNTYPE |
| 100 |
2007/01/01 0:00:00 |
1 |
2 |
0 |
0 |
| 100 |
2007/01/01 0:00:00 |
2 |
1 |
0 |
0 |
| 100 |
2007/01/02 0:00:00 |
4 |
1 |
0 |
0 |
| 100 |
2007/01/02 0:00:00 |
5 |
1 |
0 |
0 |
| 110 |
2007/01/02 0:00:00 |
3 |
2 |
0 |
0 |
| 110 |
2007/01/02 0:00:00 |
5 |
3 |
0 |
0 |
| 120 |
2007/01/03 0:00:00 |
4 |
2 |
0 |
0 |
| 120 |
2007/01/03 0:00:00 |
5 |
2 |
0 |
0 |
これらのテーブルに対するCREATE TABLE文は割愛しますね~。
#知りたい人はコメントいただければ コメント欄へ追記しますが、ここで書くと長くなるので割愛しちゃうのさ。
さて、ここまでで”スキーマを作成し、テーブルを作る”ところまで出来ました。
次はそれがどうセキュリティに絡んでくるかのお話♪
# 長いよ~~~・・・・orz