【Django】データベースを解説!モデル?レコード?《Day5》

2019年11月16日

こんちゃっすー。ひろちょんです。

今までの記事では、入門~ビュー(View)に関してやってきましたが、ついにデータベースを扱っていく話に突入していきます。

つまりMVC(モデル・ビュー・コントローラー)の M の部分であるモデルについて触れていくということですなー。

内容がバックエンドっぽくなってくるので、お楽しみに(‘ω’)ノ

※使用している Django のバージョンは 2.2.6 です

出てくる用語を確認しよう!(データベース,モデル,レコード…)

データベース』と『モデル』といった言葉は何かと耳にしますかね…

今回はバックエンドで使われている用語たちを役割と共に解説していく回になります。

↓ 主に出てくる用語達はコチラ ↓

  1. データベース
  2. テーブル
  3. レコード
  4. モデル
  5. モデルのインスタンス

これら 6 つの用語は大きく 2 つにわけることができます。

それが…

データベース側 ▶ データベース、テーブル、レコード
モデル側 ▶ モデル、モデルのインスタンス

なぜこの2つに分けられたかというと、簡単にいうと、それぞれ動いている場所が違うからです

まずは上のデータ側の解説からしていきます!

データベース

データベースとはおそらく想像通りで、『データの塊』でも間違いではないです。

データベースとは?

ですが厳密にいうとデータベースとは、データベースとは、『データを保管することに特化したプログラム』のことを言います。

そのデータベースにも色々種類がありますが、Django にて対応しているのがコチラの3つになります。

  • MySQL
  • PostgreSQL
  • SQLite

↑ コチラの名前も聞いたことはあるのではないでしょうか?

これらはデータベース言語の名前を示していたんです!

3つのデータベースにもそれぞれ特徴があるのですが、詳しい事はググってみてください(‘ω’)ノ

今回はその 3 つの中でもプログラムのサイズが小さく、今すぐ使うことできるSQLiteを使っていきます。

データベースの構造

データベースは『データベース』『テーブル』『レコード』で構成されていて、先ほど話したデータベースがすべてを覆っていて、その中にテーブル、その中にレコードが埋まっているイメージですね。

そしてデータベースは直接データを格納することができません。データベースとは『テーブル』をまとめて格納する場所になります。

テーブルとは?

テーブルとはデータを保存する際の形式を定義する場所になります。例えば乃木坂メンバーの名前、年齢、生年月日を保存する…など。

ですがこのテーブルがデータを保管しているわけではなく、『レコード』にてデータを保管しています。

レコードとは?

レコードとはテーブルが定義した形式に従って、データを保管する場所になります。

テーブルが定義した形式に従って』とは ↓ の 2 つの条件を満たしている事を言います。

  • テーブルが定義した以外のデータは格納することができない
  • テーブルが定義したデータを必ず格納しなければいけない

※厳密にいうと『必ず格納しなければいけない』は変更することができて、空白でも OK と設定すれば空白でも問題ないです。

これら 3 つのデータベース、テーブル、レコードが組み合わさってデータベースを作っているんですね。

これらを分かりやすくした図がコチラ ↓

database-gaiyo

コチラはそれぞれで色分けしていて、『乃木坂というデータベース』に、『メンバーというテーブル』を作って、『飛鳥と日奈子のレコード』を保管しています。

モデル

次にモデルの解説へ入ります。

モデルとは?

モデルとはテーブルの内容を Django 側で受け渡しできるものを指します。

つまりデータベース内のテーブルを定義する役割がモデルという訳です。先ほどの図を使うと、『名前』『年齢』『生年月日』を定義する場所がモデルとなります。

モデルのインスタンスはレコードと対応

テーブルをモデルで定義するなら、レコードもどこかと対応してそうですね!

実はレコードはモデルのインスタンスと対応しているのです。

データベースとモデルを使って何をしていくのか

この記事では紹介しませんが、この 2 つを使ってデータベースとやり取りしていきます。

データベースからレコードのデータを取り出す際に、またこの話が重要となってくるのでよく理解しておく必要がありますね~。

もっと自分で『Django を学んでいきたい!』という方は僕も使っている ↓ コチラの本がオススメです。

Python Django 超入門




最後まで読んで頂きありがとうございました。

気づいたこと、記事の感想、この文章おかしい…などなどございましたら、お問い合わせページにてお問い合わせください。

ついでに Twitter(@heacet43)フォローとかこのサイト(https://heacet.com)をお気に入りにしてくれると嬉しいなぁ…笑

©Hirochi 2021 All Rights Reserved