16 mar 2017

Baza danych: struktura, przykładowe dane i połączenie

W ostatnim poście napisałem, że kolejnym krokiem będzie odbieranie we frontendzie przykładowych danych z api. Życie jednak zweryfikowało te plany i trafiłem na jakiś błąd parsowania json przez przeglądarkę w momencie odbierania żądania. Nie mogłem się go pozbyć pomimo wielu prób, stwierdziłem zatem, że szkoda na to czasu. Lepiej sprawdzić czy ten błąd występuje również kiedy odbiorę dane z bazy i te dane zserializuję do json. Jeśli będzie ten sam błąd - to wtedy poszukam co jest nie tak, a jest szansa że problem w ogóle się nie pojawi.W związku z powyższym w dzisiejszym poście opiszę przygotowanie bazy danych.

Swoją bazę stawiam w hekko.pl, mam u nich wykupiony hosting więc przy okazji użyję go do tego projektu. Samo wygenerowanie bazy odbywa się przez panel DirectAdmin i sprowadza się do kilku kliknięć, więc nie ma tu zbyt wiele do opisania. Jest dostępny phpMyAdmin do zarządzania bazą, ale mam trochę wstręt do niego i od razu pobrałem MySQL Workbench. Przy pierwszej próbie połączenia okazało się, że muszę jeszcze wprost ustawić jakie hosty mają dostęp do bazy. Na czas testów dodałem %, czyli po prostu dostęp dla wszystkich

Struktura bazy na potrzeby pierwszej wersji portfela emerytalnego prezentuje się następująco:
Na potrzeby wyświetlenia we frontendzie przykładowego wykresu potrzebuję jedynie wartości funduszy w czasie, więc zakładam tylko tabele Fund (będzie zawierała nazwy funduszy) oraz Rate (wartość w czasie):
CREATE TABLE `fund` (
 `Id` int(11) NOT NULL AUTO_INCREMENT,
 `Name` varchar(256) NOT NULL,
 PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE `rate` (
 `Id` int(11) NOT NULL AUTO_INCREMENT,
 `Date` date NOT NULL,
 `Value` decimal(10,2) NOT NULL,
 `LastUpdate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
 `FundId` int(11) NOT NULL,
 PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Pozostało jeszcze tylko uzupełnić tabelę przykładowymi danymi. Kursy funduszu pobieram ze strony TFI i parsuję przy pomocy narzędzia regexr - wyrażenia regularne spisują się znakomicie do takiego wyselekcjonowania danych
Wszystko łączę w zapytania i wykonuję na bazie:
INSERT INTO fund (`Name`) VALUES ('NN (L) Stabilny Globalnej Alokacji (K)')
INSERT INTO rate (`Date`, `Value`, `FundId`) VALUES
('2014-09-24', 106.66, 1),
('2014-09-25', 106.44, 1),
('2014-09-26', 106.83, 1),
('2014-09-29', 106.71, 1),
...
To tyle na dziś, kolejny post będzie o tym jak te dane z bazy odebrać w backendzie i wystawić je jako json. Zapowiada się długi wpis, bo ponownie pojawiło się kilka problemów - po szczegóły zapraszam w poniedziałek.

0 komentarze:

Prześlij komentarz