redmine两个mysql_redmine 自定义字段mysql表结构

redmine可以创建自定义字段,我经常用它来满足不同的管理需求,现在来解读一下,看看这些自定义字段是如何存在mysql表中的。

表issues

用来存放issue的标准字段。

mysql> describe issues;

+----------------------+--------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+----------------------+--------------+------+-----+---------+----------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| tracker_id | int(11) | NO | MUL | NULL | |

| project_id | int(11) | NO | MUL | NULL | |

| subject | varchar(255) | NO | | | |

| description | text | YES | | NULL | |

| due_date | date | YES | | NULL | |

| category_id | int(11) | YES | MUL | NULL | |

| status_id | int(11) | NO | MUL | NULL | |

| assigned_to_id | int(11) | YES | MUL | NULL | |

| priority_id | int(11) | NO | MUL | NULL | |

| fixed_version_id | int(11) | YES | MUL | NULL | |

| author_id | int(11) | NO | MUL | NULL | |

| lock_version | int(11) | NO | | 0 | |

| created_on | datetime | YES | MUL | NULL | |

| updated_on | datetime | YES | | NULL | |

| start_date | date | YES | | NULL | |

| done_ratio | int(11) | NO | | 0 | |

| estimated_hours | float | YES | | NULL | |

| parent_id | int(11) | YES | | NULL | |

| root_id | int(11) | YES | MUL | NULL | |

| lft | int(11) | YES | | NULL | |

| rgt | int(11) | YES | | NULL | |

| is_private | tinyint(1) | NO | | 0 | |

| closed_on | datetime | YES | | NULL | |

| position | int(11) | NO | MUL | NULL | |

| remaining_hours | float | YES | | NULL | |

| release_id | int(11) | YES | MUL | NULL | |

| story_points | float | YES | | NULL | |

| release_relationship | varchar(255) | NO | MUL | auto | |

+----------------------+--------------+------+-----+---------+----------------+

表custom_fields

该表字段都和创建自定义字段的web页面看到的选择项很像。

mysql> describe custom_fields;

+-----------------+--------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-----------------+--------------+------+-----+---------+----------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| type | varchar(30) | NO | | | |

| name | varchar(30) | NO | | | |

| field_format | varchar(30) | NO | | | |

| possible_values | text | YES | | NULL | |

| regexp | varchar(255) | YES | | | |

| min_length | int(11) | YES | | NULL | |

| max_length | int(11) | YES | | NULL | |

| is_required | tinyint(1) | NO | | 0 | |

| is_for_all | tinyint(1) | NO | | 0 | |

| is_filter | tinyint(1) | NO | | 0 | |

| position | int(11) | YES | | 1 | |

| searchable | tinyint(1) | YES | | 0 | |

| default_value | text | YES | | NULL | |

| editable | tinyint(1) | YES | | 1 | |

| visible | tinyint(1) | NO | | 1 | |

| multiple | tinyint(1) | YES | | 0 | |

| format_store | text | YES | | NULL | |

| description | text | YES | | NULL | |

+-----------------+--------------+------+-----+---------+----------------+

表custom_values

mysql> describe custom_values;

+-----------------+-------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-----------------+-------------+------+-----+---------+----------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| customized_type | varchar(30) | NO | MUL | | |

| customized_id | int(11) | NO | | 0 | |

| custom_field_id | int(11) | NO | MUL | 0 | |

| value | text | YES | | NULL | |

+-----------------+-------------+------+-----+---------+----------------+

该表可以用custom_field_id字段和custom_fields表的id关联。

而customized_id 可以和issues表的id相关联

因此三个表issues, custom_fields和custom_values在一起表达了这么个关系。

一个issue的标准字段来自issues表,扩展字段来自custom_fields表,而custom_values和前custom_fields表关联,一起表示一个issue的某个自定义字段的值。

并且,当表示issue的自定义字段时,custom_fields.type的值是 ‘IssueCustomField‘ 而custom_values.customized_type的值是‘Issue‘.

所有issue的自定义字段值

因此可以先将custom_fields表和custom_values表关联,获得如下结果:

mysql> select customized_id as issue_id,custom_field_id,type,name,default_value,value from custom_fields a inner join custom_values b on a.id = b.custom_field_id limit 10;

+----------+-----------------+------------------+--------------+---------------+-----------------------------+

