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 21:27]
sbd09
pl:dydaktyka:sbd:2009:projekty:mpk-gis:projekt_logiczny [2019/06/27 15:50] (aktualna)
Linia 8: Linia 8:
 {{:​pl:​dydaktyka:​sbd:​2009:​projekty:​mpk-gis:​bazy_mpk_gis.jpeg|}} {{:​pl:​dydaktyka:​sbd:​2009:​projekty:​mpk-gis:​bazy_mpk_gis.jpeg|}}
  
-<​code>​ +Projekt bazy danych w języku SQL: 
-CREATE TABLE stop ( id serial ​, name varchar(40) UNIQUE,​PRIMARY KEY (id) ); + 
-CREATE TABLE small_stop ​(id serial, id_stop ​integer ​REFERENCES ​stop (id), add_information varchar (40), PRIMARY KEY (id)); +<​code ​sql
-SELECT AddGeometryColumn('',​ 'small_stop', '​coordinate',​ -1, '​POINT',​ 2); +CREATE TABLE Stops ( id SERIAL ​, name varchar(40) UNIQUE ​NOT NULL, time smallint DEFAULT 0 ,PRIMARY KEY (id) ); 
-CREATE TABLE line (id SERIAL, ​id_line INTEGER ​NOT NULL, start_stop ​Integer, toward BIT(1) ​REFERENCES ​small_stop ​(id), end_stop Integer REFERENCES ​small_stop ​(id), PRIMARY KEY (id)); +CREATE TABLE Small_Stops ​(id SERIAL, id_stop ​smallint ​REFERENCES ​stops (id), add_information varchar (40), PRIMARY KEY (id)); 
-CREATE TABLE stop_line ​(id serial, ​stop_id ​Integer REFERENCES ​small_stop ​(id), id_line ​Integer REFERENCES ​line (id_line), next Integer REFERENCES ​small_stop ​(id)); +SELECT AddGeometryColumn('',​ 'small_stops', '​coordinate',​ -1, '​POINT',​ 2); 
-CREATE TABLE way (id_way ​INTEGER ​NOT NULL UNIQUE, PRIMARY KEY (id_way) );+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);​ SELECT AddGeometryColumn('',​ '​way','​line',​-1,'​LINESTRING',​2);​
-CREATE TABLE route_line ​(id SERIAL, id_line Integer REFERENCES ​line (id), id_way Integer REFERENCES ​way (id), next Integer REFERENCES ​way (id), PRIMARY KEY (id));+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>​ </​code>​
  
 ===== -. Słowniki danych ​ ===== ===== -. 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 ===== ===== -. 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 ===== ===== -. 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.1263932846.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