根據公司直屬領導指示,進行 資產管理系統平臺 的開發,整個項目由本人獨立完成,項目週期2個月左右,現已部署上線,可通過公司內網訪問。

因本人此前從事PHP開發,故選擇PHP做爲開發語言,開發框架選擇Symfony。如何部署Symfony項目,詳見本人 blog

說明:此項目爲2016年爲公司運維部門做的內部項目,使用Symfony 3開發。因是公司項目,故沒有單獨留存項目代碼。該項目上線後並未得到公司的重視,幾乎沒有使用。運行數據庫、項目代碼的服務器後被騰出給公司其它項目用。之後公司內部的Gitlab奔潰過一次,導致所有數據丟失,包括項目代碼,不得不說是一個遺憾。此次遷移只做勘誤(2018年04月16日)。

SQL Design

數據表設計

創建數據庫

1
2
3
4
5
6
7
8
9
drop database if exists arsenal;

-- 創建數據庫
create database if not exists arsenal
    default character set=utf8
    default collate=utf8_general_ci;

-- 進入數據庫
use arsenal;

創建數據表

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
-- 存儲用戶session信息
-- http://symfony.com/doc/current/doctrine/pdo_session_storage.html#preparing-the-database-to-store-sessions
create table if not exists sessions (
    sess_id varbinary(128) not null primary key comment 'session id',
    sess_data blob not null comment 'session data (dynamic clomumn)json 格式',
    sess_time int unsigned not null comment 'session create or update time (timestamp)',
    sess_lifetime mediumint unsigned not null comment 'session life time,單位s,默認1440s即24小時'
) engine=innodb default charset=utf8 collate=utf8_bin comment '存儲用戶session信息';

-- 系統模塊表
create table if not exists sys_module (
    id smallint unsigned not null auto_increment primary key comment '系統模塊表自增id',
    name char(60) not null comment '模塊名稱',
    icon varchar(30) default null comment 'Font Awesome Icons圖標名稱,如fa-archive',
    route_name varchar(60) default null comment '該模塊的route名稱',
    action_name varchar(60) default null comment '該模塊的action名稱',
    level enum('top','second','third','fourth','fifth','sixth','seventh','eighth') not null default 'top' comment '模塊等級,默認為top(一級)模塊,即模組,後一級為前一級的子模塊',
    parent_module smallint unsigned default 0 comment '模塊所屬的上一級模塊,對應表sys_module,默認為0表示一級模塊,即模組,不設置外鍵約束',
    is_show enum('yes','no') not null default 'yes' comment '是否顯示該模塊,默認yes顯示',
    remarks varchar(180) default null comment '該模塊備註信息',
    adder mediumint unsigned not null comment '該item的添加者,對應表sys_user中的id,不設置外鍵約束',
    create_time timestamp not null default current_timestamp comment 'item入庫時間,格式 YYYY-MM-DD HH:MM:SS',
    update_time timestamp null default null on update current_timestamp comment '數據更新時間,格式 YYYY-MM-DD HH:MM:SS',
    updater mediumint unsigned default null comment 'item更新者,對應表sys_user中id,不設置外鍵約束',
    unique key `module_nameLevel` (`level`,`name`) comment 'index-模塊名稱,使用唯一索引',
    key `module_partent_module` (`parent_module`) comment 'index-上一級模塊索引'
)engine=innodb default charset=utf8 collate=utf8_general_ci comment '系統模塊表';

-- 創建系統用戶角色表
create table if not exists sys_user_role (
    id smallint unsigned not null auto_increment primary key comment '用戶角色自增id',
    name char(60) not null comment '用戶角色名稱',
    is_allow enum('yes','no') not null default 'yes' comment '是否允許登入系統,默認為yes允許',
    sys_module_list text default null comment '用戶角色所屬的各模塊id,對應表sys_module中id,以json格式存儲',
    remarks varchar(180) default null comment '該模塊備註信息',
    create_time timestamp not null default current_timestamp comment 'item入庫時間,格式 YYYY-MM-DD HH:MM:SS',
    update_time timestamp null default null on update current_timestamp comment '數據更新時間,格式 YYYY-MM-DD HH:MM:SS',
    updater mediumint unsigned default null comment 'item更新者,對應表sys_user中id,不設置外鍵約束',
    unique key `sys_user_name` (`name`) comment 'index-用戶權限名稱,使用唯一索引'
)engine=innodb default charset=utf8 collate=utf8_general_ci comment '系統用戶角色表(用戶組)';

