Baza danych SQL, model SQL

0

Witam wszystkich,
Mam do zaprojektowania i wdrożenia bazę danych, po krótcę wytłumaczę całą idee, potrzebuję porady doświadczonego programisty/projektanta bd otóż fizycznie wygląda to tak:

Posiadam dane :

  1. Punkty pomiarowe (tagname, biegunowosc, krotki opis, PID)
  2. Skrzynki obiektowe (Nazwa, Typ)
  3. Listwy (Nazwa, Typ, Liczba zacisków)
  4. Kable (Typ kabla, długość , przekrój, liczba żył)
  5. Szafy krosowe (Nazwa, Typ)
  6. Listwy obiektowe (Nazwa, Liczba zacisków)
  7. Listwy systemowe (Nazwa, Liczba zacisków)
  8. Przekaźniki (Nazwa, Numer, nr zacisku)
  9. Separatory (Nazwa, Numer, nr zacisku)
  10. Karty (Kod karty, liczba kanałów, typ)
  11. Szafy systemowe (typ, nazwa)

Teraz nieco wyjaśnienia:
Punkt pomiarowy(1) jest podpięty do jakiejś listwy na konkretny zacisk(3) - ta listwa jest umieszczona w jakiejś skrzynce obiektowej (2) - dalej z listwy a konkretnie z pewnego zacisku(3) -wychodzi kablem(4) sygnał na listwę(6), a właściwie na konkretny zacisk następnie ten zacisk jest połączony z kolejnym zaciskiem listwy (7) (obie te listwy są umieszczone w jakiejś szafie krosowej(5)) - następnie z zacisku o konkretnym numerze z listwy (7) wychodzi sygnał na separator(9) lub przekaźnik(8) (również na konkretny zacisk) - następnie idzie sygnał na konkretny kanał Karty (10) (jest ona umieszczona w jakiejś szafie systemowej (11)).

Podane numery są numerami na powyższej liście, jak widać jest to trochę zawiłe

Dodam jeszcze że Punkt pomiarowy nie musi zawsze być wpięty na listwę(3), może być wpięty bezpośrednio na kartę (10) (a właściwie jej kanał). Chciałbym mieć możliwość "przepięcia" lokalizacji gdzie co jest wpięte na który zacisk.

Nie bardzo wiem gdzie umieścić "konkretny zacisk" tzn gdzie umieścić gdzie jest wpięty np pkt pomiarowy, albo na który zacisk wchodzi kabel ( i jaki to kabel) z listwy (6) na listwę (7), myślałem o dodaniu do każdej tabeli "lokalizacje" oraz utworzeniu tabeli "Lokalizacje" - Typu ID_źródła i ID_lokalizacji.

Mam nadzieję że jasno wyjaśniłem mój problem, jeśli coś jest niejasne to postaram się jeszcze raz napisać, chodzi mi o naświetlenie idei - a raczej kierunku w którym mam się kierować.

0

ale jakie jest pytanie? Czego oczekujesz od nas? Najogólniej to trzeba chyba bazę zaprojektować, bardziej szczegółowo to już będzie ten projekt. Nie wiesz jak się projektuje - masz dwa wyjścia. 1) zacząć się uczyć i np. dawać tutaj to co stworzysz do "konsultacji", 2) zapłacić komuś, żeby to zrobił za Ciebie. Zastanów się jakie masz elementy do opisania (to praktycznie już masz), jakimi danymi poszczególne elementy są opisane (to też mniej więcej już masz) i jak się mają poszczególne elementy do siebie - FK (i to też już praktycznie masz). Zwróć np. uwagę, że skrzynki obiektowe, szafy, szafy systemowe możesz wrzucić do jednego "wora" plus kolumna oznaczająca co to za szafa. Tak samo np. z wszelakimi listwami czy przekaźniki i separatory. Ogólnie elementy, które mają takie same opisujące elementy możesz pogrupować.

0

Pytanie:

Mam jedną listwę która ma 24 zaciski - do tych zacisków są podpięte jakieś kable (które maja swoje id), czy prawidłowo będzie tworzyć 24 rekordy w tablicy listwy odpowiadające każdemu zaciskowi, (każdy rekord będzie miał tą samą nazwę listwy - dla tej konkretnej listwy) i w tablicy "Lokalizacje" która wygląda mniej więcej tak:


