Witam,

W związku z projektowaniem pewnej nowej funkcjonalności, natknąłem się na problem z bazą danych. Otóż, mam system Forum Gold ( mniej więcej każdy wie co to ) i chciałbym dodać automatycznie generowane logi dla akcji wykonywanych przez automat jak np. kupno FG za SMS, kupienie kolorowych tematów itd. Obecna struktura tabeli wygląda tak:

  1. CREATE TABLE ibf_fg_logs VALUES (
  2. id int(8) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. id_from int(8) UNSIGNED NOT NULL DEFAULT '0',
  4. fg_from decimal(10,2) NOT NULL DEFAULT '0.00',
  5. id_to int(8) UNSIGNED NOT NULL DEFAULT '0',
  6. fg_to decimal(10,2) NOT NULL DEFAULT '0.00',
  7. amount decimal (10,2) NOT NULL DEFAULT '0.00',
  8. comment varchar(255),
  9. date int(8) NOT NULL,
  10. PRIMARY KEY (id)
  11. )


Wszystko dobrze działa, bo ID są sprawdzane i nie ma problemu z integralnością danych. Ale wprowadzenie tej nowej funkcjonalności prawdopodobne to zburzy. Jak widać, ID są powiązane z userem. Po co? Poniżej wyjaśnienie:

  1. <?php
  2. $this->ipsclass->make_profile_link( name, id )
  3. ?>
- tworzy link do profilu, name pobierane z tabeli members na zasadzie ID
  1. <?php
  2. $this->ipsclass->make_fomatted_name( name, group )
  3. ?>
- koloruje profil wg. grupy

Z połączenia wychodzi takie coś:

  1. <?php
  2. $this->ipsclass->make_profile_link( $this->ipsclass->make_fomatted_name( imi&#281; z members, grupa z members ), ID z tej tabeli );
  3. ?>


Dlatego muszę te dane mieć. Z kumplem chcieliśmy dodać flagę ( is_fg_system ) i na tej zasadzie w aplikacji dać if i formatować wg. schematu, ale wtedy powstaje problem integralności, ponieważ ID od i z muszę dać 0, bo co mam innego dać? Usunięcie NOT NULL naraża integralność. Co w tej sytuacji polecacie zrobić? Przedstawię screen jak ma to mniej więcej wyglądać:



Nie muszę dodawać Typu kto wysyłał, a dostawał, bo weryfikuję to na zasadzie:

  1. <?php
  2. if ( $ID_z_DB == $Moje_ID )
  3. {
  4.    Formatuj dla typu, kiedy Ty wysy&#322;asz FG
  5. }
  6. else
  7. {
  8.    Formatuj dla typu, kiedy Ty odbierasz FG
  9. }
  10. ?>


Można dodać pole do DB, ale nie widzę sensu na razie, chyba, że tak polecicie :-) Mam nadzieję, że rozpisując się tak wyjaśniłem wszystko :-)

Pozdrawiam,
Largo

Witam,

Czy nikt naprawdę nie wie? :-) Zastanawiałem się nad tym i można by dodać warunek z nowym pole, które nazywało by się: type i wtedy po sprawdzaniu przygotowywać dane? Czyli podczas wysyłania sprawdzać czy moje ID równa się ID osoby wysyłającej i nadawać status np. 0, dla odbiorcy 1, a dla automatu 2?

Pozdrawiam,
Largo