-- 創建系統用戶表
create table if not exists sys_user (
    id mediumint unsigned not null auto_increment primary key comment '系統用戶自增id',
    username char(40) not null comment '用戶登陸名稱',
    sys_user_role smallint unsigned not null comment '用戶角色,表sys_user_role中id為其外鍵',
    password varchar(48) not null comment '用戶登陸密碼,md5加密後長度32位,sha1加密後長度40位',
    initial_password varchar(48) not null comment '用戶初始密碼',
    email varchar(60) null comment '用戶郵箱地址',
    gender enum ('male','female','unknown') not null default 'unknown' comment '用戶性別,默認unknown',
    is_allow enum ('yes','no') not null default 'yes' comment '用戶是否允許登陸,默認允許',
    remarks varchar(300) not null comment '備註信息',
    employee mediumint unsigned default null comment '該帳號所屬的公司職員,對應表employee中id,默認為空,不設置外鍵約束',
    create_time timestamp not null default current_timestamp comment 'item入庫時間,格式 YYYY-MM-DD HH:MM:SS',
    update_time timestamp null default null on update current_timestamp comment '數據更新時間,格式 YYYY-MM-DD HH:MM:SS',
    updater mediumint unsigned default null comment 'item更新者,對應表sys_user中id,不設置外鍵約束',
    key `sys_user_employee` (`employee`) comment 'index-僱員名稱,使用普通索引',
    unique key `sys_user_username` (`username`) comment 'index-用戶名稱,使用唯一索引',
    constraint `fk_user_sys_userRole` foreign key (`sys_user_role`) references `sys_user_role` (`id`) on update cascade
)engine=innodb default charset=utf8 collate=utf8_general_ci comment '系統用戶表';

-- 系統用戶登陸記錄表
create table if not exists sys_user_login_log (
    id int unsigned not null auto_increment primary key comment '系統用戶登陸記錄自增id',
    sys_user mediumint unsigned not null comment '登陸用戶的id,表sys_user中id為其外鍵',
    login_time timestamp not null default current_timestamp comment '登入系統時間,格式 YYYY-MM-DD HH:MM:SS',
    logout_time timestamp null default null comment '登出系統時間,格式 YYYY-MM-DD HH:MM:SS,默認為NULL',
    login_details varchar(300) default null comment '用戶登陸信息,如瀏覽器信息等',
    create_time timestamp not null default current_timestamp comment 'item入庫時間,格式 YYYY-MM-DD HH:MM:SS',
    constraint `fk_sys_user_login_log_sysUser` foreign key (`sys_user`) references `sys_user` (`id`) on update cascade
)engine=innodb default charset=utf8 collate=utf8_general_ci comment '系統用戶登陸記錄表';

-- 創建子公司表
create table if not exists company (
    id smallint unsigned not null auto_increment primary key comment '公司自增id',
    parent_company smallint unsigned not null default 0 comment '上一級公司id,對應表company中id,默認為0代表總公司,不設置外鍵約束',
    is_exists enum('yes','no') not null default 'yes' comment '公司是否存在',
    name char(90) not null comment '公司名稱',
    short_name varchar(60) default null comment '公司簡稱',
    internal_name varchar(60) default null comment '公司內部命名,如xx事業部',
    type varchar(150) not null comment '公司類型',
    address_registed varchar(210) not null comment '公司註冊地址',
    address varchar(210) not null comment '公司目前地址',
    legal_representative varchar(60) not null comment '公司法定代表人',
    founding_date  date not null comment '公司成立時間,格式 YYYY-MM-DD',
    registration_institution varchar(150) not null comment '登記機關',
    business_license_number varchar(50) not null comment '營業執照證照編號(20位)',
    registration_no varchar(50) default null comment '營業執照註冊號(15位)',
    unified_social_credit_code varchar(50) null comment '統一社會信用代碼(18位)',
    business_term_begin date not null comment '營業期限起始時間,格式 YYYY-MM-DD',
    business_term_end date default null comment '營業期限截止時間,格式 YYYY-MM-DD',
    website varchar(180) default null comment '公司網站',
    create_time timestamp not null default current_timestamp comment 'item入庫時間,格式 YYYY-MM-DD HH:MM:SS',
    update_time timestamp null default null on update current_timestamp comment '數據更新時間,格式 YYYY-MM-DD HH:MM:SS',
    updater mediumint unsigned default null comment 'item更新者,表sys_user中id為其外鍵',
    unique key `company_name` (`name`) comment 'index-子公司名稱,使用唯一索引',
    key `company_parent_company` (`parent_company`) comment 'index-母公司id索引',
    constraint `fk_company_updater` foreign key (`updater`) references `sys_user` (`id`) on update cascade
)engine=innodb default charset=utf8 collate=utf8_general_ci comment '子公司表';

