Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Projekt płatności
Forum PHP.pl > Forum > Bazy danych > MySQL
Largo
Witam,

Napisałem pewny skrypt dla IP.Board polegający na przelewach ustalonej waluty, popularne Form Gold. Ale w czasie wdrażania SMS'ów zaniepokoił mnie jeden fakt. Otóź, SMS'y OK, bo wypełniają wszystkie pola, ale przelewy zostają z 2 NULL'ami. Nie wydaję mi się, aby to było dobre rozwiązanie, dlatego pytam Was, czy zna ktoś jakiś pewniejszy schemat bazy danych. Możliwe, że się mylę, ale specjalistów od baz danych nie jestem i liczę na Waszą pomoc. Obecna struktura płatności wygląda tak:

id | fg | price | type | sms_number | sms_message

W przypadku sms_number i message zostają NULL'e w DB. Czy podzielić bazę pod tym kątem?

PS. Dojdą mi jeszcze parę innych płatności, np. telefon stacjonarny. Proszę o sugestię.

Pozdrawiam,
Largo
AxZx
po co chcesz dzielić? zostaw jak jest. niektórzy wręcz łączą tabele niepotrzebnie podzielone żeby tylko było mniej złączeń (w dużych systemach oczywiście).
Largo
Witam,

Dziękuję Ci za odpowiedź, ale czy to jest na 100% optymalne?
AxZx
a co tu ma być nie optymalnego?
jest taka zada żeby nie przesadzać. teraz Ty zachowujesz się tak, że Twój cały projekt jest nie optymalny:) bo tracisz czas na dyskusje, zamiast zapoznać się z systemami obsługi baz danych.

oczywiście, że można to podzielić na kilka tabel:
w głównej trzymasz tylko typ - czyli czy to jest sms, czy przelew, czy cokolwiek tam innego. do każdego typu osobną tabelę z kolumnami, który typ wymaga.
zrób sobie to tak i tak a wtedy dowiesz się co będzie lepsze:)
Largo
Witaj,

Dziękuję Ci bardzo, właśnie o tym pomyślałem, ale nie wiedziałem jak to rozłożyć. Jak będę miał problemy lub gotowy projekt, podeślę do tematu, abyś sprawdził :-)

Pozdrawiam,
Largo

Witam,

Czy taki projekt ma sens?

  1. CREATE TABLE ibb_fg_payment (
  2. id int NOT NULL,
  3. type varchar(255) NOT NULL DEFAULT '',
  4. company_name varchar(255) NOT NULL,
  5. company_desc TEXT DEFAULT NULL,
  6. PRIMARY KEY ( id )
  7. ) ENGINE=MyISAM
  8.  
  9. CREATE TABLE ibb_fg_transfers (
  10. tid int NOT NULL,
  11. fg decimal(10, 2) NOT NULL DEFAULT '0.00',
  12. price decimal(5,2) NOT NULL,
  13. description varchar(255) DEFAULT NULL,
  14. comment TEXT,
  15. STATUS enum( 0, 1, 2, 3 ) DEFAULT '0',
  16. PRIMARY KEY ( tid )
  17. ) ENGINE=MyISAM
  18.  
  19. CREATE TABLE ibb_fg_sms (
  20. sid int NOT NULL,
  21. fg decimal(10, 2) NOT NULL DEFAULT '0.00',
  22. price decimal(5,2) NOT NULL,
  23. sms_number varchar(7) NOT NULL,
  24. sms_message int(8) NOT NULL,,
  25. STATUS enum ( 0, 1 ) DEFAULT '0',
  26. )


Nie znam się na bazach, ale wydaje mi się, że podzieliłem warstwy. Potem via JOIN da się je połączyć w logiczną całość? Czy lepiej dać cenę i fg do głównej tabeli?

Pozdrawiam,
Largo
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.