-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdb.sql
104 lines (90 loc) · 2.45 KB
/
db.sql
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
# Сообщения
CREATE TABLE chat.e_messages
(
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES sysinfo.users(id),
message_text TEXT NOT NULL,
send_date TIMESTAMP WITH TIME ZONE DEFAULT LOCALTIMESTAMP NOT NULL
);
# Метаданные
CREATE TABLE metainfo.log
(
id INTEGER PRIMARY KEY,
object_id INTEGER NOT NULL REFERENCES metainfo.objects(id),
session_id INTEGER NOT NULL REFERENCES
);
# Пользователи
CREATE TABLE sysinfo.e_users
(
id SERIAL PRIMARY KEY,
username VARCHAR(20) NOT NULL UNIQUE,
password VARCHAR(20) NOT NULL
);
# Сессии
#
CREATE TABLE sysinfo.e_sessions
(
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES sysinfo.e_users(id),
open_date TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT LOCALTIMESTAMP,
close_date TIMESTAMP WITH TIME ZONE,
status_id INTEGER NOT NULL REFERENCES sysinfo.d_session_status(id)
);
# Справочник "Роли"
CREATE TABLE sysinfo.d_user_roles
(
id SERIAL PRIMARY KEY,
role_name VARCHAR(50) NOT NULL UNIQUE
);
# Роли
CREATE TABLE sysinfo.r_user_roles
(
id SERIAL PRIMARY KEY,
role_id INTEGER NOT NULL REFERENCES sysinfo.d_user_roles(id),
user_id INTEGER NOT NULL REFERENCES sysinfo.e_users(id)
);
# Задачи
# Created
CREATE TABLE open_project.e_tasks
(
id SERIAL PRIMARY KEY,
task_name VARCHAR(200) NOT NULL UNIQUE,
task_description TEXT UNIQUE,
create_date TIMESTAMP WITH TIME ZONE DEFAULT LOCALTIMESTAMP NOT NULL
);
# История изменения задач
#
CREATE TABLE history.e_tasks
(
id SERIAL PRIMARY KEY,
task_id INTEGER NOT NULL REFERENCES open_project.e_tasks(id),
task_name VARCHAR(200) NOT NULL UNIQUE,
task_description TEXT UNIQUE,
modification_date TIMESTAMP WITH TIME ZONE DEFAULT LOCALTIMESTAMP NOT NULL,
is_deleted INTEGER NOT NULL DEFAULT 0 CHECK (is_deleted in (0,1))
);
# Схема для хранения справочников
# Created
CREATE SCHEMA dict;
# Справочник "Пол физического лица"
# Created
CREATE TABLE dict.gender
(
id SMALLINT[1] PRIMARY KEY,
gender VARCHAR(100) NOT NULL UNIQUE
);
# Схема для хранения метаданных
# Created
CREATE SCHEMA metainfo;
# Физические лица
# Created
CREATE TABLE metainfo.e_persons
(
id SERIAL PRIMARY KEY,
iin NUMERIC(12, 0) NOT NULL UNIQUE,
first_name VARCHAR(200) NOT NULL,
last_name VARCHAR(200) NOT NULL,
middle_name VARCHAR(300),
dob DATE NOT NULL,
gender_id SMALLINT[1] NOT NULL REFERENCES dict.gender(id)
);