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:
CREATE TABLE ibf_fg_logs VALUES ( id int(8) UNSIGNED NOT NULL AUTO_INCREMENT, id_from int(8) UNSIGNED NOT NULL DEFAULT '0', fg_from decimal(10,2) NOT NULL DEFAULT '0.00', id_to int(8) UNSIGNED NOT NULL DEFAULT '0', fg_to decimal(10,2) NOT NULL DEFAULT '0.00', amount decimal (10,2) NOT NULL DEFAULT '0.00', comment varchar(255), date int(8) NOT NULL, PRIMARY KEY (id) )
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:
- tworzy link do profilu, name pobierane z tabeli members na zasadzie ID
<?php $this->ipsclass->make_profile_link( name, id ) ?>
- koloruje profil wg. grupy
<?php $this->ipsclass->make_fomatted_name( name, group ) ?>
Z połączenia wychodzi takie coś:
<?php $this->ipsclass->make_profile_link( $this->ipsclass->make_fomatted_name( imię z members, grupa z members ), ID z tej tabeli ); ?>
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:
<?php if ( $ID_z_DB == $Moje_ID ) { Formatuj dla typu, kiedy Ty wysyłasz FG } else { Formatuj dla typu, kiedy Ty odbierasz FG } ?>
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