超簡易版から機能を盛り込んでいったものまで、複数種類を記載しています。
超簡易版
ユーザー毎に記事を書くだけの超簡易版ブログです。
言語習得やフレームワークの学習のためのチュートリアルとして用いられたりします。
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 | 備考 |
|---|---|---|---|---|
| id | ID | int | primary | |
| メールアドレス | varchar(255) | unique | ||
| name | 名前 | varchar(255) | ||
| password | ハッシュ化パスワード | varchar(255) |
articles: 記事
ブログ記事。記事の削除は物理削除。下書き機能もありません。
| 物理名 | 論理名 | 型 | Null | 備考 |
|---|---|---|---|---|
| id | ID | int | primary | |
| user_id | ユーザーID | int | ||
| title | 記事タイトル | varchar(255) | YES | |
| content | 記事本文 | text | YES | |
| 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 | 備考 |
|---|---|---|---|---|
| id | ID | int | primary | |
| メールアドレス | varchar(255) | unique | ||
| name | 名前 | varchar(255) | ||
| password | ハッシュ化パスワード | varchar(255) |
articles: 記事
published_atがnullの場合は下書き状態です。現在以前という解釈にすれば、公開予約として機能を持たせることが出来ます。
| 物理名 | 論理名 | 型 | Null | 備考 |
|---|---|---|---|---|
| id | ID | int | primary | |
| user_id | ユーザーID | int | ||
| title | 記事タイトル | varchar(255) | YES | |
| content | 記事本文 | text | YES | |
| published_at | 公開日時 | datetime | YES | |
| 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 | 備考 |
|---|---|---|---|---|
| id | ID | int | primary | |
| メールアドレス | varchar(255) | unique | ||
| name | 名前 | varchar(255) | ||
| password | ハッシュ化パスワード | varchar(255) |
articles: 記事
| 物理名 | 論理名 | 型 | Null | 備考 |
|---|---|---|---|---|
| id | ID | int | primary | |
| user_id | ユーザーID | int | ||
| title | 記事タイトル | varchar(255) | YES | |
| content | 記事本文 | text | YES | |
| published_at | 公開日時 | datetime | YES | |
| created_at | 作成日時 | datetime | ||
| updated_at | 更新日時 | datetime |
articles_categories: 記事-カテゴリ
多対多の中間テーブル。複合PK。
| 物理名 | 論理名 | 型 | Null | 備考 |
|---|---|---|---|---|
| article_id | 記事ID | int | primary | |
| category_id | カテゴリID | int | primary |
categories: カテゴリ
| 物理名 | 論理名 | 型 | Null | 備考 |
|---|---|---|---|---|
| id | ID | int | primary | |
| name | カテゴリ名 | varchar |

コメント