Projekt dwóch baz - która lepsza ?

0

Witam! Chciałbym się doradzić w sprawie bazy którą chcę wykonać dla 3 urządzeń - sterowników które odczytują dane (napięcia i prądy) 24h na dobę i 365 dni w roku. Poza tym chciałbym jeszcze mieć możliwość odczytywania błędów gdyby się takie pojawiły. Mam także tabelę z danymi o poszczególnych sterownikach. Ważne jest to że w przyszłości mogą dojść jeszcze kolejne sterowniki. Pierwsza baza każde urządzenie traktuje jako osobną tabelę. Z kolei druga agreguje dane w jednej tabeli. Nie jestem pewien czy jest to dobrze przemyślane i czy klucze są OK:/ Jakby mi ktoś doradził to byłbym bardzo wdzięczny.
sterowniki2.jpg
sterowniki1.jpg

3

Pierwsza lepsza. Jednak skoro masz już id_sterownika w tabeli to wystarczy Ci jedna kolumna na odczyt prądu i napięcia, a nie N gdzie N to liczba sterowników.

Skoro sterowniki mają być dodawane, to raczej mało skalowalny jest pomysł, by za każdym razem dodawać tabelę z identyfikatorem sterownika w nazwie.

3

Fajnie, że myślisz nad strukturą bazy przed rozpoczęciem programowania.
Nigdy nie nazywaj ID (który jest PK) w stylu "ID_bledu". Po prostu "ID". Odbierało mi to radość z programowania i czystego kodu niemal przez dekadę pracy z taką bazą :D
Założyłem polskie nazewnictwo tabel jak w Twoim poście, ale proponuję mimo wszystko przejść na angielskie. Kod do obsługi tych tabel będzie ładniejszy. Za 10 lat będziesz na innym poziomie programowania (ja i każdy z nas też, nie traktuj tego osobiście), a baza z polskim nazewnictwem zostanie. Oczywiście można później zmienić nazwy tabel, kolumn, usunąć i dodać indeksy itd. ale po co to robić jak wtedy w tym czasie pójść na rower.
Zakładaj, że może być więcej urządzeń, więc nie rób dla każdego oddzielnej tabeli.

tabela: Sterownik
ID - Primary Key
NrSeryjny
Model
Wersja

tabela: Log (by być bardziej otwartym na inne informacje np. ostrzeżenia/Twoje informacje/ informacje, które może zwrócić sterownik)
ID - Primary Key
SterownikID - Foreign Key
Data
Numer

tabela: Odczyt:
ID - Primary Key
SterownikID - Foreign Key
Data
Rodzaj - 1 napięcie, 2 natężenie
Wartość (czyli odczyt)

Dzięki polu Odczyt.Rodzaj:

  • otwierasz się na więcej rodzajów sterowników np. CO2, jakości powietrza, wilgotnosci itd.
  • będziesz miał ładniejszy/krótszy kod np. zrobisz sobie jedną funkcję GetDriverValue(DriverID, dtVoltage, StrToDate("2023-04-19 04:35")), która Ci będzie zwracać napięcie lub nateżenie lub cokolwiek co sobie wymyślisz w przyszłości. dtVoltage to typ/zmienna/taka jakby stała wskazująca na 1, czyli napięcie.

Zrób takie pole nawet jak sterownik na raz będzie zwracał obie wartości (wtedy sobie założysz 2 rekordy).

0

Ile takich odczytów będziesz miał na godzinę/dobę? Co potem będziesz z nimi robił? Jak długo będziesz je trzymał? Połączeniem tych dwóch schematów jest partycjonowanie tabeli odczytów.

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