「ブログ」のDB設計

データベース設計 設計例

本記事はDB設計の提案を記載します。
この設計はあくまで一例です。
これを雛形として、ご自分の構築したいシステムに合わせてご利用ください。

超簡易版から機能を盛り込んでいったものまで、複数種類を記載しています。

超簡易版

ユーザー毎に記事を書くだけの超簡易版ブログです。
言語習得やフレームワークの学習のためのチュートリアルとして用いられたりします。

ER図

erDiagram users ||--o{ articles : x users { int id varchar email varchar name varchar password } articles { int id int user_id varchar title text content datetime created_at datetime updated_at }

テーブル

users: ユーザー

ユーザー情報。パスワードにそのまま値を入れるのは辞めましょう。セキュリティ的に危ないです。

物理名論理名Null備考
idIDintprimary
emailメールアドレスvarchar(255)unique
name名前varchar(255)
passwordハッシュ化パスワードvarchar(255)

articles: 記事

ブログ記事。記事の削除は物理削除。下書き機能もありません。

物理名論理名Null備考
idIDintprimary
user_idユーザーIDint
title記事タイトルvarchar(255)YES
content記事本文textYES
created_at作成日時datetime
updated_at更新日時datetime

下書き機能をつける

ER図

erDiagram users ||--o{ articles : x users { int id varchar email varchar name varchar password } articles { int id int user_id varchar title text content datetime published_at datetime created_at datetime updated_at }

テーブル

users: ユーザー

物理名論理名Null備考
idIDintprimary
emailメールアドレスvarchar(255)unique
name名前varchar(255)
passwordハッシュ化パスワードvarchar(255)

articles: 記事

published_atがnullの場合は下書き状態です。現在以前という解釈にすれば、公開予約として機能を持たせることが出来ます。

物理名論理名Null備考
idIDintprimary
user_idユーザーIDint
title記事タイトルvarchar(255)YES
content記事本文textYES
published_at公開日時datetimeYES
created_at作成日時datetime
updated_at更新日時datetime

記事にカテゴリをつけられる

記事にカテゴリ(タグと読み替えてもOK)を複数付与できるようにします。

ER図

erDiagram users ||--o{ articles : "" articles ||--o{ articles_categories : "" categories ||--o{ articles_categories : "" users { int id varchar email varchar name varchar password } articles { int id int user_id varchar title text content datetime published_at datetime created_at datetime updated_at } categories { int id varchar name } articles_categories { int article_id int category_id }

テーブル

users: ユーザー

物理名論理名Null備考
idIDintprimary
emailメールアドレスvarchar(255)unique
name名前varchar(255)
passwordハッシュ化パスワードvarchar(255)

articles: 記事

物理名論理名Null備考
idIDintprimary
user_idユーザーIDint
title記事タイトルvarchar(255)YES
content記事本文textYES
published_at公開日時datetimeYES
created_at作成日時datetime
updated_at更新日時datetime

articles_categories: 記事-カテゴリ

多対多の中間テーブル。複合PK。

物理名論理名Null備考
article_id記事IDintprimary
category_idカテゴリIDintprimary

categories: カテゴリ

物理名論理名Null備考
idIDintprimary
nameカテゴリ名varchar

コメント