🦮

【DB】DB関連で取り扱うドキュメントの種類と管理の考え方

2024/05/19に公開

はじめに

こんにちは。タクーシュです。

エンジニアをやっていると、必ずデータベースというのが出てくるかと思いますが、データベースを扱う開発現場では必ずと言っていいほどそれ関連のドキュメントが保管されているかと思います。

(中にはそのドキュメントが存在しない開発現場も存在しますが。。。)

今回は多くの開発現場で実際目にすることになる
データベース関連で取り扱うドキュメントの種類に
ついて紹介していきたいと思います。

1.テーブル定義書

テーブル定義書とは、データベース内の各テーブルに関する情報をまとめたもので、基本は1つのテーブルに関する情報をその中に入れていくことになります。

開発現場にもよりますが、テーブル定義書と言われたら上記のスクショのようなものだという認識を持ってもらえば良いかと思います。

これがあると何が便利かというと、例えば必要なデータをSQLで引っ張り出したいときにSQL文は基本的に、上記のスクショに書かれてある物理名を基にして以下の例の通り書いていくことになります。

なお、今回は、仕入れ先マスタのテーブルから特定の仕入れ先の担当者の一覧を引っ張り出したい場合のSQL文を書いていきます。

SELECT
    SUP_EMP_NAME
FROM
    SUPPLIER_MST
WHERE
    SUP_NAME = "";

上記のSQL文はテーブル定義書を基にしてきちんとデータ型に従ったものが書けている状態ですが、これがテーブル定義書もない状態だと、データ型の情報もないのでWHEREのところで別のデータ型だという思い込みで入力してもエラー分が吐き出されてしまいます。

テーブル定義書はそれくらいかなり重要性の高いドキュメントになります。

テーブル定義書の詳しい内容に関しては、以下のサイトを参考にすると良いでしょう。

https://fulfillment-c.com/database/table-definition-document/

2.ER図

データベースだとSQL文を書いて操作することでテーブルの作成、データ抽出、データ修正、データ消去などを行うことが出来ますが、その中でもデータ抽出はかなりの頻度で行うことになります。

そして、そのデータ抽出を行う対象のテーブルが複数にまたがるとSQL文を読むだけじゃその現場の仕様を分かっている人だけに限られてしまいます。

複雑なSQL文が理解できない人でもデータ抽出をどのように行っているのか一目で把握できるようにするのがER図です。

ER図を見ると、SQL文で理解しにくい処理でも一目見ただけで、どういう処理が行われているのか
直感的に理解しやすくなります。

また、テーブル定義書だけのドキュメント管理と比べてもデータベースの品質や保守・運用の向上を図ることが出来ます。

詳しい説明は以下のURLを参考にすると良いでしょう。

https://products.sint.co.jp/ober/blog/create-er-diagram

開発現場で出くわしたデータベースのドキュメント

実際私が開発現場で出くわしたデータベースのドキュメントについて詳しく書いていきたいと思います。

私は、基幹系SESとして複数の現場を渡り歩いておりますが、現在働いている開発現場と今までの開発現場では必ずER図とテーブル定義書があり、基本的にはそれを見れば現在動いているデータベースの仕組みがどうなっているのか把握することが出来ました。

しかしながら、開発現場でドキュメントを見ていると、ER図でのデータベースの組み合わせが可読性の悪いSQL文を生み出すほどにひどかったり、テーブル定義書が実際の本番環境と相違が発生している為、テーブルのフォント情報に相違があることもありました。

また、各テーブル共通で使われているデータ型やNOTNULLの情報で違いが発生しSQL文を書いたときにデータ抽出が上手く出来ないという事象が発生しました。

データベースのドキュメント管理をよりよく行うには

データベースのドキュメント管理をよりよく行うためには、以下のことを心掛けると非常にドキュメントの管理がしやすいと思われるので、行うと良いでしょう。

これら3つのことをチーム内で遵守すれば、途中でメンバーの誰かが抜けたとしても現在のデータベースの運用がどうなっているのか一目で把握できる体制が出来、コミュニケーションがとりやすくなるでしょう。

さいごに

データベースのドキュメント管理が要なのは言うまでもありませんが、多くのデータベースが存在している開発現場だとドキュメントの管理まで手が回らず、情報が古くなっていることが少なくありません。

なので、ドキュメントを見るときは必ず責任者の人とそれで合っているかどうか確かめながらデータベース関連のドキュメントの管理を行っていきましょう🐶

Discussion