Sakiのプログラミング学習ブログ

フィヨルドブートキャンプ生。2021年中の卒業&就職を目指して学習中。

データベースに関する用語まとめ

✧ データベースとは

  • 整理されたデータのまとまり
  • 大量のデータをコンピュータシステム上で扱えるように集めたもの
  • 大量とはエクセルで管理できるレベルでなく、数千万件、数十億件の数

データと情報のちがい

  • データとは:事実のみを指す。あるフォーマットに揃えられている。
  • 情報とは:データを部分的(全体の場合もある)に収集、加工したもの
  • 天気予報で例えると、
    • データは観測側で決めた数値を観測したもの
    • 情報は、そのデータを用いて晴れの確率、雨の確率を導き出したもの。普段ニュースで見ている天気予報はこっち。

✧ リレーショナルデータべース(RDB)とは

  • データを表形式で扱うデータベースのモデル
  • 他にも様々なデータベースのモデルがあるが、プログラマーを目指すなら、まずはRDBをできるようになる必要がある

リレーショナルデータベースマネジメントシステム(RDBMS)とは

  • リレーショナルデータベースを便利に使うためのソフトウェア
    例:オラクルデータベース、MySQLPostgreSQL

SQLとは

  • リレーショナルデータベース(RDB)を読み書きするときに使う言語

RDB, RDBMS, SQLの3つの関係

  • Postgresqlなどのリレーショナルデータベースマネジメントシステム(をSQLという言語を使って操作し、これによりリレーショナルデータべースデータベースを扱うことができる。

✧ リレーショナルデータべース(RDB)の設計

  • 以下より、リレーショナルデータべース(RDB)の設計=データベース設計と記載

設計は、システム開発のステップのどこに当たるのか?

  • 開発には4つのステップがある
    • 要件定義
    • 設計 ←リレーショナルデータべース(RDB)の設計はここに当たる
    • 開発
    • テスト
  • この4ステップのうちデータベース設計が当てはまるのは設計。 設計はデータベースだけを設計するのではなく、ユーザーが使用する画面の設計や機能を決めるアプリケーション設計など、他にも色々設計することがある
  • この4つをどう進めるかのやり方は主に2つに分かれる。
    ウォーターフォールモデルとプロトタイピングモデル(これを応用したのがアジャイル)

データベース設計の3つのステップ

データベース設計にも段階があり、3つのステップがある。
1. 外部スキーマ/ 2. 概念スキーマ/ 3. 内部スキーマ

1. 外部スキーマ

  • ユーザーから見たデータベース。画面のユーザーインターフェースや入力データなど。
  • 例えば、Twittterのアカウントのプロフィール画面では、ユーザー名(@から始めるID),表示名,自己紹介文,位置情報,ウェブサイトなどのURL,誕生日,いつからTwitterを使っているか,今フォローしている人数,今フォローされている人数,時系列順になったツイートの一覧,リプライも含めたツイート一覧,画像・動画がついたツイート一覧,いいね一覧,おすすめツイート,トレンドなど、ユーザーは様々なデータベースを見ることができる。

    このように、プロフィール画面に何のデータを表示するかや、データをどのように画面に表示するかなどを定義するステップが、外部スキーマである。

2. 概念スキーマ

  • データベースに格納するデータの洗い出し、そのデータ同士の関連性の定義を行う。
    = 論理設計という。
  • この「論理」とは、データベースサーバーのCPUパワーやストレージの格納場所など、物理層の制約にとらわれない設計ということを意味する。
  • データベース設計を行う時は、まずこういった物理層の制約は無視して先に論理設計を行う。
  • フィヨルドブートキャンプのTwitterのデータベース設計の課題はこれに当たる。

3. 内部スキーマ

  • 論理設計で定義されたデータを、具体的にどのようにリレーショナルデータベースマネジメントシステム(RDBMS)に格納するかを定義する。=物理設計という。

✧ 論理設計で出てくる用語まとめ

f:id:Saki-Htr:20210113070746p:plain
テーブルの見方
(データベースの用語を理解しよう 「テーブル」「レコード」「カラム」「フィールド」とは?より引用)

エンティティ/テーブル

  • エンティティとは、データの集合体。 例:顧客、会社、社員、店舗、車、注文履歴、税
  • リレーショナル・データベースでは、これを二次元表に近いテーブルという物理的な単位で格納して、データを表現する。

列(カラム,属性)

  • エンティティは、データを属性という形で保持する
  • 例えば、顧客というエンティティが持つ属性は、顧客の名前、生年月日、住所、電話番号など。

行(レコード,タプル)

  • 登録・管理されるデータそのものを指す。
  • 例えば、上記の顧客テーブルのレコードは、
    • 顧客の名前:山田花子
    • 生年月日:1990年1月1日
    • 住所:東京都大田区○○町1-1-1
    • 電話番号:03-1234-5678

この山田花子に関する実際のデータそのものを指す。

✧ 参考書籍/参考記事