92 lines
2.3 KiB
Transact-SQL
92 lines
2.3 KiB
Transact-SQL
USE master;
|
|
CREATE DATABASE Rowerownia;
|
|
GO
|
|
|
|
USE Rowerownia;
|
|
GO
|
|
|
|
SET LANGUAGE polski;
|
|
GO
|
|
|
|
CREATE TABLE Uzytkownicy
|
|
(
|
|
UID int PRIMARY KEY,
|
|
login varchar(16) UNIQUE NOT NULL,
|
|
imie varchar(32) NOT NULL,
|
|
nazwisko varchar(64) NOT NULL,
|
|
email varchar(64) UNIQUE NOT NULL,
|
|
data_od datetime NOT NULL,
|
|
ostatnia_aktywnosc datetime,
|
|
saldo_konta money NOT NULL DEFAULT 0,
|
|
status_konta varchar(16) NOT NULL,
|
|
CONSTRAINT ck_dane_osobowe_litery CHECK ((nazwisko LIKE '[A-Z]%') AND (imie LIKE '[A-Z]%')),
|
|
CONSTRAINT ck_mail CHECK (email LIKE '%@%'),
|
|
CONSTRAINT ck_status_konta CHECK (email LIKE '%@%')
|
|
);
|
|
|
|
|
|
CREATE TABLE Rowery
|
|
(
|
|
RID int PRIMARY KEY,
|
|
typ INT NOT NULL,
|
|
stan varchar(32) NOT NULL DEFAULT('sprawny'),
|
|
CONSTRAINT ck_bike_type CHECK (typ < 4), -- zalezne od liczby typow rowerow
|
|
CONSTRAINT ck_stan_roweru CHECK (stan in ('sprawny','uszkodzony', 'w naprawie', 'zagubiony'))
|
|
);
|
|
|
|
|
|
CREATE TABLE Stacje
|
|
(
|
|
SID int PRIMARY KEY,
|
|
miejsca int NOT NULL,
|
|
miejsca_zajete int NOT NULL,
|
|
miejsca_wolne int NOT NULL,
|
|
dl_geogr float,
|
|
szer_geogr float,
|
|
osiedle varchar(64),
|
|
ulica varchar(64),
|
|
stan varchar(16),
|
|
CONSTRAINT ck_stan_stacji CHECK (stan IN ('nieczynna', 'pełna', 'pusta', 'niepełna')),
|
|
CONSTRAINT ck_miejsca CHECK (miejsca_wolne + miejsca_zajete <= miejsca)
|
|
);
|
|
|
|
CREATE TABLE Wypozyczenia
|
|
(
|
|
WID int PRIMARY KEY,
|
|
uzytkownik int FOREIGN KEY REFERENCES Uzytkownicy(UID),
|
|
rower int FOREIGN KEY REFERENCES Rowery(RID),
|
|
stacja_wyp int FOREIGN KEY REFERENCES Stacje(SID),
|
|
godzina_wyp datetime NOT NULL,
|
|
stacja_zwrotu int FOREIGN KEY REFERENCES Stacje(SID),
|
|
godzina_zwrotu datetime,
|
|
status varchar(32),
|
|
CONSTRAINT ck_status CHECK (status IN ('zakończone', 'aktywne'))
|
|
);
|
|
|
|
CREATE TABLE Stan_stacji
|
|
(
|
|
stacja int FOREIGN KEY REFERENCES Stacje(SID),
|
|
rower int FOREIGN KEY REFERENCES Rowery(RID),
|
|
data_dodania datetime
|
|
);
|
|
|
|
CREATE TABLE Kampanie
|
|
(
|
|
nazwa varchar(64) PRIMARY KEY,
|
|
firma varchar(64) NOT NULL,
|
|
rowery int, -- liczba rowerow
|
|
od datetime,
|
|
do datetime,
|
|
CONSTRAINT ck_date CHECK(od < do)
|
|
);
|
|
|
|
CREATE TABLE Reklamy
|
|
(
|
|
RID int FOREIGN KEY REFERENCES Rowery(RID),
|
|
reklama varchar(64) FOREIGN KEY REFERENCES Kampanie(nazwa),
|
|
od datetime,
|
|
do datetime,
|
|
CONSTRAINT ck_data CHECK(od < do)
|
|
);
|
|
|