当ブログでは過去に『Accessのデータベース設計』についての記事を書きましたが、毎月200人の人たちが読んでくれています。
ここ1年ほどデータベース関係の記事を書いていなかったので、今回はデータベース設計の基本となる「テーブル定義書」をテーマにしました。
システム開発をする時に必ず必要となるものは、システムの設計図です。
システム自体を販売しているシステムベンダーなどでは、設計書を書くのが当たり前になっていますが、社内SEなどでは省略しがちです。
自社開発で運用しているAccessデータベースが悪者にされることがよくありますが、感覚だけに頼ってなんとなくAccessを作ってしまっているのが大きな原因の一つです。
Accessデータベースを作る前に設計書を作るようクセ付けできれば、高品質のシステムを作ることができます。
あなたが時間をかけて作ったAccessデータベースが悪者にされなくなります。
今回紹介する「テーブル定義書」も設計書のひとつで、やはり大事なものです。
ここでは、テーブル定義書の作り方を主に解説しますが、更にテーブル定義書自体を保守運用するための方法についても深掘りしました。
テーブル定義書をどうやって作るのか
テーブル定義書自体はとてもシンプルで、Excelで簡単に作ることができます。
レイアウトは下のような表形式で、1テーブルあたり1枚のテーブル定義書で構成されます。
![テーブル定義書](https://sys-daddy.com/wp-content/uploads/2021/07/table_definition_01_01.jpg)
テーブル定義書に必要になる項目は
- Key(主キーや外部キー)
- フィールド名
- データ型
- Not Null(Nullを許容しない)
- 備考欄
になります。
Keyは、「1」側の主キーと「多」側の外部キーをしっかりと明記しておくとより分かりやすいです。
![Keyの書き方](https://sys-daddy.com/wp-content/uploads/2021/07/table_definition_05.jpg)
Not Nullは、空白にしてはいけないフィールドを指定しておきましょう。
Keyやデータの顔となる名称などが当てはまります。
1枚のワークシートに1枚のテーブル定義書が収まり、データベースごとにExcelブックを分けるのが分かりやすいのではないでしょうか。
ところで、テーブル定義書ってAccessテーブルのデザインビューとそっくりですよね?
![Accessのテーブル定義書](https://sys-daddy.com/wp-content/uploads/2021/06/table_definition_02.jpg)
また、この記事ではAccessのテーブル定義書を作ることを想定しているため、フィールド名を日本語にしています。
しかし、SQL SERVER やMySQLなどの他のデータベースでは、日本語で設定できない場合もあります。
将来Accessから商用データベースに拡張したい場合には、フィルド名をアルファベット表記にしておいた方が無難でしょうね。
テーブル定義書をさらに便利に使う
更にテーブル定義書とは別にテーブルの一覧表を同じブックにまとめておくと、システムの全体像を把握できます。
![テーブルの一覧](https://sys-daddy.com/wp-content/uploads/2021/06/table_definition_04.jpg)
データ型の欄に、SQLの「CREATE TABLE文」で使われる名称を入力するのもよいでしょう。
![汎用性のあるテータ型](https://sys-daddy.com/wp-content/uploads/2021/06/table_definition_03.jpg)
文字列(TEXT)や十進型の数値(DECIMAL)などはサイズもしっかりと設定しておきます。
Excel VBAを使って、CREATE TABLE文を自動で作れるようにしておけば、Access以外のデータベース(Oracle,SQL SERVER,MySQLなど)のテーブルを一発で作れるようになります。
テーブルやフィールドの数が増えるほど、テーブル作成の時短効果は高くなるでしょうね。
参考までに部品マスタテーブル作成のSQL文を載せておきます。
そのままAccessのSQLビューに貼り付けて実行すると、テーブルが作成されているはずです。
CREATE TABLE T01部品マスタ
(部品登録ID LONG PRIMARY KEY, 品名 TEXT(60),
型式 TEXT(50), 規格 TEXT(50), サイズ TEXT(50),
小分類ID LONG, 備考 TEXT(100), 伝票表示 TEXT(10));
ここで紹介したのは簡単な事例にすぎません。
きっと他にも便利な使い方があるので、いろいろ試してみてくださいね!
テーブル定義書を作っておいてよかったこと
しかし、テーブル定義書を作るひと手間をかけることで、下のようなメリットが得られます。
- データベース作りの途中で起動修正するリスクが減る
- 保守運用をスムーズに行える
データベース作りに慣れていても、正しい答え(データベース設計)に一発でたどり着くのはなかなか難しいです。
作っている途中でも、「この項目が足りなかった」「このテーブルは分割した方がよかった」などといったことがよく起こります。
データベース作りの工程が先に進んでいるほど、修正が難しくなります。
テーブル定義書を作っていると、途中で軌道修正するためのアイデアが頭の中に浮かびます。
データベース作りにまだ取りかかっていないので、修正も簡単です。
また、設計書に落とし込んでおくと、データベースが完成した後の改修もスムーズに進みます。
テーブル定義書の変更履歴は
システムをの品質自体を良くするためには、当然テーブルの項目(フィールド)の変更を行います。
増やしたり、減らしたり、名前やデータ型を変えたりなど、いろいろな変更が行われますよね?
テーブル定義書の変更履歴記録も、システムの保守を行なっていく上で大事なことです。
最もシンプルな方法は、変更前のExcelブックをバックアップしておくことです。
ブック名に差し替えた日付を入れておくと、後で見返すことができます。
実際に過去のバックアップに振り返ることは少ないですが、年単位でフォルダを作り、そのまま放り込んでおくだけで十分です。
あまりブックを溜めたくない方は、年に1回程度に整理しておくと管理しやすいでしょうね。
簡単な変更履歴を表にまとめておく方法も有効です。
フリーソフトをダウンロードした時に、更新履歴を記載したテキストファイルが同封されていることがありますよね。
まとめ
今回はテーブル定義書の作り方と運用方法について紹介しました。
私自身がIT業界での経験がなく、社内SEとして独学しながらAccessデータベースを作ってきました。
データベース設計の学習をしてこなかったため、ずいぶんと遠回りしてきました。
しかし、今はAccessデータベースを作る前には必ずテーブル定義書を作るようにしています。
非IT業界の方で、同じようにデータベース作りに試行錯誤している方にとって活用できることだと思いますので、ぜひ試してくださいね!