Redmine數據表結構
issues
tracker_id 跟蹤標簽的id,外鍵到trakers表
project_id 外鍵到項目project
subject 主題
description 問題描述
due_data 期望完成時間
category_id 類別,外鍵到issue_categories表
status_id 狀態,外鍵到issue_statuses表
assigned_to_id 指派給的用戶id,外鍵到user表
priority_id 優先級,沒找到這個表
fixed_version_id 周版本的id,外鍵到version表
author_id 作者的id,外鍵到user表
created_on 創建時間,有時候不用這個創建時間而是用journals的創建時間是為了獲取修改時間
updated_on 更新時間
start_date 問題開始日期
estimated_hours 預計工時
parent_id 父任務id,外鍵到另一個issue
root_id 任務關系樹根節點的id
創建腳本:
CREATE TABLE `issues` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`tracker_id` int(11) NOT NULL DEFAULT '0',
`project_id` int(11) NOT NULL DEFAULT '0',
`subject` varchar(255) NOT NULL DEFAULT '',
`description` text,
`due_date` date DEFAULT NULL,
`category_id` int(11) DEFAULT NULL,
`status_id` int(11) NOT NULL DEFAULT '0',
`assigned_to_id` int(11) DEFAULT NULL,
`priority_id` int(11) NOT NULL DEFAULT '0',
`fixed_version_id` int(11) DEFAULT NULL,
`author_id` int(11) NOT NULL DEFAULT '0',
`lock_version` int(11) NOT NULL DEFAULT '0',
`created_on` datetime DEFAULT NULL,
`updated_on` datetime DEFAULT NULL,
`start_date` date DEFAULT NULL,
`done_ratio` int(11) NOT NULL DEFAULT '0',
`estimated_hours` float DEFAULT NULL,
`parent_id` int(11) DEFAULT NULL,
`root_id` int(11) DEFAULT NULL,
`lft` int(11) DEFAULT NULL,
`rgt` int(11) DEFAULT NULL,
`is_private` tinyint(1) NOT NULL DEFAULT '0',
`closed_on` datetime DEFAULT NULL,
`deleted` tinyint(1) DEFAULT '0',
`acp_id` int(11) DEFAULT NULL,
`cache_timestamp` int(11) DEFAULT '0',
`is_kanban_node` tinyint(1) DEFAULT '0',
`standard_status` int(11) DEFAULT '1',
`qa_kanban_status` int(11) DEFAULT NULL,
`last_status_change_type` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `index_issues_on_acp_id` (`acp_id`),
KEY `issues_project_id` (`project_id`),
KEY `index_issues_on_status_id` (`status_id`),
KEY `index_issues_on_category_id` (`category_id`),
KEY `index_issues_on_assigned_to_id` (`assigned_to_id`),
KEY `index_issues_on_fixed_version_id` (`fixed_version_id`),
KEY `index_issues_on_tracker_id` (`tracker_id`),
KEY `index_issues_on_priority_id` (`priority_id`),
KEY `index_issues_on_author_id` (`author_id`),
KEY `index_issues_on_created_on` (`created_on`),
KEY `index_issues_on_root_id_and_lft_and_rgt` (`root_id`,`lft`,`rgt`),
KEY `index_issues_is_kanban_node` (`is_kanban_node`)
) ENGINE=InnoDB AUTO_INCREMENT=48760 DEFAULT CHARSET=utf8
journals
每一次更新issue都會生成一條journal和對應的journal_detail
journalized_id 對應的issue_id,但不是外鍵
journalized_type 把所有數據取出來去重后,發現這個字段只有一個值,Issue
user_id User的外鍵
created_on 生成journal的時間
創建腳本:
CREATE TABLE `journals` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`journalized_id` int(11) NOT NULL DEFAULT '0',
`journalized_type` varchar(30) NOT NULL DEFAULT '',
`user_id` int(11) NOT NULL DEFAULT '0',
`notes` text,
`created_on` datetime NOT NULL,
`private_notes` tinyint(1) NOT NULL DEFAULT '0',
`is_auto_flow` tinyint(1) DEFAULT '0',
PRIMARY KEY (`id`),
KEY `journals_journalized_id` (`journalized_id`,`journalized_type`),
KEY `index_journals_on_user_id` (`user_id`),
KEY `index_journals_on_journalized_id` (`journalized_id`),
KEY `index_journals_on_created_on` (`created_on`)
) ENGINE=InnoDB AUTO_INCREMENT=204197 DEFAULT CHARSET=utf8
journal_details
journal_id 外鍵到journal
prop_key 對issue改動了什么屬性,比如"status_id"
property 改動的屬性名
old_value 屬性舊值
value 屬性新值
issue_statuses
name 新建、完成、關閉等
is_closed 只有完成這里是1
is_default 一般id為1的是默認狀態
position 列表位置,一般跟id一致
projects
不同用戶會有不同的project權限
name 中文名
description 描述,可為空
is_public 一般為1
parent_id 父項目的id
created_on 創建時間
updated_on 更新時間
identifier 項目的英文標識
status 都是1, 暫不清楚其他值的含義
lft、rgt
nested set is the way Redmine stores trees in SQL.
相當於此節點的左右范圍,並不是左右節點
parent.lft<child.lft and child.rgt>parent.rgt
如何遍歷這種樹:Modified Preorder Tree Traversal
trackers
不同project里有不同的跟蹤標簽,以project_trackers表關聯
name 中文名
position 列表位置
custom_fields
比如“跟進者”就是一個自定義字段,實際的值是存在custom_values表中的
type 修飾對象的類型,如果是Project的自定義對象,值為ProjectCustomField;如果是Issue的,值為IssueCustomField
name 中文名
field_format 該字段的格式,可以是list、bool、date、issue_status、user等值,比如跟進者的字段格式就是user
possible_value 可能的值,一般list、bool格式的這個字段會有值,其他多為空值
is_required 是否必填
is_for_all 有一些自定義字段不是對所有人都開放的
searchable 一般list格式的這個字段會是1
default_value 默認值
editable 是否可修改
custom_values
相當於issue或project與custom_fields的關聯表
customized_type 可以是Project或Issue
customized_id 修飾對象的id,如果是Issue,那就是issue的id
custom_field_id 外鍵到custom_field
value 實際的值