-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabase.sql
More file actions
190 lines (165 loc) · 4.5 KB
/
database.sql
File metadata and controls
190 lines (165 loc) · 4.5 KB
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
drop table Politics cascade;
drop table Ship cascade;
drop table Base;
drop table System cascade;
drop table Fraction cascade;
drop type state_ship;
drop table Resourc;
drop table Planet cascade;
drop table Users cascade;
drop table User_Fraction;
drop table State cascade;
drop table Type cascade;
drop table Groups cascade;
drop table Group_member;
drop table Task;
drop table Group_authority;
drop table Messages;
drop table Chat cascade;
drop table Chat_User;
drop table Voting cascade;
drop table Results cascade;
drop table Vote;
drop table Battle;
drop type type_Resources cascade;
drop type weather_type;
drop type name_group;
create type state_ship as enum('на ремонте','боевая готовность','создается','уничтожен','атакует','держит оборону');
create type type_Resources as enum('бензак','вода','газ','железо');
create type weather_type AS enum('холодная', 'горячая','нормальная');
create type name_group as enum('игрок');
create table Politics(
id integer Primary Key,
name_politics text
);
create table Fraction(
ID integer PRIMARY KEY,
name_Fraction varchar(15) not null,
id_politics integer not null REFERENCES Politics(id) on delete set null
);
create table System(
ID integer PRIMARY KEY,
name_System varchar(15)
);
create table Users(
ID integer PRIMARY KEY,
Game_name text,
login text,
password text,
level integer
);
create table Base(
ID integer PRIMARY KEY,
name_Base text,
ID_user integer REFERENCES Users(id) on delete set null,
ID_system integer REFERENCES System(id) on delete cascade,
location_base_x integer,
location_base_y integer
);
create table Ship(
ID integer PRIMARY KEY,
hp integer
check(hp>=0),
state state_ship,
name_ship varchar(14),
ID_base integer default 0 REFERENCES Base(ID) on delete set default,
ID_system integer REFERENCES System(id) on delete cascade,
ID_user integer REFERENCES Users(id) on delete cascade,
location_ship_x integer,
location_ship_y integer,
/*location_ship_z integer,*/
speed integer
check((speed>=400 and speed<=1000) or speed=0),
protection integer
check(protection>=0 and protection<=50)
);
create table Planet(
ID integer PRIMARY KEY,
name_Planet varchar(15),
ID_system integer REFERENCES System(ID) on delete cascade,
ID_fraction integer REFERENCES Fraction(ID) on delete set null,
location_planet_x integer,
location_planet_y integer,
weather weather_type,
ID_user integer REFERENCES Users(ID) on delete set null
);
create table Resourc(
ID integer PRIMARY KEY,
name_Resources text,
ID_planet integer REFERENCES Planet(id) on delete cascade,
type type_Resources,
count integer
);
create table User_Fraction(
id_fraction integer not null REFERENCES Ship(id) on delete cascade,
id_user integer not null REFERENCES Users(id) on delete cascade,
date date,
actual boolean,
PRIMARY KEY(id_fraction, id_user)
);
create table State(
id integer Primary Key,
name_state varchar(30)
);
create table Type(
id integer Primary Key,
name_state varchar(30)
);
create table Task(
id integer Primary Key,
name varchar(20),
description text,
access boolean not null,
id_type integer not null REFERENCES Type(id) on delete cascade,
id_state integer not null REFERENCES State(id) on delete cascade,
id_fraction integer not null REFERENCES Fraction(id) on delete cascade
);
create table Groups(
id integer Primary Key,
name name_group
);
create table Group_member(
id_group integer default 0 REFERENCES Groups(id) on delete set default,
id_user integer REFERENCES Users(ID) on delete cascade
);
create table Group_authority(
id integer Primary Key,
id_group integer REFERENCES Groups(id) on delete cascade,
name_authority text
);
create table Messages(
id integer Primary Key,
id_chat integer,
id_user integer REFERENCES Groups(id) on delete cascade,
message text
);
create table Chat(
id integer Primary Key,
name varchar(30),
date date
);
create table Chat_User(
id_user integer REFERENCES Users(id) on delete cascade,
if_chat integer REFERENCES Chat(id) on delete cascade
);
create table Voting(
id integer Primary Key,
id_chat integer REFERENCES Chat(id) on delete cascade,
message text
);
create table Results(
id integer Primary Key,
id_voting integer REFERENCES Voting(id) on delete cascade,
name varchar(15)
);
create table Vote(
id integer Primary Key,
id_user integer REFERENCES Users(id) on delete cascade,
id_result integer REFERENCES Results(id) on delete cascade
);
create table Battle(
id integer Primary Key,
name varchar(20),
id_system integer REFERENCES System(id) on delete cascade,
date date
);