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) );