Redmineデータベースのチケット周辺をER図にしました

Redmineデータベースのチケット周辺をER図にしました - アイキャッチ画像

Redmineのデータを直接SQLで操作したいと思ったことはありませんか?
しかし、データベースの論理構造を理解していないと、どのテーブルをどう結合すればいいのか分からず、思うようにデータを抽出できません。

そこで今回、Redmineのチケット管理に関わるテーブルに絞ったER図を作成しました。ER図は、データベースの論理構造を可視化するもので、各テーブルの役割やリレーションがひと目で分かるようになります。

この論理構造を把握しておくことで、SQLの記述がスムーズになり、必要なデータを適切に取り出せるようになります。ワークフローやWiki関連のテーブルは割愛し、チケット管理に関わる部分にフォーカスしています。

EIICHI

作図には「A5:SQL Mk-2」を使用しています。

チケットに関係する部分のER図

ER図を次に示します。プロジェクト情報を格納する「projects」、ユーザーの「users」、チケットの「isses」に薄黄色の背景色をつけました。

ER図の解説

チケットの基本的な情報は、すべて「issues」テーブルに保存されます。
これは、チケットのタイトルや説明、作成日、担当者などの標準フィールドを持つ、Redmineの中心的なテーブルです。

一方で、カスタムフィールドについては、データが別のテーブルに分かれています。
カスタムフィールドの設定(どんな項目があるか)は「custom_fields」に、そして実際に入力されたカスタムフィールドの値は「custom_values」に保存されます。

また、チケットには「どのプロジェクトに属するか」「どのカテゴリか」「どのバージョンか」「現在のステータスは?」といった情報がありますよね。
これらは、「issues」の中にID(一意の識別子)として保存されていて、それぞれの詳細情報は別のマスター(テーブル)に記録されています。
例えば、

  • プロジェクト情報 → 「projects」
  • カテゴリ情報 → 「issue_categories」
  • バージョン情報 → 「versions」
  • ステータス情報 → 「issue_statuses」

IDのフィールドと、そのマスターの一覧は次の通りです。

テーブル名フィールド名マスター(テーブル)
issuestracker_idtrackers
project_idprojects
category_idissue_categories
status_idissue_statuses
assigned_to_idusers
priority_idenumerations
fixed_version_idversions
author_idusers
parent_id(issues)
root_id(issues)
custom_valuescustomized_id(issues)
custom_field_idcustom_fields

まとめ

このように、Redmineのデータは「チケットの基本情報」と「各種マスター情報」に分かれており、IDをキーにして結びついています。
この仕組みを理解すると、SQLを使ってデータを取得しやすくなりますよ!

最後までご覧いただきありがとうございます。
では、また。

  • URLをコピーしました!
Subscribe
Notify of


This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments