「ブログ」のDB設計

データベース設計 設計例

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

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

超簡易版

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

ER図

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図

Syntax error in textmermaid version 11.6.0

テーブル

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図

Syntax error in textmermaid version 11.6.0

テーブル

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

コメント

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