· 5 years ago · May 02, 2020, 05:06 PM
1drop table if exists CARICA cascade;
2drop table if exists CARICA_PRECEDENTE cascade;
3drop table if exists COLLOCAZIONE cascade;
4drop table if exists CONCESSIONE cascade;
5drop table if exists DISPONIBILITA cascade;
6drop table if exists FORMAZIONE cascade;
7drop table if exists LIBRO cascade;
8drop table if exists ONORIFECENZA cascade;
9drop table if exists ORIENTAMENTO cascade;
10drop table if exists ORIENTAMENTO_STORICO cascade;
11drop table if exists PARTITO cascade;
12drop table if exists PARTITO_PRECEDENTE cascade;
13drop table if exists POLITICO cascade;
14drop table if exists PRESENZA cascade;
15drop table if exists REGIONE cascade;
16drop table if exists RUOLO cascade;
17drop table if exists TITOLO_DI_STUDIO cascade;
18drop table if exists TRADUZIONE cascade;
19
20--On delete cascade è considerato adatto a tutte le situazioni poichè nel caso in cui venga eliminata una tupla non ci interessa
21--conservarne le informazioni nelle altre relazioni. On update cascade è considerato adatto a tutte le situazioni poichè nel caso
22--in cui venga modificato un attributo bisogna modificarlo anche nelle altre relazioni
23
24create table PARTITO (
25 NOMEPARTITO VARCHAR(20) not null,
26 ISCRITTI INT4 null,
27 FONDAZIONE DATE null,
28 FONDATORE VARCHAR(20) null,
29 constraint PK_PARTITO primary key (NOMEPARTITO)
30);
31
32create table POLITICO (
33 ID VARCHAR(4) not null,
34 NOMEPARTITO VARCHAR(20) null,
35 SOSTENITORI INT4 null,
36 NOME VARCHAR(20) not null,
37 COGNOME VARCHAR(20) not null,
38 DATADINASCITA DATE not null,
39 LUOGODINASCITA VARCHAR(20) null,
40 DATAINIZIOADESIONE DATE null,
41 constraint PK_POLITICO primary key (ID),
42 constraint FK_POLITICO_ADESIONE_PARTITO foreign key (NOMEPARTITO)
43 references PARTITO (NOMEPARTITO)
44 on delete cascade on update cascade
45);
46
47create table CARICA (
48 TITOLO VARCHAR(20) not null,
49 AMBITO VARCHAR(20) not null,
50 constraint PK_CARICA primary key (TITOLO)
51);
52
53create table COLLOCAZIONE (
54 FAZIONE VARCHAR(20) not null,
55 constraint PK_COLLOCAZIONE primary key (FAZIONE)
56);
57
58create table ONORIFECENZA (
59 DECORAZIONE VARCHAR(20) not null,
60 constraint PK_ONORIFECENZA primary key (DECORAZIONE)
61);
62
63create table CARICA_PRECEDENTE (
64 ID VARCHAR(4) not null,
65 DATAINZIOCARPREC DATE not null,
66 TITOLO VARCHAR(20) not null,
67 DATAFINECARPREC DATE null,
68 constraint PK_CARICA_PRECEDENTE primary key (ID, DATAINZIOCARPREC),
69 constraint FK_CARICA_P_CARICA_RU_CARICA foreign key (TITOLO)
70 references CARICA (TITOLO)
71 on delete cascade on update cascade,
72 constraint FK_CARICA_P_POLITICO__POLITICO foreign key (ID)
73 references POLITICO (ID)
74 on delete cascade on update cascade
75);
76
77create table CONCESSIONE (
78 ID VARCHAR(4) not null,
79 DECORAZIONE VARCHAR(20) not null,
80 constraint PK_CONCESSIONE primary key (ID, DECORAZIONE),
81 constraint FK_CONCESSI_CONCESSIO_POLITICO foreign key (ID)
82 references POLITICO (ID)
83 on delete cascade on update cascade,
84 constraint FK_CONCESSI_CONCESSIO_ONORIFEC foreign key (DECORAZIONE)
85 references ONORIFECENZA (DECORAZIONE)
86 on delete cascade on update cascade
87);
88
89create table LIBRO (
90 CODICE VARCHAR(10) not null,
91 ID VARCHAR(4) not null,
92 ANNO DATE not null,
93 INTESTAZIONE VARCHAR(20) not null,
94 VENDITE INT4 null,
95 constraint PK_LIBRO primary key (CODICE),
96 constraint FK_LIBRO_AUTORE_POLITICO foreign key (ID)
97 references POLITICO (ID)
98 on delete cascade on update cascade
99);
100
101create table TRADUZIONE (
102 LINGUA VARCHAR(20) not null,
103 constraint PK_TRADUZIONE primary key (LINGUA)
104);
105
106create table RUOLO (
107 ID VARCHAR(4) not null,
108 TITOLO VARCHAR(20) not null,
109 DATAINIZIORUOLO DATE not null,
110 DATAFINERUOLO DATE null,
111 constraint PK_RUOLO primary key (ID, TITOLO),
112 constraint FK_RUOLO_RUOLO2_CARICA foreign key (TITOLO)
113 references CARICA (TITOLO)
114 on delete cascade on update cascade,
115 constraint FK_RUOLO_RUOLO_POLITICO foreign key (ID)
116 references POLITICO (ID)
117 on delete cascade on update cascade
118);
119
120create table DISPONIBILITA (
121 CODICE VARCHAR(10) not null,
122 LINGUA VARCHAR(20) not null,
123 constraint PK_DISPONIBILITA primary key (CODICE, LINGUA),
124 constraint FK_DISPONIB_DISPONIBI_LIBRO foreign key (CODICE)
125 references LIBRO (CODICE)
126 on delete cascade on update cascade,
127 constraint FK_DISPONIB_DISPONIBI_TRADUZIO foreign key (LINGUA)
128 references TRADUZIONE (LINGUA)
129 on delete cascade on update cascade
130);
131
132create table TITOLO_DI_STUDIO (
133 SPECIALIZZAZIONE VARCHAR(20) not null,
134 QUALIFICA VARCHAR(20) not null,
135 constraint PK_TITOLO_DI_STUDIO primary key (SPECIALIZZAZIONE, QUALIFICA)
136);
137
138create table FORMAZIONE (
139 ID VARCHAR(4) not null,
140 SPECIALIZZAZIONE VARCHAR(20) not null,
141 QUALIFICA VARCHAR(20) not null,
142 constraint PK_FORMAZIONE primary key (ID, SPECIALIZZAZIONE, QUALIFICA),
143 constraint FK_FORMAZIO_FORMAZION_POLITICO foreign key (ID)
144 references POLITICO (ID)
145 on delete cascade on update cascade,
146 constraint FK_FORMAZIO_FORMAZION_TITOLO_D foreign key (SPECIALIZZAZIONE, QUALIFICA)
147 references TITOLO_DI_STUDIO (SPECIALIZZAZIONE, QUALIFICA)
148 on delete cascade on update cascade
149);
150
151create table ORIENTAMENTO (
152 NOMEPARTITO VARCHAR(20) not null,
153 FAZIONE VARCHAR(20) not null,
154 constraint PK_ORIENTAMENTO primary key (NOMEPARTITO, FAZIONE),
155 constraint FK_ORIENTAM_ORIENTAME_PARTITO foreign key (NOMEPARTITO)
156 references PARTITO (NOMEPARTITO)
157 on delete cascade on update cascade,
158 constraint FK_ORIENTAM_ORIENTAME_COLLOCAZ foreign key (FAZIONE)
159 references COLLOCAZIONE (FAZIONE)
160 on delete cascade on update cascade
161);
162
163create table REGIONE (
164 NOMERG VARCHAR(20) not null,
165 VOTI INT4 null,
166 constraint PK_REGIONE primary key (NOMERG)
167);
168
169create table ORIENTAMENTO_STORICO (
170 NOMERG VARCHAR(20) not null,
171 FAZIONE VARCHAR(20) not null,
172 constraint PK_ORIENTAMENTO_STORICO primary key (NOMERG, FAZIONE),
173 constraint FK_ORIENTAM_ORIENTAME_REGIONE foreign key (NOMERG)
174 references REGIONE (NOMERG)
175 on delete cascade on update cascade,
176 constraint FK_ORIENTAM_ORIENTAME_COLLOCAZ foreign key (FAZIONE)
177 references COLLOCAZIONE (FAZIONE)
178 on delete cascade on update cascade
179);
180
181create table PARTITO_PRECEDENTE (
182 ID VARCHAR(4) not null,
183 DATAINIZIOPARTPREC DATE not null,
184 NOMEPARTITO VARCHAR(20) not null,
185 DATAFINEPARTPREC DATE null,
186 constraint PK_PARTITO_PRECEDENTE primary key (ID, DATAINIZIOPARTPREC),
187 constraint FK_PARTITO__PARTITO_A_PARTITO foreign key (NOMEPARTITO)
188 references PARTITO (NOMEPARTITO)
189 on delete cascade on update cascade,
190 constraint FK_PARTITO__POLITICO__POLITICO foreign key (ID)
191 references POLITICO (ID)
192 on delete cascade on update cascade
193);
194
195create table PRESENZA (
196 NOMEPARTITO VARCHAR(20) not null,
197 NOMERG VARCHAR(20) not null,
198 PERCENTUALE FLOAT8 null,
199 constraint PK_PRESENZA primary key (NOMEPARTITO, NOMERG),
200 constraint FK_PRESENZA_PRESENZA2_REGIONE foreign key (NOMERG)
201 references REGIONE (NOMERG)
202 on delete cascade on update cascade,
203 constraint FK_PRESENZA_PRESENZA_PARTITO foreign key (NOMEPARTITO)
204 references PARTITO (NOMEPARTITO)
205 on delete cascade on update cascade
206);