-- 公司部門表
create table if not exists department (
    id smallint unsigned not null auto_increment primary key comment '公司部門表自增id',
    name char(60) not null comment '部門名稱',
    name_old varchar(60) null comment '部門之前所用的名稱',
    company smallint unsigned not null comment '部門所屬公司,表company中id為其外鍵',
    level enum('top','second','third','fourth','fifth','sixth','seventh','eighth') not null default 'top' comment '部門等級,默認為top(一級)部門,後一級為前一級的子部門',
    parent_department smallint unsigned default 0 comment '部門所屬上級部門,對應表department中id,默認為0表示一級部門,不設置外鍵約束',
    instruction text default null comment '部門情況簡介',
    founding_date date default null comment '部門成立時間,格式 YYYY-MM-DD',
    is_exist enum('yes','no') not null default 'yes' comment '部門是否仍存在,未被撤銷,默認存在',
    closed_date date default null comment '部門撤銷時間,格式 YYYY-MM-DD',
    adder mediumint unsigned not null comment '該item的添加者,表sys_user中的id為其外鍵',
    create_time timestamp not null default current_timestamp comment 'item入庫時間,格式 YYYY-MM-DD HH:MM:SS',
    update_time timestamp null default null on update current_timestamp comment '數據更新時間,格式 YYYY-MM-DD HH:MM:SS',
    unique key `department_name` (`name`,`company`) comment 'index-公司部門名稱與所屬公司二者確定一條item',
    key `department_parent_department` (`parent_department`) comment 'index-上一級部門id索引',
    updater mediumint unsigned default null comment 'item更新者,表sys_user中id為其外鍵',
    constraint `fk_department_company` foreign key (`company`) references `company` (`id`) on update cascade,
    constraint `fk_department_adder` foreign key (`adder`) references `sys_user` (`id`) on update cascade,
    constraint `fk_department_updater` foreign key (`updater`) references `sys_user` (`id`) on update cascade
)engine=innodb default charset=utf8 collate=utf8_general_ci comment 'raxtone公司部門表';

-- 公司部門負責人表
create table if not exists department_director (
    id mediumint unsigned not null auto_increment primary key comment '部門負責人表自增id',
    department smallint unsigned not null comment '部門id,表department中id為其外鍵',
    director mediumint unsigned null comment '負責人,對應表employee中id,不設置外鍵約束',
    remarks text default null comment '部門負責人信息備註',
    is_part_time enum('no','yes') not null default 'no' comment '是否是兼任,默認為no,不是兼任',
    start_date date default null comment '任職起始時間,格式 YYYY-MM-DD',
    end_date date default null comment '任職結束時間,格式 YYYY-MM-DD',
    adder mediumint unsigned not null comment '該item的添加者,表sys_user中的id為其外鍵',
    create_time timestamp not null default current_timestamp comment 'item入庫時間,格式 YYYY-MM-DD HH:MM:SS',
    updater mediumint unsigned default null comment 'item更新者,表sys_user中id為其外鍵',
    update_time timestamp null default null on update current_timestamp comment '數據更新時間,格式 YYYY-MM-DD HH:MM:SS',
    key `department_director_director` (`director`) comment 'index-部門負責人id',
    constraint `fk_department_director_department` foreign key (`department`) references `department` (`id`) on update cascade,
    constraint `fk_department_director_adder` foreign key (`adder`) references `sys_user` (`id`) on update cascade,
    constraint `fk_department_director_updater` foreign key (`updater`) references `sys_user` (`id`) on update cascade
)engine=innodb default charset=utf8 collate=utf8_general_ci comment 'raxtone公司部門負責人表';