ID | ID_Lokalizacji

              |
              |
              |

Będziemy mieli w ID - id_zacisku a w ID_lokalizacji - ID_Kabla (jeden zacisk może być przyporządkowany do jednego kabla - jeden kabel może być przyporządkowany do wielu zacisków - oczywiście).
Czy moje rozumowanie jest prawidłowe ?

0

a potrzebujesz wiedzieć do którego konkretnego zacisku jest podłączony kabel?
Ja bym to zrobił tak
listwy

listwa_id typ opis liczba_zaciskow
1 1 zwykła 24
2 1 obiektowa 24

kable

kabel_id typ dlugosc przekroj liczba_zyl
1 1 100 2 1
2 1 100 2 1
3 1 100 2 1

połączenia_miedzy_listwami

polaczenie_id kabel_id listwa_id_A nr_zacisku_A listwa_id_B nr_zacisku_B
1 1 1 10 2 5
2 3 2 15 1 15
3 2 1 1 1 24

co oznacza, że kablem o id=1 jest podłączona listwa o id=1 na zacisku nr 10 z listwą o id=2 na zacisku nr 5, kablem o id=3 jest podłączona listwa o id=2 na zacisku nr 15 z listwą o id=1 na zacisku nr 15 oraz kablem o id=2 jest podłączona listwa o id=1 na zacisku nr 1 z listwą o id=1 (czyli sama ze sobą) na zacisku nr 24

podobnie połączenie z przekaźnikami i kartami. Co do tego w której szafie jest jaka listwa to wystarcz do tabeli listwy dodać pole szafa_id i po problemie (bo chyba jedna listwa nie może być w kilku szafach).

0

Rozwiązanie jest ok, lecz ja w momencie projektowania bazy nie mam informacji czy listwa będzie połączona z listwą czy np z kartą , raczej to definiowane będzie dynamicznie i w tym tkwi problem że nie wiem gdzie umieścić informację o tym z czym np listwa jest połączona a tym samym z której tabeli mam skorzystać aby wyszukać informację z czym jest połączona, czy rozwiązanie wprowadzenia tabeli połączenia rozwiąże sprawę ? Utworzyłem osobno tabele zaciski, oraz tabele kanaly które są połączone relacją zaciski->listwy , kanaly->karty

tabela zaciski:

ID ID_listwy Nr_zacisku
1 2 1
2 2 2

zabela kanaly:

ID ID_karty Nr_kanalu
1 2 2

tabela polaczenia:

ID_polaczenia ID_we Tabela ID_wy Tabela
1 1 ZACISKI 1 KANALY
2 3 PKT_POMIAROWE 2 ZACISKI

Czy w takim modelu będę mógł pośrednio uzyskać informację że Pkt pomiarowy X jest pośrednio połączony do Karty Y ?

w załączniku są przedstawione relacje bez wprowadzenia tabeli połączenia
zapomniałem dodać że bazę tworzę w Accesie ze względu na możliwość szybkiego utworzenia interfejsu

0

aby to było w miarę uniwersalne to trzeba by tę bazę zaprojektować z nadmiarowością. Wszelakie połączenia w jednej tabeli, kable w drugiej a w trzeciej wszystkie urządzenia, które mogą być łączone między sobą. W tej ostatniej tabeli będziesz miał dużo pól, które będą puste ale jak chcesz mieć to uniwersalne to tego nie przeskoczysz (możesz jeszcze trzymać pola specyficzne dla danego elementu w osobnej tabeli ale jest z tym więcej problemu niż pożytku). Przy takim układzie tabela z kablami i połączeniami wygląda jak wcześniej (w połączeniach zamiast id_listwy jest id_urządzenia) natomiast w tabeli urządzenia musiał byś mieć takie pola, żeby dało się tam dodać zarówno listwę jaki i karty, przekaźniki, separatory (czyli wszystko co się podpina) no i osobno tabelę na szafy.
Co do tabeli połączenia to jeśli tam są wpisane nazwy tabel to marnie to widzę - musiał byś najpierw odczytać z jakiej tabeli wyciągnąć dane a potem na tej podstawie składać zapytanie wyciągające już docelowe dane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1