Model - budowanie relacji

0

Czołem,

zakopałęm się w bazie danych i mam duży problem jak to rozwiązać - w sensie jak stworzyć odpowiednie relacje do modelu biznesowego.

Model biznesowy:
Cel: wpisać w bazę danych wszystkie możliwe kombinacje serwerów i aplikacji, które później klient wybiera do wdrożenia + łatwo dodawać nowych klientów i kombinacje dla nich.
Mamy Klienta (Customer), klient taki wybiera aplikację, ktora chce uzywa - np. SAP HANA. Dla każdego klienta mamy kilka dedykowanych serwerów do wyboru. Każdy z takcih serweró moze byc na produkcji lub teście. Do każdego serwera możemy użyć albo virtual machine albo bare metal. I na koncu do kazdego z nich mamy przypisane do wyboru kilka systemów operacyjnych do wyboru do instalacji na nich. Dla kazdego serwera mamy Rdzen i gniazdo i nazwę przypisana na stale. Dodatkowo dla kazdego zestawu Aplikacja - Server mozemy wybrac z kilku pozycji jaka pamieć (ile procesorów i jaki limit pamieci) maja miec na serwerze. To tak w skrócie.

Moje relacje testowe wygladaja tak (i nie zakladam zeby bylo mega dobrze):

titlescreenshot-20180807110345.png

Teraz tak:
t_customers - klienci
t_environments - produkcja lub test
t_applications - aplikacja do wyboru przez klienta
t_ server - server z nazwa, rdzeniami, numanodes i jaka infrastruktura (np. cloud lub inny)
t_serverdetails - szczegoly do kazdego serwera. I tak dla SAP HANA bezie do wyboru 2 servery, i do kazdego z nich bedzie mozliwosc przypisania kilku wariantów, np. 20 procesów, 32 GB, albo 120 procesów, 60 GB.

Glownie zastanawiam się nad tabelami serverdetails oraz relacjami t_machine i t_operatingsystems. Nie wiem czy one są poprawne.

Dodatkowo czy server ma byc testowy czy produkcyjny - jesli wlacze to do tabeli t_servers to bede mial powtarzajace sie dane. Bede mial np.dla Customer1 : Server1, 4 NumaNodes, 5 Cores i environment: PRoduction, Customer2 bedzie mial ten sam server ale environment: Test. Czyli musialbym przepisac prawie ten sam rekord i zmienic tylko pole environment.

Wszelkie wskazówki mile widziane.
Dziękuję,
Pozdrowienia,
Jacek

0

pomijając sam schemat to masz straszny misz-masz

  1. pola ID - raz nazywa się Id, następnie EnviromentId, potem IDMachine by skończyć na Server_DetailedInfo_Machine_Id - UJEDNOLIĆ nazwy
  2. pole id nazywa się EnviromentID a pole FK Enviroment_ID_FK - po pierwsze ujednolicić po drugie przyrostek _FK jest zbędny
  3. używaj albo CamelCase (chociaż w BD jest niezalecane bo część systemów ignoruje wielkość liter w nazwach) albo Snake case (czyli pole_id)

Teraz co do reszty to ja bym Ci proponował podejść do projektowania jednak tak jak się to powinno robić - najpierw lista wszystkich atrybutów jakie musisz trzymać w bazie, następnie podzielić je na logiczne grupy (np. nazwa kontrahenta, adres do kontrahenta; rdzeń, gniazdo i nazwę do serwera; itd). Mi Twój opis niewiele mówi, a schemat bazy mówi jeszcze mniej i szczerze powiedziawszy nie pasuje do opisu słownego. Wypisz najpierw te dwie listy (wszystkie a potem podzielone na logiczne grupy) to zajmiemy się resztą :)

0

Hej,

dziękuje bardzo @abrakadaber.

Poprawiłem nazwy i zmieniłem trochę model (wydaje mi sie ze teraz lepiej to wyglada):

screenshot-20180807124247.png

To tak, lista atrybutów:

  1. Customer
  2. EnvironmentName
  3. ApplicationName
  4. MachineType
  5. SystemName
  6. Server
  7. CoreSockets
  8. Sockets
  9. NumaNodes
  10. Cpu
  11. Infrastructure
  12. Cores
  13. MemSizeBytesMulti
  14. MemorySizeLabels
  15. MemorySizeGb

I grupy:

  1. Customer

  2. EnvironmentName

  3. ApplicationName

  4. MachineType

  5. SystemName

  6. Cores,MemSizeBytesMulti,MemorySizeLabels,MemorySizeGb

  7. Server,CoreSockets, Sockets, NumaNodes, Cpu, Infrastructure

  8. grupa to server i jego charakrerystyka.

  9. to mozliwość wyboru pamieci i procesorów dla danego serwera

Dziękuje za pomoc,
pozdrawiam,
Jacek

0

Ja jednak byłbym za snake_case'm - załóżmy że dorzucisz tam tabelę która kończy się na ll - np FootballId - cięzko rozczytać co? co innego football_id

0

axelbest, dzieki !
Na razie zostawiam tak, ale później pozmieniam jak juz bede miał w pelni wszystkie relacje.

Pozdrowienia,
Jacek

0

jeśli chodzi o Twoją listę to nie do końca o to chodziło. Na początek skup się na tym co jest pewne :) - masz klienta, aplikację i serwer. Wypisz atrybuty jakie chcesz przechowywać w bazie danych odnośnie tych trzech elementów.

0

Dziękuję Panowie.

Udało mi się osiągnąć założenia biznsowe.

Pozdrawiam,
Jacek

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