-- 公司僱員表
create table if not exists employee (
    id mediumint unsigned not null auto_increment primary key comment '公司僱員自增id',
    employee_no char(20) not null comment '員工編號',
    name char(60) not null comment '僱員姓名',
    job_title varchar(90) not null comment '僱員職位名稱',
    gender enum ('male','female') not null comment '僱員性別',
    birth date default null comment '僱員出生時間,格式 YYYY-MM-DD',
    department smallint unsigned not null comment '僱員所屬部門,表department中id為其外鍵',
    identity_no char(30) default null comment '僱員身份證號碼',
    personal_email varchar(80) default null comment '僱員個人郵箱地址',
    mobile_phone_no varchar(20) default null comment '僱員個人移動電話號碼',
    hiredate date not null comment '僱員入職時間,格式 YYYY-MM-DD',
    leavedate date default null comment '僱員離職時間,格式 YYYY-MM-DD',
    is_leave enum('no','yes') not null default 'no' comment '是否離職,默認為no未離職',
    remarks varchar(300) default null comment '僱員信息備註',
    adder mediumint unsigned not null comment '該item的添加者,表sys_user中的id為其外鍵',
    create_time timestamp not null default current_timestamp comment 'item入庫時間,格式 YYYY-MM-DD HH:MM:SS',
    updater mediumint unsigned default null comment 'item更新者,表sys_user中id為其外鍵',
    update_time timestamp null default null on update current_timestamp comment '數據更新時間,格式 YYYY-MM-DD HH:MM:SS',
    unique key `employee_name` (`name`,`employee_no`) comment 'index-公司僱員姓名、員工編號,二者同時確定一條item',
    constraint `fk_employee_department` foreign key (`department`) references `department` (`id`) on update cascade,
    constraint `fk_employee_adder` foreign key (`adder`) references `sys_user` (`id`) on update cascade,
    constraint `fk_employee_updater` foreign key (`updater`) references `sys_user` (`id`) on update cascade
)engine=innodb default charset=utf8 collate=utf8_general_ci comment '公司僱員表';

-- 服務器參數信息表
-- http://stackoverflow.com/questions/23087105/mariadb-dynamic-columns-json
-- 品牌 server_brand
-- 具體型號 server_brand_version
-- 產品類別 機架式 server_product_catagory
-- 產品結構 2U server_product_mix
-- CPU型號 Xeon E5-2630 v2 server_cpu_model
-- CPU頻率 server_cpu_frequency
-- 標配CPU數量 2顆 standart_cpu_no
-- 最大CPU數量 max_cpu_no
-- 主板芯片組  motherboard_chipset_version
-- 主板擴展槽 motherboard_expansion_slot
-- 內存類型 memory_tpye
-- 內存品牌 memory_brand
-- 內存容量 memory_capacity
-- 內存插槽數量 memory_slot_no
-- 硬盤接口類型 hard_disk_interface_type
-- 標配硬盤容量 hard_disk_capacity
-- 硬盤架數 hard_disk_tray_no
-- 硬盤槽位 hard_disk_slot
-- 網絡控制器個數 network_controller_no
-- 網絡控制器速度 network_controller_speed
-- 購買日期 buy_date
-- 保修期限 warranty_period

-- server_room根據實際情況設置
create table if not exists ops_server (
    id mediumint unsigned not null auto_increment primary key comment '服務器自增id',
    details blob comment '服務器參數配置信息,如品牌信號、主板芯片組、CPU、硬盤、內存、網卡等相關信息',
    server_room enum ('地點1','地點2','地點3') not null default '地點1' comment '服務器所在機房,默認為空',
    server_cabinet varchar(30) not null comment '所屬機櫃的名稱',
    server_cabinet_order tinyint unsigned not null comment '服務器在機櫃中的位置序號',
    adder mediumint unsigned not null comment '該item的添加者,表sys_user中的id為其外鍵',
    create_time timestamp not null default current_timestamp comment 'item入庫時間,格式 YYYY-MM-DD HH:MM:SS',
    update_time timestamp null default null on update current_timestamp comment '數據更新時間,格式 YYYY-MM-DD HH:MM:SS',
    updater mediumint unsigned default null comment 'item更新者,表sys_user中id為其外鍵',
    key `server_serverRoom` (`server_room`) comment 'index-服務器所在機房',
    constraint `fk_ops_server_adder` foreign key (`adder`) references `sys_user` (`id`) on update cascade,
    constraint `fk_ops_server_updater` foreign key (`updater`) references `sys_user` (`id`) on update cascade
)engine=innodb default charset=utf8 collate=utf8_general_ci comment '服務器表';

