RedmineのER図
RedmineのER図を作る方法が公開されていたのでメモ。
【元ネタ】
redmineのER図を生成してみた | ぷろぐらま
Railsのテーブル名や主キーは、CoCで厳格なルールがあるおかげで可読性も高い。
だから、Redmineもこれだけの頻繁なVerUp、豊富な機能改善が可能だったのだろうと思う。
Railsの最大の特徴である「サロゲートキーの重視」については、渡辺さんが下記の記事を書かれている。
複合キーをなくしサロゲートキーに統一する手法では、ER図に親子関係が発生せず、全ては外部キーによる参照関係になる。
多分、普通のRails開発では、テーブル間のリレーションシップはアプリケーション層で実装するだろう。
つまり、DBMSでリレーションを貼ることはしないので、テーブルは入れ物にすぎない。
DOAの立場の人がサロゲートキーに違和感がある理由は、親子関係という基本的なリレーションシップがなくななるため、データモデルの表現力が落ちてしまうからだ。
だが、Railsがサロゲートキー一辺倒にした理由の一つは、HTTPのURIをRESTで書けるようにしたいから。
URLがDBのCRUDに対応するように書ける。
Railsの思想から言えば、サロゲートキーは単なるデータモデルだけでなく、HTTPアクセスのURLはCRUDであるべきというREST思想にも基づく観点があるからこそ、サロゲートキーだけのデータモデルでもWebシステムで特に有効なのだと思っている。
だから「サロゲートキーは必要なのか、不要なのか」という議論は不要で、個人的には、分析(概念)モデルと実装モデルの違いに過ぎないと思っている。
例えば、OOAでも概念モデルでは、注文と注文明細を区別せず、一つのオブジェクトで表現して、荒い粒度でモデルのあるべき姿を描き、実装モデルはソースに近いレベルの粒度故に、たくさんのオブジェクトが表現される。
つまり、DOAでも、分析者が見るレベルのモデルと、開発者が実際に使うレベルのモデルで区別してもいいはず。
そもそも、ユーザ(顧客)観点のモデルと開発者の観点のモデルは粒度が大きく異なるのは、外部設計・内部設計、基本設計・詳細設計というWF型開発の工程による区別からしても、自然な考え方だ。
でも、DOAの前提では、モデルは唯一つであり、分析者も開発者も同じER図を見るから、ロールによるモデルの区別は存在しない。
だから、そのような不毛な議論が発生するのだろうと思う。
とはいえ、Railsの普及によって、DOAの重要性は以前よりも増していると考えている。
何故ならば、きちんとテーブル設計さえできれば、Railsのマイグレーション機能によって一発でCRUD画面を作れてしまうからだ。
Redmineがこれだけ豊富なプラグインを持つ理由の一つは、Redmineのデータモデルがシンプルであるだけでなく、テーブル設計が非常に優れているため、機能拡張しやすいのだろうと推測している。
色々考える。
| 固定リンク
「モデリング」カテゴリの記事
- データモデリングの手法をあなたは持ってますか? at 関西IT勉強宴会(2026.02.11)
- 製造業のDXを推進する部門をITコーポレート部門に割り当てるとなぜ失敗するのか(2026.02.04)
- プ譜でプロジェクトの目的を管理する(2026.01.31)
- astahでPJ管理もプロセス設計もアイデア発想も全て表現したい(2025.10.25)
- データモデリングとドメイン駆動設計の違いは何か(2025.08.24)
「Redmine」カテゴリの記事
- Redmine AI HelperプラグインはRedmineをAI駆動プロジェクト管理に変える可能性を秘めている #Redmine(2025.12.31)
- 第29回東京Redmine勉強会の感想~今話題のテーマはJTC運用とAIによるプロマネ作業支援 #redminet(2025.11.09)
- 第22回 Redmine大阪の感想 #RedmineOsaka(2025.09.21)
- RedmineJapan vol.4の感想part1~Redmine AI HeplerプラグインはRedmineのナレッジ活用を強化してくれる #RedmineJapan(2025.07.31)
- Jiraの機能はTracに似ている気がする #redmine(2025.06.01)


コメント