Obsługa bazy danych cd.
Moje wahania co do budowy klasy zarzadzajacej bazą danych już sie skonczyły. Większośc jest gotowa. Do tabel odwołujemy sie przez
-
$o->getPole()
a do złączonych
-
$o->joinedTable->getPole()
. Dzięki temu łatwo było zaimplementować dodatkowe funkcje - jak na razie tylko sprawdzające (reszta wkrótce). Np. jesli dodamy w WHERE pole, ktorego nie ma w tabeli to zamiast czekać na bład bazy danych, sami go wczesniej wyłapiemy :)
Inne smaczki sa przy zapytaniach UPDATE i INSERT. W setterach nastepuje sprawdzanie czy podana przez nas wartosc jest takiego typu jakiego oczekujemy, czy np. nikt nie starał sie wsadzić string'a do int'a itp. Przyda sie pewnie też bajer jak sprawdzanie czy dodalismy wszystkie wartosci. Tzn. Niektore pola sa wymagane jak np. tytuł, a inne (id ktory jest auto_increment) nie. Jesli czegoś nam zabraknie to przy wykonaniu polecenia tez bedzie stosowny bład. Całość oczywiście jest bardzo ładnie generowana automatycznie na pdst. XMLa. Np. taki schemat
-
<?xml version="1.0" encoding="UTF-8"?>
-
-
<database name="sw">
-
<table name="def"><column name="id" type="int" size="10" primary="true" />
-
<column name="author_id" type="int" size="10" required="true" />
-
<column name="cat_id" type="int" size="10" required="true" />
-
<column name="title" type="varchar" size="255" required="true" />
-
<column name="deleted" type="bool" />
-
<foreigntable>author</foreigntable>
-
<foreigntable>cat</foreigntable></table>
-
<table name="author"><column name="id" type="int" size="11" primary="true" />
-
<column name="name" type="varchar" size="255" />
-
<column name="title" type="varchar" size="255" /></table>
-
<table name="cat"><column name="id" type="int" size="11" primary="true" />
-
<column name="name" type="varchar" size="255" /></table>
-
</database>
wygeneruje nam 9(!) plików z kodem PHP :)
Mam do tego jeszcze cache, ale zastanawiam sie nad jego sensem. Wprawdzie przy pobieraniu 5000 tys. rekordów jakas róznica w czasie była, ale niewielka.
3 Comments so far
Leave a reply
Zadaj sobie pytanie, czy kiedykolwiek będziesz potrzebował pobrać 5000 tys. rekordów. Możesz też zrobić wyłączalny moduł cache. Jedna definicja w configu załatwiałaby sprawę :)
W praktyce zapewne nie bede. Dane zostały specjalnie spreparowane, aby sprawdzić różnice z i bez cache.
co do cache to ono się najbardziej przyda nie do prostego wyciągania wielu rekordów, ale gdy mamy bardziej kłopotliwe zapytania, sortowanie, wyszukiwanie, na dużych tabelach operacje mogą trwać kilkanaście sekund nawet, więc opłaca się to cachować...