-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinit.sql
More file actions
198 lines (180 loc) · 8.78 KB
/
init.sql
File metadata and controls
198 lines (180 loc) · 8.78 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
DROP TABLE IF EXISTS bundestagswahl CASCADE;
DROP TABLE IF EXISTS bundesland CASCADE;
DROP TABLE IF EXISTS wahlkreis CASCADE;
DROP TABLE IF EXISTS strukturdaten CASCADE;
DROP TABLE IF EXISTS gemeinde CASCADE;
DROP TABLE IF EXISTS partei CASCADE;
DROP TABLE IF EXISTS parteireihenfolge CASCADE;
DROP TABLE IF EXISTS kandidat CASCADE;
DROP TABLE IF EXISTS direktkandidatur CASCADE;
DROP TABLE IF EXISTS landesliste CASCADE;
DROP TABLE IF EXISTS listenplatz CASCADE;
DROP TABLE IF EXISTS erststimme CASCADE;
DROP TABLE IF EXISTS zweitstimme CASCADE;
DROP TABLE IF EXISTS ungueltige_stimme CASCADE;
DROP TABLE IF EXISTS ungueltige_stimmen_ergebnis;
DROP TABLE IF EXISTS zweitstimmenergebnis CASCADE;
DROP TABLE IF EXISTS admin_token CASCADE;
DROP TABLE IF EXISTS wahl_token CASCADE;
CREATE TABLE bundestagswahl
(
tag DATE UNIQUE NOT NULL,
nummer INTEGER PRIMARY KEY
);
CREATE TABLE bundesland
(
kuerzel CHAR(2) UNIQUE NOT NULL,
name VARCHAR(50) UNIQUE NOT NULL,
osten BOOLEAN NOT NULL,
landid INTEGER PRIMARY KEY
);
CREATE TABLE wahlkreis
(
nummer INTEGER NOT NULL,
name VARCHAR(100) NOT NULL,
land INTEGER REFERENCES bundesland (landid) NOT NULL,
wahl INTEGER REFERENCES bundestagswahl (nummer) NOT NULL,
wahlberechtigte INTEGER NOT NULL,
begrenzung TEXT NOT NULL,
wkid SERIAL PRIMARY KEY,
UNIQUE (nummer, wahl),
UNIQUE (name, wahl)
);
CREATE TABLE strukturdaten
(
wahlkreis INTEGER PRIMARY KEY REFERENCES wahlkreis (wkid) NOT NULL,
auslaenderanteil DECIMAL NOT NULL,
bevoelkerungsdichte DECIMAL NOT NULL,
bevoelkerungsveraenderung_pro_1000_ew DECIMAL NOT NULL,
altersanteil_unter_18 DECIMAL NOT NULL,
altersanteil_18_bis_24 DECIMAL NOT NULL,
altersanteil_25_bis_34 DECIMAL NOT NULL,
altersanteil_35_bis_59 DECIMAL NOT NULL,
altersanteil_60_bis_74 DECIMAL NOT NULL,
altersanteil_ueber_74 DECIMAL NOT NULL,
bodenflaechenanteil_siedlung_verkehr DECIMAL,
bodenflaechenanteil_vegation_gewaesser DECIMAL,
wohnungen_pro_1000_ew DECIMAL NOT NULL,
wohnflaeche_pro_wohnung DECIMAL,
wohnflaeche_pro_ew DECIMAL,
pkw_bestand_pro_1000_ew DECIMAL NOT NULL,
pkw_anteil_elektro_hybrid DECIMAL,
unternehmen_pro_1000_ew DECIMAL NOT NULL,
handwerksunternehmen_pro_1000_ew DECIMAL NOT NULL,
schulabgaenger_beruflich_pro_1000_ew DECIMAL,
schulabgaenger_allgemeinbildend_pro_1000_ew DECIMAL NOT NULL,
schulabgaengeranteil_allgemeinbildend_ohne_hauptschulabschluss DECIMAL NOT NULL,
schulabgaengeranteil_allgemeinbildend_hauptschulabschluss DECIMAL NOT NULL,
schulabgaengeranteil_allgemeinbildend_mittlerer_schulabschluss DECIMAL NOT NULL,
schulabgaengeranteil_allgemeinbildend_hochschulreife DECIMAL NOT NULL,
einkommen_pro_ew DECIMAL NOT NULL,
bip_pro_ew DECIMAL NOT NULL,
beschaeftigte_pro_1000_ew DECIMAL NOT NULL,
beschaeftigtenanteil_landwirtschaft_forstwirtschaft_fischerei DECIMAL,
beschaeftigtenanteil_produzierendes_gewerbe DECIMAL,
beschaeftigtenanteil_handel_gastgewerbe_verkehr DECIMAL,
beschaeftigtenanteil_dienstleister DECIMAL,
leistungsempfaenger_pro_1000_ew DECIMAL NOT NULL,
arbeitslosenquote DECIMAL NOT NULL,
arbeitslosenquote_maenner DECIMAL NOT NULL,
arbeitslosenquote_frauen DECIMAL NOT NULL,
arbeitslosenquote_15_bis_24 DECIMAL,
arbeitslosenquote_55_bis_64 DECIMAL NOT NULL
);
CREATE TABLE partei
(
ist_einzelbewerbung BOOLEAN NOT NULL,
name VARCHAR(200) NOT NULL,
kuerzel VARCHAR(40),
nationaleminderheit BOOLEAN NOT NULL,
gruendungsjahr INTEGER,
farbe VARCHAR(6),
parteiid SERIAL PRIMARY KEY,
UNIQUE (name, kuerzel)
);
CREATE TABLE parteireihenfolge
(
wahl INTEGER REFERENCES bundestagswahl (nummer),
partei INTEGER REFERENCES partei (parteiid),
land INTEGER REFERENCES bundesland (landid),
position INTEGER NOT NULL,
PRIMARY KEY(wahl, partei, land)
);
CREATE TABLE kandidat
(
vorname VARCHAR(100) NOT NULL,
nachname VARCHAR(60) NOT NULL,
titel VARCHAR(50),
zusatz VARCHAR(50),
geburtsjahr INTEGER NOT NULL,
geburtsort VARCHAR(200) NOT NULL,
beruf VARCHAR(200) NOT NULL,
geschlecht VARCHAR(20) NOT NULL,
kandid SERIAL PRIMARY KEY,
UNIQUE (vorname, nachname, geburtsjahr, geburtsort)
);
CREATE TABLE direktkandidatur
(
partei INTEGER REFERENCES partei (parteiid) NOT NULL,
kandidat INTEGER REFERENCES kandidat (kandid),
wahlkreis INTEGER REFERENCES wahlkreis (wkid) NOT NULL,
anzahlstimmen INTEGER,
direktid SERIAL PRIMARY KEY,
UNIQUE(wahlkreis, partei)
);
CREATE TABLE landesliste
(
partei INTEGER REFERENCES partei (parteiid) NOT NULL,
wahl INTEGER REFERENCES bundestagswahl (nummer) NOT NULL,
land INTEGER REFERENCES bundesland (landid) NOT NULL,
listenid SERIAL PRIMARY KEY,
UNIQUE (partei, wahl, land)
);
CREATE TABLE listenplatz
(
position INTEGER NOT NULL,
kandidat INTEGER REFERENCES kandidat (kandid) NOT NULL,
liste INTEGER REFERENCES landesliste (listenid) NOT NULL,
PRIMARY KEY (liste, position)
);
CREATE TABLE erststimme
(
kandidatur INTEGER REFERENCES direktkandidatur (direktid) NOT NULL
);
CREATE TABLE zweitstimme
(
liste INTEGER REFERENCES landesliste (listenid),
wahlkreis INTEGER REFERENCES wahlkreis (wkid)
);
CREATE TABLE ungueltige_stimme
(
stimmentyp INTEGER NOT NULL,
wahlkreis INTEGER REFERENCES wahlkreis (wkid)
);
CREATE TABLE ungueltige_stimmen_ergebnis
(
stimmentyp INTEGER NOT NULL,
wahlkreis INTEGER REFERENCES wahlkreis (wkid),
anzahlstimmen INTEGER,
PRIMARY KEY (stimmentyp, wahlkreis)
);
CREATE TABLE zweitstimmenergebnis
(
liste INTEGER REFERENCES landesliste (listenid) NOT NULL,
wahlkreis INTEGER REFERENCES wahlkreis (wkid) NOT NULL,
anzahlstimmen INTEGER,
PRIMARY KEY (liste, wahlkreis)
);
CREATE TABLE admin_token
(
wahlkreis INTEGER REFERENCES wahlkreis (wkid) NOT NULL,
token UUID PRIMARY KEY,
gueltig BOOLEAN NOT NULL
);
CREATE TABLE wahl_token
(
wahlkreis INTEGER REFERENCES wahlkreis (wkid) NOT NULL,
token UUID PRIMARY KEY,
ablaufdatum TIMESTAMP NOT NULL,
gueltig BOOLEAN NOT NULL
);