ROBOT PAYMENT TECH-BLOG

株式会社ROBOT PAYMENTのテックブログです

現場で役立つシステム設計の原則・データベースの設計

こんにちは!株式会社ROBOT PAYMENTの林です。 弊社の請求管理ロボシステムの機能がどんどん増えていて、成長しています。今後機能の開発またはメンテナンスのために、「現場で役立つシステム設計の原則」の本を読んで、輪読会を引き続き開催しています。前回は「現場で役立つシステム設計の原則」のことを紹介しましたが、今回もその本の中に印象が残る感想を共有いたします。

データベース設計が悪いとプログラムの変更が大変になる

プログラム開発を行う際には、データベースを利用することが避けられません。しかしながら、設計が不適切なデータベースを利用すると、以下のような問題が発生しやすくなります。 - データの重複が発生しやすく、データの取得が混乱する - カラムの用途が分かりにくく、理解に時間がかかる - テーブル間の関係性が分かりにくく、参照が困難

このような問題のあるデータベースを利用すると、データの正確性を判断することが困難になり、データの前処理や後処理が増加することがあります。その結果、複雑で理解しづらいプログラムになる可能性が高くなります。 従って、これらの問題が回避できたら、適切なデータベース設計ができ、データベースを参照する時にも結構役に立てると思います。

データベース設計をすっきりさせる

データベースの設計は基本的な仕組みを守れば、すっきりとしたデータベースになると思います。 まず、

カラムの名前は省略せずに分かりやすい形にすることが大切です。カラム名を「name -> nm」のように省略してしまうと、カラムの用途が分かりにくくなります。また、テーブル名とカラム名を組み合わせて、カラムの用途を明確にすると良いでしょう。

確かにカラムの用途がすぐに理解できると、開発も効率になります。ですが、各開発チーム内に各自の業務用語があると思います。完全な単語でなくてもすぐわかる場合、カラム名は省略形で設計してもOKという認識なので、カラムの設計が円滑で進めば良いです。

さらに、

カラムやテーブルに制約をかけることで、データの重複や不整合性を防ぐことができます。例えば、NULL値を含むカラムを検索する場合、意図しない結果が返ってくることがありますし、コードも複雑になります。そのため、NOT NULL制約を設定して値が必ず存在するカラムにすることで、正しい結果を返すことができます。

確かにNULL値のデータを検索する為、余計なif文などを加えるし、意図しない結果が出ないことを確認する為、テスト項目も増えました。NOT NULL制約があると、開発も楽になります。

また、一意性制約や外部キー制約などもありますが、ここでは割愛します。 以上の基本的なことを守れば、データベースの設計は難しい理論や深い分析能力を必要としません。誰でも分かりやすく、良いデータベースを設計できます。

最後に

データベースの設計には、人によって異なる観点や習慣が存在します。そのため、自分に適した良い点を学び、活用することが重要だと考えられます。この目的を達成するため、「現場で役立つシステム設計の原則」という書籍の輪読会を開催しています。



We are hiring!!

ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!

speakerdeck.com
www.robotpayment.co.jp
🎉twitter採用担当アカウント開設!🎉どんどん情報発信していきます!!