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:sbd:2009:projekty:mpk-gis:projekt_logiczny [2010/01/19 17:04]
sbd09
pl:dydaktyka:sbd:2009:projekty:mpk-gis:projekt_logiczny [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
-=====   ​Projektowanie ​ +====== Projekt logiczny ====== 
-=====   ​Level Headline ​=====+ 
 + 
 + 
 +===== -. Projekt tabel, kluczy, kluczy obcych, powiązań między tabelami, indeksów w oparciu o zdefiniowany diagram ERD  ===== 
 +=== Diagram ERD ==
 + 
 +{{:​pl:​dydaktyka:​sbd:​2009:​projekty:​mpk-gis:​bazy_mpk_gis.jpeg|}} 
 + 
 +Projekt bazy danych w języku SQL: 
 + 
 +<code sql> 
 +CREATE TABLE Stops ( id SERIAL , name varchar(40) UNIQUE NOT NULL, time smallint DEFAULT 0 ,PRIMARY KEY (id) ); 
 +CREATE TABLE Small_Stops (id SERIAL, id_stop smallint REFERENCES stops (id), add_information varchar (40), PRIMARY KEY (id)); 
 +SELECT AddGeometryColumn('',​ '​small_stops',​ '​coordinate',​ -1, '​POINT', ​2); 
 +CREATE TABLE Lines (id SERIAL, num Smallint NOT NULL, start_stop Smallint REFERENCES small_stops (id), end_stop Integer REFERENCES small_stops (id), toward BIT(1), PRIMARY KEY (id)); 
 +CREATE INDEX num_idx ON lines ( num ); 
 +CREATE TABLE Stop_Lines (id serial,​id_line Integer REFERENCES lines (id), stop_id Integer REFERENCES small_stops (id), next Integer REFERENCES small_stops (id),​PRIMARY KEY (id)); 
 +CREATE INDEX id_line_idx ON stop_lines ( id_line ); 
 +CREATE TABLE Ways (id_way Smallint NOT NULL UNIQUE, PRIMARY KEY (id_way) ); 
 +SELECT AddGeometryColumn('',​ '​way','​line',​-1,'​LINESTRING',​2);​ 
 +CREATE TABLE Route_Lines (id SERIAL, id_line Integer REFERENCES lines (id), id_way Integer REFERENCES ways (id_way), next Integer REFERENCES ways (id_way), PRIMARY KEY (id)); 
 +CREATE INDEX id_line_idx2 ON route_lines ( id_line ); 
 +</​code>​ 
 + 
 +===== -. Słowniki danych ​ ===== 
 + 
 +**stops** 
 +  * id - klucz podstawowym,​ liczba z zakresu integer, unikalna, 
 +samoczynnie zwiększająca się 
 +  * name - nazwa przystanku, wartość tekstowa o długości do 40 znaków, unikalna 
 + 
 +**small_stops** 
 +  * id - klucz podstawowy, liczba z zakresu integer, unikalna, 
 +samoczynnie zwiększająca się 
 +  * id_stop - klucz wskazujący na wiersz w tabeli stop, liczba z zakresu integer 
 +  * add_information - dodatkowe informacje o przystanku, wartość 
 +tekstowa o długości do 40 znaków 
 + 
 +**lines** 
 +  * id - klucz podstawowy, liczba z zakresu integer, unikalna, 
 +samoczynnie zwiększająca się 
 +  * id_line - klucz wskazujący na wiersz w tabeli line, liczba z zakresu 
 +integer, wartość niepusta 
 +  * start_stop - klucz wskazujący na przystanek początkowy linii, liczba 
 +z zakresu integer 
 +  * toward - kierunek w którym poruszają się pojazdy 
 +  * end_stop - klucz wskazujący na przystanek końcowy linii, liczba z 
 +zakresu integer 
 + 
 +**stop_lines** 
 +  * id - klucz podstawowy, liczba z zakresu integer, unikalna, 
 +samoczynnie zwiększająca się 
 +  * stop_id - identyfikator przystanku, klucz wskazujący na wiersz w 
 +tabeli small_stop, liczba z zakresu integer 
 +  * id_line - identyfikator linii, klucz wskazujący na wiersz w tabeli 
 +line, liczba z zakresu integer 
 +  * next - identyfikator kolejnego przystanku, klucz wskazujący na 
 +wiersz w tabeli small_stop, liczba z zakresu integer 
 + 
 +**ways** 
 +  * id_way - klucz podstawowy, liczba z zakresu integer, wartość 
 +unikalna, niepusta, samoczynnie zwiększająca się 
 + 
 +**route_lines** 
 +  * id - klucz podstawowy, liczba z zakresu integer, unikalna, 
 +samoczynnie zwiększająca się 
 +  * id_line - identyfikator linii, klucz wskazujący na wiersz w tabeli 
 +line, liczba z zakresu integer 
 +  * id_way - identyfikator kolejnego odcinka trasy, klucz wskazujący na 
 +wiersz w tabeli way, liczba z zakresu integer 
 +  * next - identyfikator kolejnego przystanku, klucz wskazujący na 
 +wiersz w tabeli way, liczba z zakresu integer 
 + 
 + 
 +===== -. Analiza zależności funkcyjnych i normalizacja tabel ===== 
 +Stworzony przez nas schemat bazy danych spełnia warunki postaci normalnej (1NF, 2NF, 3NF). Dane są atomiczne i nie występuje redundancja. Używamy tylko kluczy jednoargumentowych. 
 + 
 +===== -. Projektowanie operacji na danych ===== 
 +=== Stops === 
 +Dodawanie przystanku:​ 
 +<​code>​ "​INSERT INTO stops (name) VALUES ('"​.$name."'​)"</​code>​ 
 +Usunięcie przystanku:​ 
 +<​code>​ "​DELETE FROM stops WHERE id=$ID"</​code>​ 
 +Uaktualnie rekordu: 
 +<​code>​ "​UPDATE stops SET name='"​.$new_name."'​ WHERE id=$id"</​code>​ 
 +=== Small_Stops === 
 +Pobranie współrzędnych punktów: 
 +<​code>"​SELECT ST_AsText(coordinate) AS coordinate FROM small_stops WHERE id=$id"</​code>​ 
 +Dodanie nowego przystanku:​ 
 +<​code>"​INSERT INTO small_stops (id_stop,​add_information,​ coordinate) VALUES ($id,'"​.$add_information."',​ST_GeomFromText('"​.$point."'​))"</​code>​ 
 +Uaktualnie rekordu: 
 +<​code>​ "​UPDATE small_stops SET add_information='"​.$add_information_update."',​id_stop=$id_stop_update,​ coordinate=ST_GeomFromText('"​.$new_coordinate."',​ -1) WHERE id=$id"</​code>​ 
 +Wyszukiwanie przystanków w obrębie danego punktu: 
 +<​code>​SELECT * FROM small_stops WHERE ST_DWithin(coordinate,​ '​POINT(1000 1000)',​ 100.0); 
 +</​code>​ 
 +=== Ways === 
 +Dodanie nowej drogi: 
 +<​code>"​INSERT INTO way (id_way,​line) VALUES($id_way,​ ST_GeomFromText('​LINESTRING $this->​to_add ',​-1))"</​code>​ 
 +Uaktualnie rekordu: 
 +<​code>​ "​UPDATE way SET line= ST_GeomFromText('​LINESTRING $this->​to_add',​-1) WHERE id_way=$id_way"</​code>​
  
pl/dydaktyka/sbd/2009/projekty/mpk-gis/projekt_logiczny.1263917060.txt.gz · ostatnio zmienione: 2019/06/27 15:55 (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