-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathschema.sql
More file actions
322 lines (309 loc) · 12.3 KB
/
schema.sql
File metadata and controls
322 lines (309 loc) · 12.3 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
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
313
314
315
316
317
318
319
320
321
322
drop database IF EXISTS winklar;
create database IF NOT EXISTS winklar CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
use winklar;
CREATE TABLE users (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(100) NOT NULL UNIQUE,
email VARCHAR(190) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE plz (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
ortschaftsname VARCHAR(150) NOT NULL,
plz4 CHAR(4) NOT NULL,
zusatzziffer VARCHAR(10) NULL,
zip_id VARCHAR(20) NULL,
gemeindename VARCHAR(150) NULL,
bfs_nr VARCHAR(20) NULL,
kantonskuerzel VARCHAR(10) NULL,
adressenanteil DECIMAL(5,2) NULL,
e DECIMAL(10,3) NULL,
n DECIMAL(10,3) NULL,
ist_eintrag_aktiv TINYINT(1) NOT NULL DEFAULT 1,
sprache VARCHAR(10) NULL,
validity_from DATE NULL,
validity_to DATE NULL
);
CREATE TABLE adressen (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
creator_adress_id INT UNSIGNED NULL,
modifier_adress_id INT UNSIGNED NULL,
anrede VARCHAR(50) NULL,
firmen_anrede VARCHAR(100) NULL,
nachname VARCHAR(150) NOT NULL,
vorname VARCHAR(150) NULL,
zusatz VARCHAR(150) NULL,
strasse VARCHAR(190) NULL,
postfach VARCHAR(100) NULL,
nation VARCHAR(100) NULL,
plz_id INT UNSIGNED NULL,
telefon VARCHAR(50) NULL,
email VARCHAR(190) NULL,
notiz TEXT NULL,
geburtsdatum DATE NULL,
lizenz VARCHAR(100) NULL,
passwort VARCHAR(255) NULL,
created_by_user_id INT UNSIGNED NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_by_user_id INT UNSIGNED NULL,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
CONSTRAINT fk_adressen_creator_adress
FOREIGN KEY (creator_adress_id) REFERENCES adressen(id)
ON DELETE SET NULL,
CONSTRAINT fk_adressen_modifier_adress
FOREIGN KEY (modifier_adress_id) REFERENCES adressen(id)
ON DELETE SET NULL,
CONSTRAINT fk_adressen_plz
FOREIGN KEY (plz_id) REFERENCES plz(id)
ON DELETE SET NULL,
CONSTRAINT fk_adressen_created_by
FOREIGN KEY (created_by_user_id) REFERENCES users(id)
ON DELETE SET NULL,
CONSTRAINT fk_adressen_updated_by
FOREIGN KEY (updated_by_user_id) REFERENCES users(id)
ON DELETE SET NULL
);
CREATE TABLE gaben (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(150) NOT NULL,
punktwert DECIMAL(10,2) NOT NULL DEFAULT 0.00,
preis DECIMAL(10,2) NOT NULL DEFAULT 0.00,
anzahl INT UNSIGNED NOT NULL DEFAULT 0,
created_by_user_id INT UNSIGNED NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_by_user_id INT UNSIGNED NULL,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
CONSTRAINT fk_gaben_created_by
FOREIGN KEY (created_by_user_id) REFERENCES users(id)
ON DELETE SET NULL,
CONSTRAINT fk_gaben_updated_by
FOREIGN KEY (updated_by_user_id) REFERENCES users(id)
ON DELETE SET NULL
);
CREATE TABLE anlass (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
fk_adress_id_creator INT UNSIGNED NULL,
fk_adress_id_modifier INT UNSIGNED NULL,
name_anlass VARCHAR(190) NOT NULL,
shortname_anlass VARCHAR(100) NULL,
start_anlass DATE NULL,
end_anlass DATE NULL,
created_by_user_id INT UNSIGNED NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_by_user_id INT UNSIGNED NULL,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
CONSTRAINT fk_anlass_adress_creator
FOREIGN KEY (fk_adress_id_creator) REFERENCES adressen(id)
ON DELETE SET NULL,
CONSTRAINT fk_anlass_adress_modifier
FOREIGN KEY (fk_adress_id_modifier) REFERENCES adressen(id)
ON DELETE SET NULL,
CONSTRAINT fk_anlass_created_by
FOREIGN KEY (created_by_user_id) REFERENCES users(id)
ON DELETE SET NULL,
CONSTRAINT fk_anlass_updated_by
FOREIGN KEY (updated_by_user_id) REFERENCES users(id)
ON DELETE SET NULL
);
CREATE TABLE stich (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
id_anlass INT UNSIGNED NOT NULL,
id_disziplin INT UNSIGNED NULL,
name VARCHAR(150) NOT NULL,
short_name VARCHAR(50) NULL,
anzeige_id VARCHAR(50) NULL,
scheibe VARCHAR(50) NULL,
wertigkeit DECIMAL(10,2) NULL,
anzahl_schuss SMALLINT UNSIGNED NULL,
anzahl_passen SMALLINT UNSIGNED NULL,
preis DECIMAL(10,2) NULL,
verbindung VARCHAR(100) NULL,
created_by_user_id INT UNSIGNED NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_by_user_id INT UNSIGNED NULL,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
CONSTRAINT fk_stich_anlass
FOREIGN KEY (id_anlass) REFERENCES anlass(id)
ON DELETE CASCADE,
CONSTRAINT fk_stich_created_by
FOREIGN KEY (created_by_user_id) REFERENCES users(id)
ON DELETE SET NULL,
CONSTRAINT fk_stich_updated_by
FOREIGN KEY (updated_by_user_id) REFERENCES users(id)
ON DELETE SET NULL
);
CREATE TABLE auszeichnungslimiten (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
stich_id INT UNSIGNED NOT NULL,
gaben_id INT UNSIGNED NULL,
min_wert DECIMAL(10,2) NULL,
max_wert DECIMAL(10,2) NULL,
min_alter SMALLINT UNSIGNED NULL,
max_alter SMALLINT UNSIGNED NULL,
created_by_user_id INT UNSIGNED NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_by_user_id INT UNSIGNED NULL,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
CONSTRAINT fk_auszeichnungslimiten_stich
FOREIGN KEY (stich_id) REFERENCES stich(id)
ON DELETE CASCADE,
CONSTRAINT fk_auszeichnungslimiten_gaben
FOREIGN KEY (gaben_id) REFERENCES gaben(id)
ON DELETE SET NULL,
CONSTRAINT fk_auszeichnungslimiten_created_by
FOREIGN KEY (created_by_user_id) REFERENCES users(id)
ON DELETE SET NULL,
CONSTRAINT fk_auszeichnungslimiten_updated_by
FOREIGN KEY (updated_by_user_id) REFERENCES users(id)
ON DELETE SET NULL
);
CREATE TABLE standblatt (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
id_anlass INT UNSIGNED NOT NULL,
id_adresse INT UNSIGNED NOT NULL,
datum DATE NULL,
kosten DECIMAL(10,2) NULL,
gaben_geprueft TINYINT(1) NOT NULL DEFAULT 0,
created_by_user_id INT UNSIGNED NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_by_user_id INT UNSIGNED NULL,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
CONSTRAINT fk_standblatt_anlass
FOREIGN KEY (id_anlass) REFERENCES anlass(id)
ON DELETE CASCADE,
CONSTRAINT fk_standblatt_adresse
FOREIGN KEY (id_adresse) REFERENCES adressen(id)
ON DELETE RESTRICT,
CONSTRAINT fk_standblatt_created_by
FOREIGN KEY (created_by_user_id) REFERENCES users(id)
ON DELETE SET NULL,
CONSTRAINT fk_standblatt_updated_by
FOREIGN KEY (updated_by_user_id) REFERENCES users(id)
ON DELETE SET NULL
);
CREATE TABLE standblatt_stich (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
id_standblatt INT UNSIGNED NOT NULL,
id_stich INT UNSIGNED NOT NULL,
anzahl_stiche INT UNSIGNED NOT NULL DEFAULT 0,
created_by_user_id INT UNSIGNED NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_by_user_id INT UNSIGNED NULL,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
CONSTRAINT fk_standblatt_stich_standblatt
FOREIGN KEY (id_standblatt) REFERENCES standblatt(id)
ON DELETE CASCADE,
CONSTRAINT fk_standblatt_stich_stich
FOREIGN KEY (id_stich) REFERENCES stich(id)
ON DELETE CASCADE,
CONSTRAINT fk_standblatt_stich_created_by
FOREIGN KEY (created_by_user_id) REFERENCES users(id)
ON DELETE SET NULL,
CONSTRAINT fk_standblatt_stich_updated_by
FOREIGN KEY (updated_by_user_id) REFERENCES users(id)
ON DELETE SET NULL,
UNIQUE KEY uq_standblatt_stich (id_standblatt, id_stich)
);
CREATE TABLE gaben_abgaben (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
gaben_id INT UNSIGNED NOT NULL,
standblatt_id INT UNSIGNED NOT NULL,
stich_id INT UNSIGNED NOT NULL,
created_by_user_id INT UNSIGNED NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_by_user_id INT UNSIGNED NULL,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
CONSTRAINT fk_gaben_abgaben_gaben
FOREIGN KEY (gaben_id) REFERENCES gaben(id)
ON DELETE CASCADE,
CONSTRAINT fk_gaben_abgaben_standblatt
FOREIGN KEY (standblatt_id) REFERENCES standblatt(id)
ON DELETE CASCADE,
CONSTRAINT fk_gaben_abgaben_stich
FOREIGN KEY (stich_id) REFERENCES stich(id)
ON DELETE CASCADE,
CONSTRAINT fk_gaben_abgaben_created_by
FOREIGN KEY (created_by_user_id) REFERENCES users(id)
ON DELETE SET NULL,
CONSTRAINT fk_gaben_abgaben_updated_by
FOREIGN KEY (updated_by_user_id) REFERENCES users(id)
ON DELETE SET NULL,
UNIQUE KEY uq_gaben_abgaben (gaben_id, standblatt_id, stich_id)
);
CREATE TABLE schussdaten (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
id_anlass INT UNSIGNED NOT NULL,
start_nr VARCHAR(50) NULL,
primaerwertung DECIMAL(10,2) NULL,
schussart VARCHAR(50) NULL,
bahn_nr VARCHAR(50) NULL,
sekundaerwertung DECIMAL(10,2) NULL,
teiler DECIMAL(10,2) NULL,
schuss_zeit DATETIME NULL,
mouche TINYINT(1) NOT NULL DEFAULT 0,
x_koordinate DECIMAL(10,4) NULL,
y_koordinate DECIMAL(10,4) NULL,
in_time TINYINT(1) NOT NULL DEFAULT 1,
time_since_change INT UNSIGNED NULL,
sweep_direction VARCHAR(20) NULL,
demonstration TINYINT(1) NOT NULL DEFAULT 0,
match_index INT UNSIGNED NULL,
stich_index INT UNSIGNED NULL,
ins_del TINYINT(1) NOT NULL DEFAULT 0,
total_art VARCHAR(50) NULL,
gruppe VARCHAR(100) NULL,
feuerart VARCHAR(50) NULL,
log_event VARCHAR(100) NULL,
log_typ VARCHAR(50) NULL,
zeit_seit_jahresanfang INT UNSIGNED NULL,
abloesung VARCHAR(50) NULL,
waffe VARCHAR(100) NULL,
position VARCHAR(50) NULL,
target_id VARCHAR(100) NULL,
externe_nummer VARCHAR(100) NULL,
import_hash CHAR(64) NOT NULL,
created_by_user_id INT UNSIGNED NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_by_user_id INT UNSIGNED NULL,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uq_schussdaten_anlass_import_hash (id_anlass, import_hash),
CONSTRAINT fk_schussdaten_anlass
FOREIGN KEY (id_anlass) REFERENCES anlass(id)
ON DELETE CASCADE,
CONSTRAINT fk_schussdaten_created_by
FOREIGN KEY (created_by_user_id) REFERENCES users(id)
ON DELETE SET NULL,
CONSTRAINT fk_schussdaten_updated_by
FOREIGN KEY (updated_by_user_id) REFERENCES users(id)
ON DELETE SET NULL
);
CREATE TABLE user_remember_tokens (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
user_id INT UNSIGNED NOT NULL,
selector CHAR(24) NOT NULL UNIQUE,
validator_hash CHAR(64) NOT NULL,
expires_at DATETIME NOT NULL,
created_by_user_id INT UNSIGNED NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_by_user_id INT UNSIGNED NULL,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
CONSTRAINT fk_user_remember_tokens_user
FOREIGN KEY (user_id) REFERENCES users(id)
ON DELETE CASCADE,
CONSTRAINT fk_user_remember_tokens_created_by
FOREIGN KEY (created_by_user_id) REFERENCES users(id)
ON DELETE SET NULL,
CONSTRAINT fk_user_remember_tokens_updated_by
FOREIGN KEY (updated_by_user_id) REFERENCES users(id)
ON DELETE SET NULL,
INDEX idx_user_remember_tokens_user_id (user_id),
INDEX idx_user_remember_tokens_expires_at (expires_at)
);
-- Beispiel-Benutzer anlegen:
-- Das Passwort muss vorher mit password_hash() erzeugt werden.
-- Beispiel in PHP:
-- echo password_hash('MeinSicheresPasswort123', PASSWORD_DEFAULT);
--
-- INSERT INTO users (username, email, password_hash)
-- VALUES ('max', 'max@example.com', '$2y$10$...');