· 8 years ago · May 09, 2018, 08:58 AM
1USE master;
2GO
3IF EXISTS(select 1 from master.dbo.sysdatabases where name = 'szpital') drop database szpital
4GO
5CREATE DATABASE szpital
6GO
7
8USE szpital;
9GO
10DROP TABLE IF EXISTS dziennik;
11DROP TABLE IF EXISTS zalecane_zabiegi;
12DROP TABLE IF EXISTS przeprowadzone_zabiegi;
13DROP TABLE IF EXISTS zabiegi;
14DROP TABLE IF EXISTS wizyty;
15DROP TABLE IF EXISTS pobyty;
16DROP TABLE IF EXISTS karty;
17DROP TABLE IF EXISTS pacjenci;
18DROP TABLE IF EXISTS lekarze;
19DROP TABLE IF EXISTS oddzialy;
20DROP TABLE IF EXISTS specjalnosci;
21
22
23
24/* Funkcja do sprawdzania czy pesel jest poprawny */
25DROP FUNCTION IF EXISTS SprawdzPoprawnoscPESEL;
26GO
27
28CREATE FUNCTION SprawdzPoprawnoscPESEL ( @pesel nchar(11) )
29RETURNS BIT
30AS BEGIN
31 IF ISNUMERIC(@pesel) = 0
32 RETURN 0
33 DECLARE @wagi AS TABLE
34 (
35 Pozycja tinyint IDENTITY(1,1) NOT NULL,
36 Weight tinyint NOT NULL
37 )
38 INSERT INTO @wagi VALUES (1), (3), (7), (9), (1), (3), (7), (9), (1), (3), (1)
39 IF (SELECT SUM(CONVERT(TINYINT, SUBSTRING(@pesel, Pozycja, 1)) * Weight) % 10 FROM @wagi ) = 0
40 RETURN 1
41 RETURN 0
42END
43GO
44
45/* Tworzenie tabel */
46CREATE TABLE oddzialy (
47 oddzialID varchar(50) NOT NULL CONSTRAINT oddzial_PK PRIMARY KEY,
48 budynek varchar(10) NOT NULL,
49 maxMiejsc int NOT NULL
50);
51GO
52CREATE TABLE pacjenci (
53 pacjentID int IDENTITY(1,1) NOT NULL CONSTRAINT pacjent_PK PRIMARY KEY,
54 imie varchar(25) NOT NULL,
55 nazwisko varchar(25) NOT NULL,
56 adres varchar(100) NOT NULL,
57 plec CHAR(1) NOT NULL CONSTRAINT pacjent_plec_CH CHECK(plec='K' OR plec='M'),
58 dataUr SMALLDATETIME,
59 PESEL CHAR(11) NOT NULL CONSTRAINT checkPesel_CH CHECK (dbo.SprawdzPoprawnoscPESEL(PESEL) = 1),
60 telefon VARCHAR(15)
61);
62GO
63CREATE TABLE specjalnosci (
64 specjalnoscID int IDENTITY(1,1) NOT NULL CONSTRAINT specjalnosc_PK PRIMARY KEY,
65 specjalnosc_nazwa varchar(50) NOT NULL,
66 placa_min money,
67 placa_max money
68);
69GO
70CREATE TABLE lekarze (
71 lekarzID int NOT NULL PRIMARY KEY,
72 imie varchar(25) NOT NULL,
73 nazwisko varchar(25) NOT NULL,
74 plec CHAR(1) NOT NULL CONSTRAINT lekarz_plec_CH CHECK(plec='K' OR plec='M'),
75 dataUrodzenia smalldatetime NOT NULL,
76 dataZatrudnienia smalldatetime NOT NULL,
77 pensja MONEY NOT NULL,
78 specjalnoscID int NOT NULL FOREIGN KEY (specjalnoscID) REFERENCES specjalnosci (specjalnoscID)
79);
80GO
81CREATE TABLE karty (
82 kartaID int IDENTITY(1,1) NOT NULL PRIMARY KEY,
83 pacjentID int NOT NULL FOREIGN KEY (pacjentID) REFERENCES pacjenci (pacjentID),
84 oddzialID varchar(50) NOT NULL CONSTRAINT oddzialID_FK_CH FOREIGN KEY (oddzialID) REFERENCES oddzialy (oddzialID)
85
86);
87GO
88CREATE TABLE pobyty (
89 pobytID int IDENTITY(1,1) NOT NULL PRIMARY KEY,
90 kartaID int NOT NULL FOREIGN KEY (kartaID) REFERENCES karty (kartaID),
91 dataOd DATE NOT NULL,
92 dataDo DATE
93);
94GO
95CREATE TABLE zabiegi (
96 zabiegID int IDENTITY(1,1) NOT NULL PRIMARY KEY,
97 nazwa varchar(100) NOT NULL
98);
99GO
100CREATE TABLE wizyty (
101 wizytaID int IDENTITY(1,1) NOT NULL PRIMARY KEY,
102 pobytID int NOT NULL FOREIGN KEY (pobytID) REFERENCES pobyty (pobytID),
103 lekarzID int NOT NULL FOREIGN KEY (lekarzID) REFERENCES lekarze (lekarzID),
104 dataWizyty DATE NOT NULL,
105 zalecenia varchar(300)
106);
107GO
108CREATE TABLE przeprowadzone_zabiegi(
109 przeprowadzonyzabiegID int IDENTITY(1,1) NOT NULL PRIMARY KEY,
110 pobytID int NOT NULL FOREIGN KEY (pobytID) REFERENCES pobyty (pobytID),
111 IDzabiegu int NOT NULL FOREIGN KEY (IDzabiegu) REFERENCES zabiegi (zabiegID),
112 dataZabiegu DATE NOT NULL,
113 wizytaID int NOT NULL FOREIGN KEY (wizytaID) REFERENCES wizyty (wizytaID)
114);
115GO
116
117CREATE TABLE zalecane_zabiegi(
118 zalecanyzabiegID int IDENTITY(1,1) NOT NULL PRIMARY KEY,
119 pobytID int NOT NULL FOREIGN KEY (pobytID) REFERENCES pobyty (pobytID),
120 IDzabiegu int NOT NULL FOREIGN KEY (IDzabiegu) REFERENCES zabiegi (zabiegID),
121 wizytaID int NOT NULL FOREIGN KEY (wizytaID) REFERENCES wizyty (wizytaID)
122);
123GO
124CREATE TABLE dziennik (
125 nazwaTablicy varchar(30) NOT NULL,
126 data DATE,
127 liczbaWierszy int,
128 opis varchar(300)
129);
130GO