-- 服務器變更記錄表
create table if not exists ops_server_change_record (
    id int unsigned not null auto_increment primary key comment '服務器變更記錄自增id',
    server mediumint unsigned not null comment '服務器id,表server中id為其外鍵',
    operator mediumint unsigned not null comment '對服務器進行操作,操作者id,表employee中id為其外鍵',
    operate_time_begin timestamp not null comment '操作起始時間',
    operate_time_end timestamp null comment '操作結束時間',
    description text not null comment '操作細節簡述',
    adder mediumint unsigned not null comment '該item的添加者,表sys_user中id為其外鍵',
    create_time timestamp not null default current_timestamp comment 'item入庫時間,格式 YYYY-MM-DD HH:MM:SS',
    constraint `fk_ops_server_change_record_server` foreign key (`server`) references `ops_server` (`id`) on update cascade,
    constraint `fk_ops_server_change_record_operator` foreign key (`operator`) references `employee` (`id`) on update cascade,
    constraint `fk_ops_server_change_record_adder` foreign key (`adder`) references `sys_user` (`id`) on update cascade
)engine=innodb default charset=utf8 collate=utf8_general_ci comment '服務器信息變更記錄表';

-- 域名信息表
create table if not exists ops_domain (
    id smallint unsigned not null auto_increment primary key comment '域名錶自增id',
    website char(90) not null comment '域名網址',
    name varchar(120) not null comment '域名名稱',
    company smallint unsigned not null comment '域名所屬的公司,表company中id為其外鍵',
    responsible_person mediumint unsigned not null comment '域名備案負責人,表employee中id為其外鍵',
    domain_name_registrar blob not null comment '域名註冊商,含名稱、地址、網址、聯繫電話等信息',
    internet_service_provider varchar(90) not null comment '網絡接入服務商',
    ip_addr varchar(130) not null comment 'IP地址,IPV4或IPV6',
    record_num varchar(90) not null comment '備案號',
    audit_time date not null comment '備案審核時間',
    adder mediumint unsigned not null comment '該item的添加者,表sys_user中id為其外鍵',
    create_time timestamp not null default current_timestamp comment 'item入庫時間,格式 YYYY-MM-DD HH:MM:SS',
    update_time timestamp null default null on update current_timestamp comment '數據更新時間,格式 YYYY-MM-DD HH:MM:SS',
    updater mediumint unsigned default null comment 'item更新者,表sys_user中id為其外鍵',
    key `domain_website` (`website`) comment 'index-域名網站索引',
    constraint `fk_domain_company` foreign key (`company`) references `company` (`id`) on update cascade,
    constraint `fk_domain_responsiblePerson` foreign key (`responsible_person`) references `employee` (`id`) on update cascade,
    constraint `fk_domain_adder` foreign key (`adder`) references `sys_user` (`id`) on update cascade,
    constraint `fk_domain_updater` foreign key (`updater`) references `sys_user` (`id`) on update cascade
)engine=innodb default charset=utf8 collate=utf8_general_ci comment '公司域名錶';

-- 公司資產分類
create table if not exists asset_category (
    id smallint unsigned not null auto_increment primary key comment '資產分類自增id',
    name char(60) not null comment '資產分類名稱',
    level enum('top','second','third','fourth','fifth','sixth','seventh','eighth') not null default 'top' comment '資產分類等級,默認為top頂級(一級)分類,後一級為前一級的子分類',
    parent_category smallint unsigned default 0 comment '該分類的父級分類,頂級分類為0,本表的id,不設置外鍵約束',
    is_show enum('yes','no') default 'yes' comment '是否顯示,默認為yes顯示',
    remarks text default null comment '該分類備註信息',
    adder mediumint unsigned not null comment '分類的添加者,表sys_user中的id為其外鍵',
    create_time timestamp not null default current_timestamp comment 'item入庫時間,格式 YYYY-MM-DD HH:MM:SS',
    update_time timestamp null default null on update current_timestamp comment '數據更新時間,格式 YYYY-MM-DD HH:MM:SS',
    updater mediumint unsigned default null comment 'item更新者,表sys_user中id為其外鍵',
    unique key `asset_category_name` (`level`,`name`) comment 'index-資產分類名稱,使用唯一索引,name和level共同確定一條item',
    key `asset_parent_category` (`parent_category`) comment 'index-上一級分類id索引',
    constraint `fk_asset_category_adder` foreign key (`adder`) references `sys_user` (`id`) on update cascade,
    constraint `fk_asset_category_updater` foreign key (`updater`) references `sys_user` (`id`) on update cascade
)engine=innodb default charset=utf8 collate=utf8_general_ci comment '公司資產分類表,含多個等級的分類';

