Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:sbd:2012:projekty:sieci:start:logiczny [2012/12/04 23:15] sbd12 |
pl:dydaktyka:sbd:2012:projekty:sieci:start:logiczny [2019/06/27 15:50] (aktualna) |
====== 5. Słowniki danych====== | ====== 5. Słowniki danych====== |
| |
{{:pl:dydaktyka:sbd:2012:projekty:sieci:start:slowniki.png|}} | |
| |
| ^ **Nazwa** ^ **Zastosowanie** ^ **Wartości** ^ |
| | Port | Port może być zarówno w ścianie (wtedy referencja do pomieszczenia) jak i w panelu, wtedy referencja do panelu. | nazwa_portu: Liczba naturalna, nie globalna. Wraz z oznaczeniem panelu stworzy pełny identyfikator | |
| | Typ portu | Rozróżnienie, gdzie port się znajduje | opis_portu: enum ścienny/panelowy| |
| | Panel krosowniczy | Grupuje gniazdka | Nazwa_panelu: textNajczęściej będzie to jedna litera | |
| | Urządzenie końcowe | Urządzenie podłączane do sieci. Może mieć jedno lub wiele gniazdek i interfejsów sieciowych | adres_mac: macaddr, adres_IP: inet, maska_podsieci: inet, domyslna_droga:inet, adres_dns_glowny:inet, adres_dns_drugorzedny:inet | |
| | Typ urządzenia końcowego | Określa typ urządzenia podłączonego do sieci. Pozwala opisać urządzenie, np. czy jest to ruter czy komputer | Opis: text | |
| | Switch | Urządzenie sieciowe | Opis:text, adres_Mac:macaddr | |
| | Szafa | Grupuje panele krosownicze | Nazwa:text | |
| | Pomieszczenie | Grupuje szafy, gniazdka i urządzenia | numer_pomieszczenia:integer | |
| | Piętro | Grupuje pomieszczenia | numer_pietra:integer pole_techniczne:text | |
| | Typ pomieszczenia | Określa typ pomieszczenia | Opis:text | |
| | VLAN | Grupuje gniazdka w switchu w wirtualne sieci lokalne | nazwa_vlanu:text, opis:text | |
| | Port2Port | Opisuje połączenie między portami | REL_port1<REL_port2 | |
| | Typ połączenia | Opisuje typ połączenia port2port | Opis:text | |
| |
====== 6. Analiza zależności funkcyjnych i normalizacja tabel====== | ====== 6. Analiza zależności funkcyjnych i normalizacja tabel====== |
| ^Nazwa ^ Atrybuty niekluczowe ^ Postać Normalna ^ |
| | Port | Klucz:P_ID , reszta: niekluczowe zależne od klucza | 3NF | |
| | Typ portu | Klucz:TP_ID, , reszta: niekluczowe zależne od klucza | 3NF | |
| | Panel Krosowniczy | Klucz:PK_ID , reszta: niekluczowe zależne od klucza | 3NF | |
| | Urządzenie końcowe | Klucz:UK_ID , reszta: niekluczowe zależne od klucza | 3NF | |
| | Typ urządzenia końcowego | Klucz:TUP_ID , reszta: niekluczowe zależne od klucza | 3NF | |
| | Switch | Klucz:S_ID , reszta: niekluczowe zależne od klucza | 3NF | |
| | Szafa | Klucz:S_ID , reszta: niekluczowe zależne od klucza | 3NF | |
| | Pomieszczenie | Klucz:P_ID , reszta: niekluczowe zależne od klucza | 3NF | |
| | Piętro | Klucz:P_ID , reszta: niekluczowe zależne od klucza | 3NF | |
| | Typ pomieszczenia | Klucz:TP_ID , reszta: niekluczowe zależne od klucza | 3NF | |
| | VLAN | Klucz:V_ID , reszta: niekluczowe zależne od klucza | 3NF | |
| | Port2Port | Klucz:PP_ID , reszta: niekluczowe zależne od klucza | 3NF | |
| | Typ połączenia | Klucz:TP_ID , reszta: niekluczowe zależne od klucza | 3NF | |
| |
{{:pl:dydaktyka:sbd:2012:projekty:sieci:start:normalizacja.png|}} | |
| |
Uzasadnienie: | Uzasadnienie: |
| |
# Wyszukanie wszystkich gniazdek na danym piętrze | # Wyszukanie wszystkich gniazdek na danym piętrze |
>>> Port.objects.filter(port_type='R', room__floor__number=1 ) | >>> Port.objects.filter(port_type='R', room__floor__number=1) |
SELECT "main_port"."id", "main_port"."number", "main_port"."room_id", "main_port"."port_type", "main_port"."vlan_id", "main_port"."switch_id", "main_port"."terminal_id", "main_port"."patch_panel_id" FROM "main_port" INNER JOIN "main_room" ON ("main_port"."room_id" = "main_room"."id") INNER JOIN "main_floor" ON ("main_room"."floor_id" = "main_floor"."id") WHERE ("main_floor"."number" = 1 AND "main_port"."port_type" = R ) | SELECT "main_port"."id", "main_port"."number", "main_port"."room_id", "main_port"."port_type", "main_port"."vlan_id", "main_port"."switch_id", "main_port"."terminal_id", "main_port"."patch_panel_id" FROM "main_port" INNER JOIN "main_room" ON ("main_port"."room_id" = "main_room"."id") INNER JOIN "main_floor" ON ("main_room"."floor_id" = "main_floor"."id") WHERE ("main_floor"."number" = 1 AND "main_port"."port_type" = R ) |
| |
# Wyszukanie wszystkich połączeń między portami podanego switcha (SW1), a portami należącymi do patch paneli. | # Wyszukanie wszystkich połączeń między portami podanego switcha (SW1), a portami należącymi do patch paneli. |
>>> Port2Port.objects.filter(port1_id__port_type='S', port1_id__switch__name='SW1', port2_id__port_type='P') | Port2Port.objects.filter(port2_id__port_type='S', port2_id__switch__name='SW1', port1_id__port_type='P') | >>> Port2Port.objects.filter(port1_id__port_type='S', port1_id__switch__name='SW1', port2_id__port_type='P') | Port2Port.objects.filter(port2_id__port_type='S', port2_id__switch__name='SW1', port1_id__port_type='P') |
SELECT "main_port2port"."id", "main_port2port"."port1_id", "main_port2port"."port2_id", "main_port2port"."connection_type_id" FROM "main_port2port" INNER JOIN "main_port" ON ("main_port2port"."port1_id" = "main_port"."id") LEFT OUTER JOIN "main_switch" ON ("main_port"."switch_id" = "main_switch"."id") INNER JOIN "main_port" T4 ON ("main_port2port"."port2_id" = T4."id") LEFT OUTER JOIN "main_switch" T5 ON (T4."switch_id" = T5."id") WHERE(("main_switch"."name" = SW1 AND "main_port"."port_type" = S AND T4."port_type" = P ) OR (T4."port_type" = S AND "main_port"."port_type" = P AND T5."name" = SW1 )) | SELECT "main_port2port"."id", "main_port2port"."port1_id", "main_port2port"."port2_id", "main_port2port"."connection_type_id" FROM "main_port2port" INNER JOIN "main_port" ON ("main_port2port"."port1_id" = "main_port"."id") LEFT OUTER JOIN "main_switch" ON ("main_port"."switch_id" = "main_switch"."id") INNER JOIN "main_port" T4 ON ("main_port2port"."port2_id" = T4."id") LEFT OUTER JOIN "main_switch" T5 ON (T4."switch_id" = T5."id") WHERE ( ( "main_switch"."name" = SW1 AND "main_port"."port_type" = S AND T4."port_type" = P ) OR (T4."port_type" = S AND "main_port"."port_type" = P AND T5."name" = SW1 )) |
| |
# Wyszukanie wszystkich połączeń należących do danego VLANA (VLAN1) oraz do urządzenia końcowego | ===== Wyszukanie wszystkich połączeń należących do danego VLANA (VLAN1) oraz do urządzenia końcowego ===== |
| <code python> |
>>> Port2Port.objects.filter(port1_id__vlan__name='VLAN1', port2_id__port_type='T') | Port2Port.objects.filter(port2_id__vlan__name='VLAN1', port1_id__port_type='T') | >>> Port2Port.objects.filter(port1_id__vlan__name='VLAN1', port2_id__port_type='T') | Port2Port.objects.filter(port2_id__vlan__name='VLAN1', port1_id__port_type='T') |
SELECT "main_port2port"."id", "main_port2port"."port1_id", "main_port2port"."port2_id", "main_port2port"."connection_type_id" FROM "main_port2port" INNER JOIN "main_port" ON ("main_port2port"."port1_id" = "main_port"."id") LEFT OUTER JOIN "main_vlan" ON ("main_port"."vlan_id" = "main_vlan"."id") LEFT OUTER JOIN "main_port" T4 ON ("main_port2port"."port2_id" = T4."id") LEFT OUTER JOIN "main_vlan" T5 ON (T4."vlan_id" = T5."id") WHERE(("main_vlan"."name" = VLAN1 AND T4."port_type" = T ) OR (T5."name" = VLAN1 AND "main_port"."port_type" = T )) | </code> |
| |
| <code sql> |
| SELECT "main_port2port"."id", "main_port2port"."port1_id", "main_port2port"."port2_id", "main_port2port"."connection_type_id" FROM "main_port2port" INNER JOIN "main_port" ON ("main_port2port"."port1_id" = "main_port"."id") LEFT OUTER JOIN "main_vlan" ON ("main_port"."vlan_id" = "main_vlan"."id") LEFT OUTER JOIN "main_port" T4 ON ("main_port2port"."port2_id" = T4."id") LEFT OUTER JOIN "main_vlan" T5 ON (T4."vlan_id" = T5."id") WHERE ( ("main_vlan"."name" = VLAN1 AND T4."port_type" = T ) OR (T5."name" = VLAN1 AND "main_port"."port_type" = T )) |
| </code> |