-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtables
More file actions
154 lines (144 loc) · 5.07 KB
/
Copy pathtables
File metadata and controls
154 lines (144 loc) · 5.07 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
CREATE TABLE PRACOWNICY_INFORMACJE
(
id_pracownika int,
ulica varchar2(20),
numer_domu number(3) not null,
numer_mieszkania number(3),
kod_pocztowy varchar2(6) not null,
miejscowosc varchar2(20) not null,
pesel varchar2(11) unique,
CONSTRAINT kg_prac_inf PRIMARY KEY (id_pracownika),
CONSTRAINT spr_informacji_prac_inf CHECK
(
REGEXP_LIKE (pesel,'^[0-9]{11,11}$') and
REGEXP_LIKE (kod_pocztowy,'^[0-9]{2,2}\-[0-9]{3,3}$') and
miejscowosc = INITCAP(miejscowosc)
)
);
CREATE TABLE PIELEGNIARKA
(
id_pielegniarki INT,
imie varchar2(20) not null,
nazwisko varchar2(20) not null,
wiek number(2) not null,
staz number(2) not null,
telefon number(9) not null,
CONSTRAINT kg_pielegniarka PRIMARY KEY (id_pielegniarki),
CONSTRAINT ko_pielegniarka foreign key(id_pielegniarki) references pracownicy_informacje(id_pracownika) on delete cascade,
CONSTRAINT sprawdzenie_pielegniarka CHECK
(
imie = INITCAP(imie) and
nazwisko = INITCAP(nazwisko)
and telefon LIKE '_________'
and wiek >= 18
and staz >= 0
)
);
CREATE TABLE DYZURY
(
id_dyzuru INT,
id_pracownika INT,
dzien_tygodnia varchar2(15) not null,
godzina_rozpoczecia interval day(0) to second,
godzina_zakonczenia interval day(0) to second,
CONSTRAINT kg_dyzury PRIMARY KEY (id_dyzuru),
CONSTRAINT ko_dyzury FOREIGN KEY (id_pracownika) REFERENCES pracownicy_informacje(id_pracownika) ON DELETE CASCADE,
CONSTRAINT dyz_poprawnosc CHECK
(
godzina_rozpoczecia < godzina_zakonczenia
and dzien_tygodnia in ('Poniedzialek', 'Wtorek', 'Sroda', 'Czwartek', 'Piatek')
)
);
CREATE TABLE lekarz
(
id_lekarza INT,
imie varchar2(20) not null,
nazwisko varchar2(20) not null,
wiek number(2) not null,
numer_sali number(2) not null,
telefon number(9) not null,
staz number(2) not null,
CONSTRAINT kg PRIMARY KEY (id_lekarza),
CONSTRAINT ko_lekarz foreign key(id_lekarza) references pracownicy_informacje(id_pracownika) ON DELETE CASCADE,
CONSTRAINT sprawdzenie_lekarz CHECK
(
imie = INITCAP(imie) and
nazwisko = INITCAP(nazwisko)
and telefon LIKE '_________'
and staz >= 0
and numer_sali > 0
and wiek > 20
)
);
CREATE TABLE pacjent(
pesel VARCHAR(11) NOT NULL,
imie VARCHAR(15) NOT NULL ,
nazwisko VARCHAR(20) NOT NULL ,
ulica VARCHAR(20) NOT NULL ,
numer_domu NUMBER(3) NOT NULL ,
numer_mieszkania NUMBER(3),
miejscowosc VARCHAR(20) NOT NULL ,
kod_pocztowy VARCHAR(6) NOT NULL ,
CONSTRAINT pk_pacjent PRIMARY KEY (pesel),
CONSTRAINT check_pacjent CHECK (
REGEXP_LIKE (pesel,'^[0-9]{11,11}$') AND
imie = INITCAP(imie) AND
nazwisko = INITCAP(nazwisko) AND
miejscowosc = INITCAP(miejscowosc) AND
REGEXP_LIKE (kod_pocztowy,'^[0-9]{2,2}\-[0-9]{3,3}$')
)
);
CREATE TABLE recepta(
nr_recepty INT NOT NULL,
id_lekarza INT NOT NULL ,
pesel_pacjenta VARCHAR(11) NOT NULL ,
data DATE DEFAULT SYSDATE,
opis VARCHAR(200) NOT NULL ,
CONSTRAINT pk_recepta PRIMARY KEY(nr_recepty),
CONSTRAINT fk1_recepta FOREIGN KEY (id_lekarza) REFERENCES lekarz(id_lekarza) ON DELETE CASCADE,
CONSTRAINT fk2_recepta FOREIGN KEY (pesel_pacjenta) REFERENCES pacjent(pesel) ON DELETE CASCADE,
CONSTRAINT check_recepta CHECK (REGEXP_LIKE (pesel_pacjenta,'^[0-9]{11,11}$'))
);
CREATE TABLE skierowanie(
nr_skierowania INT NOT NULL,
id_lekarza INT NOT NULL ,
pesel_pacjenta VARCHAR(11) NOT NULL ,
data DATE DEFAULT SYSDATE,
cel_skierowania VARCHAR(200) NOT NULL,
opis_skierowania VARCHAR(200),
CONSTRAINT pk_skierowanie PRIMARY KEY(nr_skierowania),
CONSTRAINT fk1_skierowanie FOREIGN KEY (id_lekarza) REFERENCES lekarz(id_lekarza) ON DELETE CASCADE,
CONSTRAINT fk2_skierowanie FOREIGN KEY (pesel_pacjenta) REFERENCES pacjent(pesel) ON DELETE CASCADE,
CONSTRAINT check_skierowanie CHECK (REGEXP_LIKE (pesel_pacjenta,'^[0-9]{11,11}$') )
);
CREATE TABLE wizyta(
id_wizyty INT NOT NULL,
id_lekarza INT NOT NULL ,
pesel_pacjenta VARCHAR(11) NOT NULL ,
data_godzina_wizyty TIMEStAMP DEFAULT SYSDATE,
opis VARCHAR(200) NOT NULL,
CONSTRAINT pk_wizyta PRIMARY KEY(id_wizyty),
CONSTRAINT fk1_wizyta FOREIGN KEY (id_lekarza) REFERENCES lekarz(id_lekarza) ON DELETE CASCADE,
CONSTRAINT fk2_wizyta FOREIGN KEY (pesel_pacjenta) REFERENCES pacjent(pesel) ON DELETE CASCADE,
CONSTRAINT check_wizyta CHECK (REGEXP_LIKE (pesel_pacjenta,'^[0-9]{11,11}$') )
);
CREATE TABLE cennik_wizyt_domowych(
typ_wizyty int NOT NULL,
cena FLOAT NOT NULL,
opis VARCHAR(200) NOT NULL,
CONSTRAINT pk_cennik PRIMARY KEY(typ_wizyty),
CONSTRAINT check_cennik CHECK (cena > 0)
);
CREATE TABLE wizyty_domowe(
id_wizyty INT NOT NULL,
id_lekarza INT NOT NULL ,
pesel_pacjenta VARCHAR(11) NOT NULL ,
data_godzina_wizyty TIMEStAMP DEFAULT SYSDATE,
opis VARCHAR(200) NOT NULL,
typ_wizyty INT NOT NULL,
CONSTRAINT pk_wizyta_d PRIMARY KEY(id_wizyty),
CONSTRAINT fk1_wizyta_d FOREIGN KEY (id_lekarza) REFERENCES lekarz(id_lekarza) ON DELETE CASCADE,
CONSTRAINT fk2_wizyta_d FOREIGN KEY (pesel_pacjenta) REFERENCES pacjent(pesel) ON DELETE CASCADE,
CONSTRAINT fk3_wizyta_d FOREIGN KEY (typ_wizyty) REFERENCES cennik_wizyt_domowych(typ_wizyty) ON DELETE CASCADE,
CONSTRAINT check_wizyta_d CHECK (REGEXP_LIKE (pesel_pacjenta,'^[0-9]{11,11}$') )
);