Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Baza notowań akcji
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
Blackhole
Witam smile.gif
Chciałbym zrobić bazę danych zawierającą notowania niektórych spółek dostępnych na GPW. Mam teraz dylemat, jak ułożyć strukturę tej bazy. Dla każdej spółki będą w bazie takie kolumny:
Cytat
data (date) | cena_otw (float) | cena_min (float) | cena_max (float) | cena_zamkn (float) | zmiana% (float) | wolumen (int)
Logiczne wydaje się chyba, by każda spółka miała oddzielną tabelę. Ale może macie jakiś pomysł na lepszą strukturę :?:
Będę wdzięczny za proozycje.
mhs
hmm a nie zrobic relacji jeden do wielu pomiedzy (co najmniej) dwoma tabelami:

spolki |-------------->| notowania


gdzie w tabeli beda trzymane dane dot. samej spolki a w tabeli notowania -> notowania gieldowe wszystkich spolek?


EDIT:
poza tym w projekcie Twoim masz zmiana% (float) - to jest pole wyliczane, ktorego raczej nie powinno byc w tabeli
Blackhole
Mógłbyś sprecyzować?
mhs
tak, tylko jak bede w domu (gdzies okolo godziny 22) gdyz za chwileczke wychodze z pracy i w tej chwili nie mam juz czasu...

edit:


generalnie myslalem o czyms takim:

tabela 1)

spolki:
============
spolka_id
nazwa
data_zalozenia
-- pozostale...


tabela 2)

notowania:
============
notowanie_id
spolka_id
data
cena_otw
cena_min
cena_max
cena_zamkn
wolumen (int)
Blackhole
A co miałaby zawierać kolumna "notowanie_id" :?:
mhs
klucz podstawowy dla tabeli notowania
Blackhole
A czy nie uważasz, że będzie niemały bałagan w tej tablicy notowania, skoro będzie ona tak duża?
dr_bonzo
Ja uwazam taka budowe tabel za odpowiednia -- sam taka robilem i dzialalo.

W jaki sposob tabela notowania jest "tak duza"? Pomysl co by bylo przy X (stu?) tabelach po jednej dla kazdej firmy).

Dla ponad 100k rekordow wyszukanie najwyzszego kursu dla kazdej ze spolek zajmuje mi (na slabym sprzecie) 0.5 sekundy.
mhs
odpowiadajac na Twoje pytania mowie "nie"


(...)


a czy Wg. Ciebie w bazie danych bedziesz mial porzadek w sytuacji gdy bedziesz mial 100 lub wiecej tabel, a w kazej tabeli bedziesz przechowywal info dotyczace spolek i notowan?

jak pozniej z bazy danych bedziesz wyciagal dane dotyczace np. sumy wolumenu dla wszystkich spolek w danym dniu (lub jakiej dane w przeciągu miesiąca)? oczywiscie, sposob w jaki Ty proponujesz takie dane da sie wyciagnac, ale stopien skomplikowania takiego zadania jest znacznie wiekszy i pewnie nie obejdzie sie bez kilku (...dziesieciu, ...set) zapytan do bazy danych i koniecznosci "obrobienia" tego w jakims jezyku programowania....
Blackhole
Ok. Wielkie dzięki za Wasze uwagi smile.gif

dr_bonzo, czy mógłbyś przedstawić, jak Ty to masz zrobione? Z Twojego postu wnioskuję, że masz już gotowe to, do czego ja się dopiero zabieram.
dr_bonzo
Moja baza odnosila sie do kursow fikcyjnych spolek ---> jottonia.no.
  1. # Table: 'companies'
  2. #
  3. CREATE TABLE `companies` (
  4. `ID` int(4) UNSIGNED NOT NULL AUTO_INCREMENT,
  5. `CID` int(4) UNSIGNED NOT NULL DEFAULT '0',
  6. `name` varchar(255) NOT NULL DEFAULT '',
  7. PRIMARY KEY (`ID`,`CID`)
  8. ) TYPE=MyISAM;
  9.  
  10. # Table: 'stocks_data'
  11. #
  12. CREATE TABLE `stocks_data` (
  13. `ID` int(9) UNSIGNED NOT NULL AUTO_INCREMENT,
  14. `CID` int(4) UNSIGNED NOT NULL DEFAULT '0',
  15. `date_time` int(11) UNSIGNED NOT NULL DEFAULT '0',
  16. `value` float NOT NULL DEFAULT '0',
  17. PRIMARY KEY (`ID`,`CID`,`date_time`)
  18. ) TYPE=MyISAM;


To jest struktura bazy w MySQLu.

CID to jest ID spolki, ID -- id wpisu -- troche zamieszane, dawno nie uzywalem tej bazy i nie pamietam po co to dodatkowe pole -- mhs podal wlasciwa strukture
Blackhole
Dzięki, dr_bonzo.

Powiedzcie mi jeszcze, po co klucz podstawowy w tabeli "notowania" :?: Wydaje mi się, iż wystarczy klucz unikatowy w postaci pary (data, spolka), gdzie data to wiadomo co, a spolka to dowiązanie do tablicy "spolki" zawierającej informacje o spółkach.

---- Dodane ----
Przy tworzeniu tabeli "notowania" psql sam utworzył mi indeks. Czy w związku z tym dodanie przeze mnie indeksu - jako dodatkowej kolumny - jest potrzebne :?:
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.