システム開発<基本遍> 先ずはDB設計のお勧め

DB

シニアエンジニアまたは若手エンジニアが、プログラム開発を進めるにあたり、

最初に携わると良いのが、何でしょうか?

最初に携わるのは?

旧来通りのウォーターフォール型の開発手法でしたら、先ずは、下記から進めると思います。

  • 要件定義
  • 基本設計
  • 詳細設計

しかし、対応する案件に寄っては、要件定義や基本設計は、お客様(エンドユーザー)や

元請企業(SIベンダー)が対応されるケースが多いと思います。

お客様(エンドユーザー)から、直接、請け負うソフト開発会社の場合は、

開発チームのベテランエンジニアが携わる事も多いと思います。

では、シニアエンジニアまたは若手エンジニアが、要件定義や基本設計から

携わる事が出来るかと言うと、中々、難しいかもしれません。

 

プログラム開発

プログラマーの熱意や気持ちからすれば、お客様(エンドユーザー)から一番に

目に触れるUI(ユーザーインターフェース)の設計・開発に携わる方が、

アピールが出来るし、評価され易いと考えるのは、至極当然です。

また、旧来通りのウォーターフォール型の開発手法ではなく、現在、主流の

アジャイル型の開発手法だと、お客様(エンドユーザー)からのニーズや

レビュー後の変更を受け入れながら、短期間で開発を進める為、

要件定義や基本設計を省くケースも有ります。

フェーズの最終段階で、それまで対応したプログラムソースと一緒に

要件定義書や基本設計書、詳細設計書を作成して納品する事も有ります。

 

データを知ること

ウォーターフォール型であっても、アジャイル型の開発手法であっても、

データを扱う事が多いのが現状です。

開発手法からでなく、アプリケーションやシステムの観点から言えば、

チケット予約アプリや家計管理アプリ、スケジュール管理アプリ、

販売管理システム、各種ゲームを始め、多くのアプリやシステムが

データとは切り離せないのが、現状です。

データを扱う上で、データ蓄積しておく箱:データベース(DB)を知り、

設計・実装・操作が出来れば、様々なアプリやシステムの設計でも

開発でも、柔軟に対応が出来ます。

データベース(DB)とは?

シニアエンジニアには、業務系(COBOL、VB)や制御系(C/C++、アセンブラ)でも、

実勢に開発案件で、IBM社のDB2、Oracle社のOracleDB、Microsoft社のSQL Serverなど、

熱かった事があるかもしれません。

また、若手エンジニアには、先輩エンジニアやOJT、各種情報処理技術者試験の学習で、

DBという名前を聞いた事が有るかもしれません。

ここで、DBに関して簡単におさらいしますね。

データベース(DB)の種類

データベースの種類は、大きく2つに分かれます。

  • SQL データベース(リレーショナル)
  • NoSQL データベース(非リレーショナル)

 

SQLデータベース(リレーショナル)

特徴:データの定義と操作に、構造化クエリ言語(SQL)を使用します。

※SQLは、Structured Query Languageの略です。

構造:テーブルベースの構造です。

データの関係をテーブルで表していて、 Excel のスプレッドシートのようなものです。

→ テーブルの行(横)は、ひとつのレコードを表し、テーブルの列(縦)は、

ひとつのカラムのグループを表しています。

レコード例:チケットの予約をした場合

予約番号:2531 – 便名:ANA903 – 搭乗日:2025/7/18 – 出発時間:10:30 – 経路:伊丹~羽田 – 予約シート:38D

のようなデータです。

カラム例:チケットの場合

便名:ANA903、JAL271、PEACH329…

製品:Oracle、MySQL、Microsoft SQL Server、PostgreSQL、IBM DB2

NoSQL データベース(非リレーショナル)

特徴:構造化されていないデータを扱います。

構造:ドキュメントベース、キー・バリューペア、グラフデータベース、または

ワイドカラムストアのいずれかの構造です。

  • ドキュメントベース:従来の SQL データベースに最も似ていますが、スキーマと正規化はありません。 行と列はなく、なんらかのデータをまとめたコレクションを格納するだけです。
  • キー・バリューペア:キーと値のペアを格納します。 値は自由であり、数値はもちろん、サブオブジェクトを含む複雑なオブジェクトも格納できます。
  • グラフデータベース:用途が限定されたニッチなタイプで、Facebook や LinkedIn などのソーシャル Web サイトのように、友人の知り合いを提示する用途です。すべての人物がノードとして表現され、人物間の関係性がエッジとして表現されます。 友人の友人を探すには、適当なノードを始点として、エッジを “たどる” だけです。
  • ワイドカラムストア:キー・バリューペアにやや似ていますが、キーが保持するのは単一の値ではなく、列へのアクセスです。値には数十億の列を含めることができ、動的に変更可能です。

製品:

  • ドキュメントベース:MongoDB、DynamoDB、Couchbase、Firebase、Cosmos DB
  • キー・バリューペア:Redis、Memcached、Cosmos DB
  • グラフデータベース:Neo4j、ArangoDB、Cosmos DB
  • ワイドカラムストア:Cassandra、HBase、Bigtable、Cosmos DB

まとめ

今回は、シニアエンジニアまたは若手エンジニアが、プログラム開発を進めるにあたり、

先ずは、データを扱う上で、データ蓄積しておく箱:データベース(DB)を知って、

興味を持って頂くのが主旨でした。

後日、実際のプログラム開発業務で採用される

  • SQL データベース(リレーショナル)

における、正規化の概念、テーブル設計の記事を投稿します。

いらすとや ぱくたそ より引用

 

コメント

タイトルとURLをコピーしました