0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

大吾「データベースとER図ってなんじゃ!」

0
Last updated at Posted at 2023-05-12

データベースとは?

  • 大悟
    ノブ、データベースって何?

  • ノブ
    大悟、データベースってのはさ、データを管理・蓄積する仕組みのことやで。アプリやサイトで使うデータを効率的に扱えるようにするんや。

ER図とは?

  • 大悟
    で、ER図ってなんなん?
  • ノブ
    ER図は、Entity Relationship Diagramの略で、データベースの構造を視覚的に表す図のことや。これを使ってデータ同士の関係性を整理してデータベース設計を行うんや。

データベース設計のポイント

データベース設計における重要なポイント

  • 大悟
    ノブ、データベース設計って何が大事なん?

  • ノブ
    大悟、いい質問やな。データベース設計で大事なのは、正規化やリレーションの設定、適切なデータ型の選択やインデックスの設定などやで。

  • 大悟
    正規化ってなんや?

  • ノブ
    正規化っていうのは、データベースの構造を効率的にするために、テーブルのデータを分割して、重複をなくすことや。

  • 大悟
    リレーションって?

  • ノブ
    リレーションは、テーブル同士の関係性を表すんや。例えば、ユーザーが商品を出品するアプリだったら、ユーザーテーブルと商品テーブルが関連付けられるようにリレーションを設定するわけや。

  • 大悟
    で、データ型って?

  • ノブ
    データ型は、データベースに保存するデータの種類を表すんや。例えば、整数型や文字列型、日付型とか。これを適切に選択することで、データを効率的に管理できるんや。

  • 大悟
    インデックスって何?

  • ノブ
    インデックスは、データベースの検索速度を向上させるための仕組みや。データの並び順を記録しておくことで、検索が早くなるんや。ただ、インデックスを設定すると、データの追加や更新が遅くなる場合もあるから、適切な設定が大事やで。

実践例:フリーマーケットアプリのデータベース設計

フリーマーケットアプリのデータベース設計を題材にした実践例を紹介

  • 大悟
    ノブ、じゃあ実際にフリーマーケットアプリのデータベース設計をしてみたいんやけど、どうすればいい?

  • ノブ
    いいんちゃう?フリーマーケットアプリのデータベース設計は、ユーザー管理機能や商品出品機能、商品購入機能などのテーブルが必要になるから、それぞれのテーブルの設計を考えてみようや。

  • 大悟
    ユーザーテーブルには、ユーザーIDとか名前とかメールアドレスとかが必要やろ?

  • ノブ
    そうや!他にもパスワードや住所などの情報も必要になるで。

  • 大悟
    商品テーブルには、商品名や説明、値段とかが必要やな?

  • ノブ
    ああ、それに加えて出品者IDやカテゴリーID、商品の状態や配送方法なども必要やで。

  • 大悟
    購入履歴テーブルはどんな感じにすればいいん?

  • ノブ
    購入履歴テーブルは、購入者ID、出品者ID、商品IDなどの情報を持っておくといいで。これで、誰がどの商品を購入したかが分かるようになるんや。

  • 大悟
    ノブ、具体的な例で教えて!

  • ノブ
    仕方ないのお、例えばフリーマーケットアプリのデータベース設計やったら、ユーザー、商品、購入履歴などのテーブルが必要になるわな。それぞれのテーブル間のリレーションをER図で表現して、データベース設計を行うんじゃ

  • 大悟
    じゃあ、ER図を書く流れを教えてくれ!

  • ノブ
    おっけー。まず、全てのテーブルとそのカラムをリストアップするんや。それから、テーブル同士の関係を線で繋いでいくで。

  • 大悟
    関係って何?

  • ノブ
    関係ってのは、一つのテーブルのデータが他のテーブルのデータとどんな関係があるのかってことや。例えば、ユーザーと商品の関係は「1対多」やな。1人のユーザーが複数の商品を出品できるから。

  • 大悟
    ユーザーテーブルは、ユーザーID、名前、メールアドレス、パスワード、住所とかが必要やな。

  • ノブ
    せや。それに加えて、商品テーブルには、商品ID、商品名、説明、値段、出品者ID、カテゴリーID、商品の状態、配送方法とかが必要や。

  • 大悟
    じゃあ、購入履歴テーブルは、購入者ID、出品者ID、商品IDなどの情報を持っておくんやな?

  • ノブ
    ああ、そうや。これで誰がどの商品を購入したかが分かるようになるで。

[User]                [Product]                  [Purchase]
+ user_id [PK] <-----+ seller_id [FK]         + buyer_id [FK]
+ name                + product_id [PK] ------>+ product_id [FK]
+ email               + product_name           + seller_id [FK]
+ password            + description
+ address             + price
                      + category_id
                      + condition
                      + shipping_method

markdown形式("databese.yml"に記述するもの)


## ER図

### User

| Column    | Type    |
| --------- | ------- |
| user_id   | integer |
| name      | string  |
| email     | string  |
| password  | string  |
| address   | string  |

### Product

| Column          | Type    |
| --------------- | ------- |
| product_id      | integer |
| product_name    | string  |
| description     | text    |
| price           | integer |
| seller_id       | integer |
| category_id     | integer |
| condition       | string  |
| shipping_method | string  |

### Purchase

| Column     | Type    |
| ---------- | ------- |
| buyer_id   | integer |
| product_id | integer |
| seller_id  | integer |

実際の見え方(READE.MEにはこう映る)

User

Column Type
user_id integer
name string
email string
password string
address string

Product

Column Type
product_id integer
product_name string
description text
price integer
seller_id integer
category_id integer
condition string
shipping_method string

Purchase

Column Type
buyer_id integer
product_id integer
seller_id integer
  • ノブ
    このようにmarkdown形式だと、表形式で表せることができるんやで!ただテーブル間の関係性を表現する線はMarkdown形式では直接書くことはできんのじゃ。せやから、テーブル間の関係性については文章で説明することが望ましい。

まとめ

  • ノブ
    「データベース設計で大事なポイントは、正規化やリレーションの設定、適切なデータ型の選択、インデックスの設定などがあるど。これらを理解し、効率的なデータベース設計ができるようになると、アプリやサイトの開発がスムーズに進むじゃろ」
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?