| issue_id | custom_field_id | type | name | default_value | value |

+----------+-----------------+------------------+--------------+---------------+-----------------------------+

| 2 | 1 | IssueCustomField | 关闭原因 | ... | ... |

| 121 | 1 | IssueCustomField | 关闭原因 | ... | 移动逆袭完成 |

| 122 | 1 | IssueCustomField | 关闭原因 | ... | 暂时不做 |

| 123 | 1 | IssueCustomField | 关闭原因 | ... | 人员离职 |

| 124 | 1 | IssueCustomField | 关闭原因 | ... | 人员离职 |

| 125 | 1 | IssueCustomField | 关闭原因 | ... | 人员离职,论坛改版 |

| 126 | 1 | IssueCustomField | 关闭原因 | ... | 重新规划 |

| 127 | 1 | IssueCustomField | 关闭原因 | ... | 暂时不涉及 |

| 128 | 1 | IssueCustomField | 关闭原因 | ... | 暂时不涉及 |

| 129 | 1 | IssueCustomField | 关闭原因 | ... | 暂时不涉及 |

+----------+-----------------+------------------+--------------+---------------+-----------------------------+

通常这个表都会很大,我的系统里面有22个自定义字段,同时有500多个issue,每个issue最多会有22个行表示其自定义字段的值。因此所有issue的自定义字段的值的累计行数超过1万行。

由此可以看出redmine的设计是用记录行数来表示扩展字段的值,所以可以不受mysql表字段的限制。

原文:http://blog.csdn.net/csfreebird/article/details/41950719

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Redmine是一个开源的项目管理工具,它使用数据库来存储用户及其相关信息。Redmine的用户(users table)结构包含以下字段: 1. id:用户的唯一标识符,通常是一个自增的整数。 2. login:用户的登录名,用于身份验证和登录系统。 3. hashed_password:存储用户的密码,经过哈希算法加密后的值。 4. firstname:用户的名字。 5. lastname:用户的姓氏。 6. mail:用户的电子邮件地址,用于接收系统通知和进行与其他用户的沟通。 7. mail_notification:用于设置是否向用户发送电子邮件通知的标志。 8. admin:标识用户是否具有管理员权限的布尔值。 9. status:用户的状态,包括激活、锁定等。 10. last_login_on:用户上次登录系统的时间戳。 11. created_on:用户创建的时间戳。 12. updated_on:记录用户信息修改的时间戳。 除了这些基本字段外,Redmine的用户还可以根据需要扩展,以适应特定的业务需求。例如,可以添加额外的自定义字段来存储用户的职位、部门、电话号码等信息。此外,Redmine还支持用户之间的关联关系,如上级用户、部门经理等,这些关系可以通过在用户中添加外键来实现。 综上所述,Redmine的用户结构包含了基本的用户信息字段,以及一些可扩展和定制化的字段,可以根据实际情况进行调整和改进。 ### 回答2: Redmine是一款开源的项目管理软件,用户(users)是其中的一个重要的数据库之一。用户用于存储所有注册的用户信息,包括用户的登录名、密码、姓名、电子邮箱等。 在Redmine的用户结构中,常见的字段包括: 1. id: 用户的唯一标识符,通常是自增长的整数。 2. login: 用户的登录名,用于用户的身份验证。 3. hashed_password: 用户的密码的哈希值,用于用户登录验证。 4. firstname: 用户的名字。 5. lastname: 用户的姓氏。 6. mail: 用户的电子邮箱地址,用于接收系统通知和邮件。 7. admin: 一个布尔值,示用户是否是管理员,用于权限控制。 8. status: 用户的状态,可能的取值包括"1"示激活状态和"0"示禁用状态。 9. last_login_on: 用户上次登录的时间,用于用户登录统计和在线状态的判断。 10. created_on: 用户的注册时间,用于用户的创建日期记录。 此外,根据实际需求,用户还可以添加其他自定义字段来满足特定的业务需求,比如电话号码、职位、所属部门等。 总之,Redmine的用户结构设计合理,支持基本的用户信息存储和管理。用户中的字段可根据具体需求进行扩展和调整,以满足项目管理中的不同用户角色和功能要求。通过对用户的管理,可以实现用户的注册、登录、权限控制和个人资料维护等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值