Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:dydaktyka:ztb:2011:projekty:osk:logiczny [2011/08/04 21:09]
ztb2011
pl:dydaktyka:ztb:2011:projekty:osk:logiczny [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
-====== Projekt logiczny ​[In Progress]======+====== Projekt logiczny ======
  
 ===== Doprecyzowanie struktury bazy ===== ===== Doprecyzowanie struktury bazy =====
Linia 267: Linia 267:
 ALTER TABLE "​comments"​ ADD CONSTRAINT "​comments_users_fk"​ FOREIGN KEY ("​author"​) REFERENCES "​users"​("​id"​) ALTER TABLE "​comments"​ ADD CONSTRAINT "​comments_users_fk"​ FOREIGN KEY ("​author"​) REFERENCES "​users"​("​id"​)
  
-ALTER TABLE "​comments"​ ADD CONSTRAINT "​comments_interesting_places_fk"​ FOREIGN KEY ("​place_id"​) REFERENCES "​interesting_places"​("​id"​)+ALTER TABLE "​comments"​ ADD CONSTRAINT "​comments_interesting_places_fk"​ FOREIGN KEY ("​place_id"​) REFERENCES "​interesting_places"​("​id"​) ​on delete cascade
  
-ALTER TABLE "​interesting_places"​ ADD CONSTRAINT "​interesting_places_types_fk"​ FOREIGN KEY ("​type_id"​) REFERENCES "​types"​("​id"​)+ALTER TABLE "​interesting_places"​ ADD CONSTRAINT "​interesting_places_types_fk"​ FOREIGN KEY ("​type_id"​) REFERENCES "​types"​("​id"​) ​on delete cascade
  
-ALTER TABLE "​interesting_places"​ ADD CONSTRAINT "​interesting_places_users_fk"​ FOREIGN KEY ("​author"​) REFERENCES "​users"​("​id"​)+ALTER TABLE "​interesting_places"​ ADD CONSTRAINT "​interesting_places_users_fk"​ FOREIGN KEY ("​author"​) REFERENCES "​users"​("​id"​) ​on delete cascade
   ​   ​
 </​code>​ </​code>​
Linia 357: Linia 357:
   - students - tabela przechowująca studentów   - students - tabela przechowująca studentów
       * user_id - nr id studenta, klucz główny, klucz obcy do tabeli USERS (ID), INTEGER, NOT NULL       * user_id - nr id studenta, klucz główny, klucz obcy do tabeli USERS (ID), INTEGER, NOT NULL
-  - theoretical_lessons+  - theoretical_lessons ​- tabela z danymi na temat zajęć teoretycznych
       * id - nr id zajęć teoretycznych,​ klucz główny, INTEGER, NOT NULL       * id - nr id zajęć teoretycznych,​ klucz główny, INTEGER, NOT NULL
       * course_id - id kursu, klucz obcy do tabeli COUSRES (ID), INTEGER, NOT NULL       * course_id - id kursu, klucz obcy do tabeli COUSRES (ID), INTEGER, NOT NULL
Linia 384: Linia 384:
       * register_date - data rejestracji,​ TIMESTAMP ​     ​       * register_date - data rejestracji,​ TIMESTAMP ​     ​
       * last_login_date - data ostatniego logowania, TIMESTAMP       * last_login_date - data ostatniego logowania, TIMESTAMP
 +  - comments - tabela przechowujaca komentarze użytkowników dotyczące miejsc
 +      * id - nr id komentarza, klucz główny, INTEGER, NOT NULL
 +      * place_id - id miejsca, klucz obcy do tabeli INTERESTING_PLACES (ID), INTEGER, NOT NULL
 +      * comment - treść komentarza, VARCHAR(1024),​ NOT NULL
 +      * author - autro komentarza (jego id), klucz obcy do tabeli USERS (ID), INTEGER
 +      * date - data, TIMESTAMP
 +      * grade - ocena miejsca, INTEGER
 +  - interesting_places - tabela przechowujaca dane dotyczące ciekawych miejsc
 +      * id - nr id miejsca, klucz główny, INTEGER, NOT NULL
 +      * lattitude - szerokość geograficzna,​ FLOAT, NOT NULL
 +      * longitude - długość geograficzna,​ FLOAT, NOT NULL
 +      * type_id - id typu miejsca, klucz obcy do tabeli TYPES (ID), INTEGER`
 +      * description - opis miejsca, VARCHAR(512)
 +      * accepted - zmienna określająca,​ czy miejsce zostało poddane moderacji i zaakceptowane,​ BOOL, NOT NULL
 +      * city - miasto, w którym jest dane miejsce, VARCHAR(32),​ NOT NULL
 +      * author - użytkownik,​ który dodał miejsce, INTEGER, NOT NULL
 +      * date - data dodania, DATE, NOT NULL
 +  - types - tabela przechowujaca typy ciekawych miejsc
 +      * id - nr id typu, klucz główny, INTEGER, NOT NULL
 +      * name - nazwa typu, VARCHAR(256),​ NOT NULL
 +      * longitude - długość geograficzna,​ FLOAT, NOT NULL
 +      * description - opis typu, VARCHAR(1024)
  
 ===== Analiza zależności funkcyjnych i normalizacja tabel ===== ===== Analiza zależności funkcyjnych i normalizacja tabel =====
 +//​**Pierwsza postać normalna - 1NF**//
  
-===== Denormalizacja struktury tabel =====+Wszystkie atrybuty spełniają warunek atomiczności,​ czyli pierwsza postać normalna jest zachowana. 
 + 
 +**// 
 +Druga postać normalna - 2NF//** 
 + 
 +Baza jest w pierwszej postaci normalnej i każdy atrybut niekluczowy relacji jest w pełni funkcjonalnie zależny od wszystkich kluczy niezależnych. 
 + 
 +//**Trzecia postać normalna - 3NF**// 
 + 
 +Baza jest w drugiej postaci normalnej oraz brak jest w niej przechodnich zależności funkcjonalnych. Spełnia więc warunki 3NF.
  
 ===== Projektowanie operacji na danych ===== ===== Projektowanie operacji na danych =====
 +
 +Poniżej przedstawiono przykładowe instrukcje SQL realizujące funkcjonalności systemu.
  
 ** 1. Rejestracja kursanta: ** ** 1. Rejestracja kursanta: **
Linia 399: Linia 433:
  
 ** 2. Dodawanie kategorii: ** ** 2. Dodawanie kategorii: **
 +
 <​code>​ <​code>​
 insert into types(id, name, description) values (1, '​Ronda',​ '​Ronda,​ na których kursanci najczęściej popełniają błędy'​);​ insert into types(id, name, description) values (1, '​Ronda',​ '​Ronda,​ na których kursanci najczęściej popełniają błędy'​);​
Linia 433: Linia 468:
 </​code>​ </​code>​
  
-** 7. Usuwanie kategorii: **+** 7. Usuwanie miejsca: ** 
 + 
 +<​code>​ 
 +delete from interesting_places where id = 423; -- relacje są typu on delete cascade, komentarze do miejsca również się usuną 
 +</​code>​ 
 + 
 +** 8. Usuwanie kategorii: ** 
 + 
 +<​code>​ 
 +delete from types where id = 123; -- relacje są typu on delete cascade, więc wszystkie miejsca kategorii również się usuną (wraz z komentarzami) 
 +</​code>​ 
 + 
 +** 9. Wyszukiwanie miejsc w pewnym obszarze: **
  
 <​code>​ <​code>​
-delete ​from types where id = 123; -- relacja jest typu on delete cascade, więc wszystkie miejsca kategorii również się usuną+select * from interesting_places ​where latitude between 50.05 and 52.10 and longitute beetwen 19.95 and 23.10
 </​code>​ </​code>​
  
pl/dydaktyka/ztb/2011/projekty/osk/logiczny.1312484984.txt.gz · ostatnio zmienione: 2019/06/27 15:57 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0