論理設計を行って ER 図の作成します。この過程で以下を行います
まずは Visio2000 で「ファイル->図面の種類の選択->データベース->Martin ERD」を選択します
自動で Martin ERD のステンシルが開きますが、追加で以下を使えるようにしておきます。
エンティティシェイプをドラッグ&ドロップしてクラス図をみてエンティティクラスのフィー ルドをカラムとして追加していきます。
データベースを正規化します。正規化についての説明は このページが分かりやすいです。
繰り返し項目はありませんので不要です。
数値の範囲、文字列の長さなどを考慮して物理設計をおこないます。
となるはずですが今回はあまりにも簡単なテーブルなので主キーと外部キー の定義のみを設定して各カラムの属性は Enterprise Manager から直接作成します。
「スタート->プログラム->Microsoft SQL Server->Enterprise Manager」で起動でき る Enterprise Manager を使用してデータベースを作成します。大雑把に以下の順番で すすめていきます。
(local)(Windows NT)のデータベースで右ボタンを押して「新規データベース」を 選択します。
全般 | 名前 | lab (データベース名)(任意) |
データファイル | 場所 | D:\lab\database_Data.mdf |
ファイルの自動拡張 | チェック(デフォルト) | |
ファイル拡張 | 10パーセントごと(デフォルト) | |
ファイルの最大サイズ | ファイルを無制限に拡張(デフォルト) | |
トランザクションログ | 場所 | D:\lab\database_Log.ldf |
ファイルの自動拡張 | チェック(デフォルト) | |
ファイル拡張 | 10パーセントごと(デフォルト) | |
ファイルの最大サイズ | ファイルを無制限に拡張(デフォルト) |
ユーザデータベースのデータファイルの場所は C: に置かない方がいいでしょう。 データベースは日々増加していくものなのである日突然 C: がいっぱいになって いるとなにがおこるか分からないからです。 パフォーマンス的にもデータは別ディスクにおいた方が いいのですが VMWare でサーバを構築しているのなら関係ないです。
「セキュリティ->ログイン」でユーザを作成します。
全般 | 名前 | labdb |
認証 | SQL Server 認証 | |
パスワードを設定 | ||
データベース | lab | |
言語 | <規定値> | |
サーバーロール | なし | |
データベースアクセス | データベース | lab |
データベースロール | public/db_datareader/db_datawriter |
参照のみと更新も可能なユーザを分けることもありますがそれほど大きな システムではないため常に更新可能なユーザでアクセスすることにします。 後の権限の付与を省略するために db_datareader と db_datawriter を 付与しておきます。これでこのデータベース内のすべてのユーザテーブル にselect/update/delete の権限があることになります。もちろん、ロール は public だけにして個別のテーブルに権限を付与してもかまいません。
db_datareader | データベース内のすべてのユーザー テーブルのデータを表示します。 |
db_datawriter | データベース内のすべてのユーザー テーブルでデータの追加、変更、または削除を行います。 |
「データベース->lab->テーブル」でテーブルを作成します。
物理設計を元に物理的な大きさを決めてテーブルを作成します。基本的に正規化 で発生した ID カラムは int 型を割り当てます。文字列型は適切な大きさ を割り当てます。
例)
<html:text name="ent" property="name" size="2" maxlength="2">
このフィールドには SJIS や日本語EUC で"漢字"というで 4 バイトの文字列が含めること ができてしまいます。このため
NAME CHARACTER(2)
ではなく
NAME CHARACTER(4)
とする必要があります。もちろん 専用の Validator コードを書けばバイト単位でチェックすることは可能です。
同様にして division テーブルと enroll テーブルを作成します。
employ テーブルのメールアドレスは重複を許しませんので UNIQUE INDEX を張ります。
デザインビューをあけて右ボタン->インデックス/キーを選択します
SQL Server 2000 では主キーはただの UNIQUE INDEX ですのでここの画面で PK_employ というインデックスが存在しています。新規作成ボタンを押してから 列名を選択し UNIQUE の作成にチェックを入れます。
ER 図を元に外部参照制約を作成します。
empoy テーブルの divisionid は divisionid に依存していますので employ テーブル のデザインビューをあけて右ボタン->インデックス/キーを選択します
employ.divisionid -> division.divisionid |
新規作成を押してから主キーに依存先を記述します。
同様に以下のリレーションシップも作成します
enroll.empno -> employ.empno |
enroll.courseid -> course.courseid |
ふぅ〜、やっとできました。