| margaretha | d3c0fc9 | 2017-10-25 15:03:32 +0200 | [diff] [blame] | 1 | CREATE TABLE IF NOT EXISTS role ( |
| 2 | id INTEGER PRIMARY KEY AUTO_INCREMENT, |
| 3 | name varchar(100) NOT NULL, |
| margaretha | b42b963 | 2017-10-25 18:34:12 +0200 | [diff] [blame] | 4 | UNIQUE INDEX name_index(name) |
| 5 | ); |
| 6 | |
| 7 | |
| 8 | CREATE TABLE IF NOT EXISTS privilege ( |
| 9 | id INTEGER PRIMARY KEY AUTO_INCREMENT, |
| 10 | name varchar(20) NOT NULL, |
| 11 | role_id int NOT NULL, |
| 12 | UNIQUE INDEX privilege_index(name, role_id), |
| 13 | FOREIGN KEY (role_id) |
| 14 | REFERENCES role (id) |
| margaretha | d3c0fc9 | 2017-10-25 15:03:32 +0200 | [diff] [blame] | 15 | ON DELETE CASCADE |
| 16 | ); |
| 17 | |
| margaretha | b42b963 | 2017-10-25 18:34:12 +0200 | [diff] [blame] | 18 | |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 19 | CREATE TABLE IF NOT EXISTS user_group ( |
| 20 | id INTEGER PRIMARY KEY AUTO_INCREMENT, |
| 21 | name varchar(100) NOT NULL, |
| 22 | status varchar(100) NOT NULL, |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 23 | created_by varchar(100) NOT NULL, |
| margaretha | bf11d8d | 2017-10-24 19:31:44 +0200 | [diff] [blame] | 24 | deleted_by varchar(100) DEFAULT NULL, |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 25 | INDEX status_index(status) |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 26 | ); |
| 27 | |
| 28 | CREATE TABLE IF NOT EXISTS user_group_member ( |
| 29 | id INTEGER PRIMARY KEY AUTO_INCREMENT, |
| 30 | user_id varchar(100) NOT NULL, |
| 31 | group_id int(11) NOT NULL, |
| 32 | status varchar(100) NOT NULL, |
| 33 | created_by varchar(100) NOT NULL, |
| 34 | deleted_by varchar(100) DEFAULT NULL, |
| 35 | UNIQUE INDEX unique_index (user_id,group_id), |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 36 | INDEX status_index(status), |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 37 | FOREIGN KEY (group_id) |
| 38 | REFERENCES user_group (id) |
| 39 | ON DELETE CASCADE |
| 40 | ); |
| 41 | |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 42 | CREATE TABLE IF NOT EXISTS group_member_role ( |
| 43 | id INTEGER PRIMARY KEY AUTO_INCREMENT, |
| 44 | group_member_id int(11) NOT NULL, |
| margaretha | d3c0fc9 | 2017-10-25 15:03:32 +0200 | [diff] [blame] | 45 | role_id int NOT NULL, |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 46 | UNIQUE INDEX unique_index (group_member_id,role_id), |
| 47 | FOREIGN KEY (group_member_id) |
| 48 | REFERENCES user_group_member (id) |
| 49 | ON DELETE CASCADE, |
| 50 | FOREIGN KEY (role_id) |
| 51 | REFERENCES role (id) |
| 52 | ON DELETE CASCADE |
| 53 | ); |
| 54 | |
| 55 | CREATE TABLE IF NOT EXISTS virtual_corpus ( |
| 56 | id INTEGER PRIMARY KEY AUTO_INCREMENT, |
| 57 | name varchar(255) NOT NULL, |
| 58 | type varchar(100) NOT NULL, |
| 59 | required_access varchar(100) NOT NULL, |
| 60 | created_by varchar(100) NOT NULL, |
| 61 | description varchar(255) DEFAULT NULL, |
| 62 | status varchar(100) DEFAULT NULL, |
| 63 | collection_query varchar(2000) NOT NULL, |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 64 | definition varchar(255) DEFAULT NULL, |
| 65 | INDEX owner_index (created_by), |
| 66 | INDEX type_index (type) |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 67 | ); |
| 68 | |
| 69 | CREATE TABLE IF NOT EXISTS virtual_corpus_access ( |
| 70 | id INTEGER PRIMARY KEY AUTO_INCREMENT, |
| 71 | virtual_corpus_id int(11) NOT NULL, |
| 72 | user_group_id int(11) NOT NULL, |
| 73 | status varchar(100) NOT NULL, |
| 74 | created_by varchar(100) NOT NULL, |
| 75 | approved_by varchar(100) DEFAULT NULL, |
| 76 | deleted_by varchar(100) DEFAULT NULL, |
| 77 | UNIQUE INDEX unique_index (virtual_corpus_id,user_group_id), |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 78 | INDEX status_index(status), |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 79 | FOREIGN KEY (user_group_id) |
| 80 | REFERENCES user_group (id) |
| 81 | ON DELETE CASCADE, |
| 82 | FOREIGN KEY (virtual_corpus_id) |
| 83 | REFERENCES virtual_corpus (id) |
| 84 | ON DELETE CASCADE |
| 85 | ); |