diff --git a/README.md b/README.md index df1671b..d34fa6d 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,28 @@ Projekt bazy danych dla firmy, która dostarcza i prowadzi samoobsługowe wypożyczalnie rowerów miejskich, będące alternatywą dla komunikacji publicznej. -**Celem** bazy danych jest wsparcie w organizowaniu usług wypożyczania rowerów miejskich, poprzez rejestrowanie wypożyczeń i zwrotów, kontrolę stanu poszczególnych stacji rowerowych i nadzorowanie systemu dostarczania i serwisowania rowerów. +**Celem** bazy danych jest wsparcie organizowania usług wypożyczania rowerów miejskich, poprzez rejestrowanie wypożyczeń i zwrotów, kontrolę stanu poszczególnych stacji rowerowych i rejestrowanie aktywności marketingowej względem rowerów. +## Diagram związków encji (ERD) +!()[erd.png] + + +!()[erd2.png] + +## Model relacyjny (RM) + +Oznaczenia: klucz podstawowy, *klucz obcy* +1. Uzytkownicy: UID, login, imie, nazwisko, email, data_od, ostatnia_aktywnosc, saldo_konta, status_konta +2. Rowery: RID, typ, stan +3. Stacje: SID, miejsca, miejsca_zajete, miejsca_wolne, dl_geogr, szer_geogr, osiedle, ulica, stan +4. Stan_stacji: *stacja*, *rower*, data_dodania +5. Wypozyczenia; WID, *uzytkownik*, *rower*, *stacja_wyp*, godzina_wyp, *stacja_zwrotu*, godzina zwrotu, status +6. Kampanie: nazwa, firma, rowery, od, do +7. Reklamy: *RID*, *reklama*, od, do + +!()[baza-schemat.PNG] + +## Opis funkcjonalności +* \ No newline at end of file diff --git a/baza-schemat.PNG b/baza-schemat.PNG new file mode 100644 index 0000000..d8b34ac Binary files /dev/null and b/baza-schemat.PNG differ diff --git a/create_db.sql b/create_db.sql new file mode 100644 index 0000000..f65c921 --- /dev/null +++ b/create_db.sql @@ -0,0 +1,91 @@ +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) +); + diff --git a/erd.png b/erd.png new file mode 100644 index 0000000..add0093 Binary files /dev/null and b/erd.png differ diff --git a/erd2.png b/erd2.png new file mode 100644 index 0000000..ba6ba11 Binary files /dev/null and b/erd2.png differ