-- 公司資產清單
create table if not exists asset_inventory (
    id mediumint unsigned not null auto_increment primary key comment '資產清單自增id',
    asset_category smallint unsigned not null comment '資產所屬分類,表asset_category中id為其外鍵',
    asset_no char(50) default null comment '資產編號(唯一)',
    name char(150) not null comment '資產名稱',
    purchase_date date default null comment '資產購置時間',
    maintenance_state enum('well','broken') default 'well' comment '資產保存狀態',
    maintenance_department smallint unsigned not null comment '資產負責維護的部門',
    remarks text default null comment '資產備註說明',
    property blob default null comment '資產屬性,json格式存儲',
    adder mediumint unsigned not null comment '分類的添加者,表sys_user中的id為其外鍵',
    create_time timestamp not null default current_timestamp comment 'item入庫時間,格式 YYYY-MM-DD HH:MM:SS',
    update_time timestamp null default null on update current_timestamp comment '數據更新時間,格式 YYYY-MM-DD HH:MM:SS',
    updater mediumint unsigned default null comment 'item更新者,表sys_user中id為其外鍵',
    unique key `asset_inventory_name` (`name`,`asset_no`) comment 'index-資產名稱,name和asset_no二者確定一條item',
    constraint `fk_asswt_inventory_mDepartment` foreign key (`maintenance_department`) references `department` (`id`) on update cascade,
    constraint `fk_asset_inventory_adder` foreign key (`adder`) references `sys_user` (`id`) on update cascade,
    constraint `fk_asset_inventory_updater` foreign key (`updater`) references `sys_user` (`id`) on update cascade
)engine=innodb default charset=utf8 collate=utf8_general_ci comment '公司資產清單表';

-- select id,name,asset_no,asset_category,column_list(property) from asset_inventory;
-- select id,name,asset_no,asset_category,column_json(property) from asset_inventory;
-- select id,name,asset_no,asset_category,column_get(property,'內存' as char) as 'CPU' from asset_inventory;
-- update asset_inventory set property=column_add(property, '顯卡型號','column_add') where id=3;
-- update asset_inventory set property=column_delete(property, '顯卡型號') where id=3;

-- 資產使用記錄
create table if not exists asset_usage_log (
    id mediumint unsigned not null auto_increment primary key comment '資產使用記錄自增id',
    asset mediumint unsigned not null comment '使用的資產,表asset_inventory中的id為其外鍵',
    scope enum('個人','集體') default '個人' comment '該資產使用範圍,分配個人使用還是集體使用',
    user mediumint unsigned not null comment '資產使用者,表employee中id為其外鍵',
    assigner mediumint unsigned not null comment '資產分配者,表employee中id為其外鍵',
    remarks text default null comment '資產使用備註說明',
    start_time timestamp not null default current_timestamp comment '資產開始使用時間',
    end_time timestamp null default null comment '資產使用結束或歸還時間,默認為null,表示該資產被分配使用,如果有具體時間,表示該資產閒置',
    adder mediumint unsigned not null comment '該item的添加者,表sys_user中的id為其外鍵',
    create_time timestamp not null default current_timestamp comment 'item入庫時間,格式 YYYY-MM-DD HH:MM:SS',
    update_time timestamp null default null on update current_timestamp comment '數據更新時間,格式 YYYY-MM-DD HH:MM:SS',
    updater mediumint unsigned default null comment 'item更新者,表sys_user中id為其外鍵',
    constraint `fk_asset_usage_log_asset` foreign key (`asset`) references `asset_inventory` (`id`) on update cascade,
    constraint `fk_asset_usage_log_employee` foreign key (`user`) references `employee` (`id`) on update cascade,
    constraint `fk_asset_usage_log_assigner` foreign key (`assigner`) references `employee` (`id`) on update cascade,
    constraint `fk_asset_usage_log_adder` foreign key (`adder`) references `sys_user` (`id`) on update cascade,
    constraint `fk_asset_usage_log_updater` foreign key (`updater`) references `sys_user` (`id`) on update cascade
)engine=innodb default charset=utf8 collate=utf8_general_ci comment '公司資產使用記錄表';

Snapshots

項目快照

GitLab

Login Page

Dashboard

Module

Sys User

Module

User Role

Employee

Department

Asset Category

Inventory

Change Logs

  • 2016.11.15 17:51 Tue Asia/Shanghai
    • 初稿完成
  • 2018.04.16 21:33 Mon America/Boston
    • 勘誤,遷移到新Blog