こんにちは!株式会社ROBOT PAYMENTの林です。 弊社の請求管理ロボシステムの機能がどんどん増えていて、成長しています。今後機能の開発またはメンテナンスのために、「現場で役立つシステム設計の原則」の本を読んで、輪読会を引き続き開催しています。前回は「現場で役立つシステム設計の原則」のことを紹介しましたが、今回もその本の中に印象が残る感想を共有いたします。
データベース設計が悪いとプログラムの変更が大変になる
プログラム開発を行う際には、データベースを利用することが避けられません。しかしながら、設計が不適切なデータベースを利用すると、以下のような問題が発生しやすくなります。 - データの重複が発生しやすく、データの取得が混乱する - カラムの用途が分かりにくく、理解に時間がかかる - テーブル間の関係性が分かりにくく、参照が困難
このような問題のあるデータベースを利用すると、データの正確性を判断することが困難になり、データの前処理や後処理が増加することがあります。その結果、複雑で理解しづらいプログラムになる可能性が高くなります。 従って、これらの問題が回避できたら、適切なデータベース設計ができ、データベースを参照する時にも結構役に立てると思います。
データベース設計をすっきりさせる
データベースの設計は基本的な仕組みを守れば、すっきりとしたデータベースになると思います。 まず、
カラムの名前は省略せずに分かりやすい形にすることが大切です。カラム名を「name -> nm」のように省略してしまうと、カラムの用途が分かりにくくなります。また、テーブル名とカラム名を組み合わせて、カラムの用途を明確にすると良いでしょう。
確かにカラムの用途がすぐに理解できると、開発も効率になります。ですが、各開発チーム内に各自の業務用語があると思います。完全な単語でなくてもすぐわかる場合、カラム名は省略形で設計してもOKという認識なので、カラムの設計が円滑で進めば良いです。
さらに、
カラムやテーブルに制約をかけることで、データの重複や不整合性を防ぐことができます。例えば、NULL値を含むカラムを検索する場合、意図しない結果が返ってくることがありますし、コードも複雑になります。そのため、NOT NULL制約を設定して値が必ず存在するカラムにすることで、正しい結果を返すことができます。
確かにNULL値のデータを検索する為、余計なif文などを加えるし、意図しない結果が出ないことを確認する為、テスト項目も増えました。NOT NULL制約があると、開発も楽になります。
また、一意性制約や外部キー制約などもありますが、ここでは割愛します。 以上の基本的なことを守れば、データベースの設計は難しい理論や深い分析能力を必要としません。誰でも分かりやすく、良いデータベースを設計できます。
最後に
データベースの設計には、人によって異なる観点や習慣が存在します。そのため、自分に適した良い点を学び、活用することが重要だと考えられます。この目的を達成するため、「現場で役立つシステム設計の原則」という書籍の輪読会を開催しています。
We are hiring!!
ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!
speakerdeck.com
www.robotpayment.co.jp
🎉twitter採用担当アカウント開設!🎉どんどん情報発信していきます!!