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 实际的值

Redmine数据表字段说明的更多相关文章

  1. tp数据表字段缓存

    在维护一个tp写的项目,因为需要在产品表product中增加了一个字段status,但是不论如何就是无法给status赋值,查了资料才发现,原来是tp的数据表字段缓存在搞鬼. 在runtime> ...

  2. tp5.0 SHOW COLUMNS FROM 生成数据表字段缓存

    TP5.0 生成数据表字段缓存 =控制台执行以下命令= 1.生成指定数据库的所有表字段缓存 php think optimize:schema --db databaseName 2.生成指定数据表的 ...

  3. Mysql数据表字段设置了默认值,插入数据后默认字段的值却为null,不是默认值

    我将mysql的数据表的某个字段设置了默认值为1,当向该表插入数据的时候该字段的值不是默认值,而是null. 我的错误原因: 对数据库的操作我使用了持久化工具mybatis,插入数据的时候插入的是整个 ...

  4. 132_Power BI之建模必备要素&Power Query之数据表字段名称管理

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 近段时间比较忙,也没有看到很好的DAX素材,很久没有更新文章了,刚好有时间就来凑个热闹. 今天主题是Power ...

  5. laravel 同数据表字段比较查询和状态不正规排序

    今天写群组推荐接口,要求未满的群 ( 群最大人数字段maxusers, 群人数字段affiliations_count 都在群组表中),官方,热门(普通群0 ,官方1,热门2 ) 排序的群 同表字段比 ...

  6. phome_enewsclass 数据表字段解释(栏目主表)

    字段名 类型 解释 附加说明 classid smallint(6) 栏目ID   bclassid smallint(6) 父栏目ID   classname varchar(50) 栏目名称   ...

  7. 读取MySQL数据表字段信息

    TP5句式 $fieldinfo = Db::query('SHOW FULL COLUMNS FROM '.$table);//查出数据表所有字段信息Field 字段Comment 字段注释

  8. Mysql数据表字段扩充的小技巧

    在开发中,往往需求变更比开发速度要快,就会存在一些问题,比如突然要增加一个字段,我们需要 alter table 表名 add [column] 字段名 数据类型 [列属性] [位置]; 然后修改实体 ...

  9. phome_ecms_news 数据表字段解释(新闻系统模型-主表)

    http://www.phome.net/doc/manual/extend/html/dbdoc/index.html 字段名 类型 解释 附加说明 id int(11) 信息ID   classi ...

随机推荐

  1. SQLSERVER 升级版本的方法

    1. 以SQLSERVER2014为例说明 SQLSERVER升级版本的方法, 也适用于evaluation 版本超过180天之后的处理. 2. 打开所有的应用 看到有一个 sqlserver2008 ...

  2. 微信小程序 功能函数picker-view的弹出模态

    <view class="list"> <form bindsubmit="formSubmit"> <view class=&q ...

  3. SpringBoot(五)_表单验证

    SpringBoot(五)_表单验证 参数校验在我们日常开发中非常常见,最基本的校验有判断属性是否为空.长度是否符合要求等,在传统的开发模式中需要写一堆的 if else 来处理这些逻辑,很繁琐,效率 ...

  4. Windows安装ElastAlert问题总结

    1.运行时出现UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xb4 in position 0: invalid start byte 或  ...

  5. springboot学习笔记-2 一些常用的配置以及整合mybatis

    一.一些常用的配置 1.1 使用没有父POM的springboot 通过添加scope=import的依赖,仍然能获取到依赖管理的好处: <dependencyManagement> &l ...

  6. matlab dist函数

    dist——欧式距离加权函数(Euclidean distance weight function) 语法: Z = dist(W,P)    df = dist('deriv')    D = di ...

  7. 03.基于IDEA+Spring+Maven搭建测试项目--常用dependency

    <!--常用的依赖配置--> <!--未展示完整的pom.xml文件内容--> <properties> <java.version>1.8</j ...

  8. Divisibility by 25 CodeForces - 988E(模拟)

    遇见模拟题 有两种做法 例如这题: 1.直接去算次数(统计哪个数在第几位,然后去运算) 2.模拟操作 贴一个别人的代码...https://blog.csdn.net/weixin_39453270/ ...

  9. PHP中文字符gbk编码与UTF-8编码的转换

    通常PHP中上传文件,如果文件名称有中文字符,上传之后的名称是无法写入到本地的,因为上传来的编码格式一般是UTF-8的格式,这种格式是无法给文件命名并且存储到操作系统磁盘.在写入之前需要将其转换为gb ...

  10. 洛谷 P2048 [NOI2010]超级钢琴 解题报告

    P2048 [NOI2010]超级钢琴 题目描述 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐. 这架超级钢琴可以弹奏出n个音符,编号为 ...