<!-- $Id$ -->
<chapter id="devel">
     <title>Dla dociekliwych</title>
     <sect1 id="devel-catalogs">
          <title>Drzewo katalogów</title>
               <table id="catalog-tree">
                    <title>Drzewo katalogów LMS</title>
               <tgroup cols="2">
                    <colspec ALIGN="center" COLWIDTH="200">
                    <colspec ALIGN="center" COLWIDTH="300">
                   <thead>
                    <row>
                    <entry>Nazwa</entry>
                    <entry>Opis</entry>
                    </row>
                   </thead>
                   <tbody>
                    <row>
                    <entry>backups</entry>
                    <entry>Kopie zapasowe bazy danych</entry>
                    </row>
                    <row>
                    <entry>bin</entry>
                    <entry>Skrypty wykonywalne lms-...</entry>
                    </row>
                    <row>
                    <entry>contrib</entry>
                    <entry>Dodatki stworzone przez użytkowników LMS</entry>
                    </row>
                    <row>
                    <entry>daemon</entry>
                    <entry>A.L.E.C's LMS Daemon</entry>
                    </row>
                    <row>
                    <entry>devel</entry>
                    <entry>Skrypty przydatne dla developerów</entry>
                    </row>
                    <row>
                    <entry>doc</entry>
                    <entry>Dokumentacja</entry>
                    </row>
                    <row>
                    <entry>documents</entry>
                    <entry>Archiwum dokumentów</entry>
                    </row>
                    <row>
                    <entry>img</entry>
                    <entry>Obrazki do Interfejsu Użytkownika</entry>
                    </row>
                    <row>
                    <entry>lib</entry>
                    <entry>LMS'owy zbiór bibliotek PHP oraz Smarty</entry>
                    </row>
                    <row>
                    <entry>modules</entry>
                    <entry>Moduły Interfejsu Użytkownika</entry>
                    </row>
                    <row>
                    <entry>sample</entry>
                    <entry>Przykładowe skrypty i inne dodatki</entry>
                    </row>
                    <row>
                    <entry>templates</entry>
                    <entry>Szablony Smarty dla Interfejsu Użytkownika</entry>
                    </row>
                    <row>
                    <entry>templates_c</entry>
                    <entry>Pliki tymczasowe</entry>
                    </row>
               </tbody>
               </tgroup>
                   </table>
     </sect1>
     <sect1 id="devel-db">
          <title>Struktura bazy danych</title>
          <para>Poniżej przedstawiono ogólną strukturę bazy danych LMS. Bardziej szczegółowe
          informacje o typach danych, ograniczeniach nakładanych na pola oraz wartości domyślne
          zawarte są w plikach <ulink url="../lms.mysql"><filename>lms.mysql</filename></ulink>,
          <ulink url="../lms.pgsql"><filename>lms.pgsql</filename></ulink> 
          w katalogu <filename>/doc</filename>.</para>
          <sect2 id="users">
               <title>Użytkownicy ('users')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>login - login</member>
                    <member>name - nazwa (nazwisko i imię)</member>
                    <member>email - adres e-mail użytkownika</member>
                    <member>phone - numer telefonu użytkownika</member>
                    <member>position - nazwa stanowiska</member>
                    <member>rights - prawa dostępu</member>
                    <member>hosts - lista hostów z prawem do logowania</member>
                    <member>passwd - hasło logowania</member>
                    <member>ntype - obsługiwane typy powiadomień</member>
                    <member>lastlogindate - data ostatniego logowania</member>
                    <member>lastloginip - adres IP, z którego nastąpiło ostatnie logowanie</member>
                    <member>failedlogindate - data ostatniej nieudanej próby logowania</member>
                    <member>failedloginip - adres IP, z którego próbowano się zalogować</member>
                    <member>deleted - czy usunięty (0/1)</member>
                    <member>access - czy konto aktywne (0/1)</member>
                    <member>accessfrom - data od której konto jest aktywne</member>
                    <member>accessto - data do której konto jest aktywne</member>
               </simplelist>
          </sect2>
          <sect2 id="customers">
               <title>Klienci ('customers')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>lastname - nazwa/nazwisko</member>
                    <member>name - imię</member>
		    <member>divisionid - identyfikator firmy (oddziału)</member>
                    <member>status - status (3-podłączony, 2-oczekujący, 1-zainteresowany)</member>
		    <member>type - osobowość prawna (0-osoba fizyczna, 1-osoba prawna)</member>
                    <member>email - adres poczty internetowej</member>
                    <member>pin - numer pin (uwierzytelnianie)</member>
                    <member>address - adres (ulica, nr domu, nr lokalu)</member>
                    <member>zip - kod pocztowy</member>
                    <member>city - nazwa miasta</member>
		    <member>countryid - identyfikator kraju</member>
		    <member>post_name - adres korespondencyjny (adresat)</member>
		    <member>post_address - adres korespondencyjny (ulica, nr domu, nr lokalu)</member>
                    <member>post_zip - adres korespondencyjny - kod pocztowy</member>
                    <member>post_city - adres korespondencyjny - nazwa miasta</member>
		    <member>post_countryid - adres korespondencyjny - identyfikator kraju</member>
                    <member>ten - numer identyfikacji podatkowej NIP</member>
                    <member>ssn - numer PESEL</member>
		    <member>regon - numer REGON</member>
		    <member>rbe - numer KRS/EDG</member>
		    <member>icn - numer dowodu osobistego</member>
                    <member>info - dodatkowe informacje</member>
                    <member>notes - notatki</member>
                    <member>creationdate - czas utworzenia wpisu</member>
                    <member>moddate - czas modyfikacji</member>
                    <member>creatorid - identyfikator użytkownika tworzącego wpis</member>
                    <member>modid - identyfikator użytkownika dokonującego zmian danych</member>
                    <member>deleted - usunięty z bazy (0/1)</member>
                    <member>message - komunikat do wyświetlenia przy włączonych ostrzeżeniach</member>
		    <member>cutoffstop - data, do której blokowanie klientów zadłużonych jest wyłączone</member>
		    <member>paytime - termin płatności faktur</member>
		    <member>paytype - typ płatności faktur (zobacz tabela documents)</member>
		    <member>einvoice - zezwolenie na faktury elektroniczne</member>
		    <member>invoicenotice - zezwolenie na dostarczanie faktur pocztą elektroniczną</member>
		    <member>mailingnotice - zezwolenie na dostarczanie informacji pocztą elektroniczną lub smsem</member>
               </simplelist>
          </sect2>
          <sect2 id="customergroups">
               <title>Grupy klientów ('customergroups')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>name - nazwa</member>
                    <member>description - opis</member>
               </simplelist>
          </sect2>
          <sect2 id="customerassignments">
               <title>Grupy klientów - powiązania ('customerassignments')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>customergroupid - identyfikator grupy</member>
                    <member>customerid - identyfikator klienta</member>
               </simplelist>
          </sect2>
	    <sect2 id="excludedgroups">
        	<title>Grupy klientów - dostęp użytkowników ('excludedgroups')</title>
	    	    <simplelist>
			<member>id - identyfikator</member>
			<member>userid - identyfikator użytkownika</member>
			<member>customergroupid - identyfikator grupy</member>
		    </simplelist>
	    </sect2>
          <sect2 id="networks">
               <title>Sieci ('networks')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>name - nazwa sieci</member>
                    <member>address - adres IP</member>
                    <member>mask - maska</member>
                    <member>interface - interfejs (np. eth1)</member>
                    <member>gateway - adres IP bramy</member>
                    <member>dns - adres IP serwera nazw</member>
                    <member>dns2 - adres IP zapasowego serwera nazw</member>
                    <member>domain - domena</member>
                    <member>wins - adres serwera WINS</member>
                    <member>dhcpstart - początek zakresu DHCP</member>
                    <member>dhcpend - koniec zakresu DHCP</member>
		    <member>disabled - status sieci: włączona/wyłączona (0/1)</member>
		    <member>notes - dodatkowe notatki</member>
               </simplelist>
          </sect2>
          <sect2 id="netdevices">
               <title>Sprzęt sieciowy ('netdevices')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>name - nazwa</member>
                    <member>location - lokalizacja, tekst</member>
                    <member>location_city - identyfikator miejscowości (TERYT)</member>
		    <member>location_street - identyfikator ulicy (TERYT)</member>
		    <member>location_house - numer domu</member>
		    <member>location_flat - numer mieszkania</member>
                    <member>description - opis</member>
                    <member>producer - producent</member>
                    <member>model - model</member>
                    <member>serialnumber - numer seryjny</member>
                    <member>ports - ilość portów</member>
		<member>purchasetime - data zakupu</member>
		<member>guaranteeperiod - okres gwarancji w miesiącach (NULL - gwarancja wieczysta)</member>
		    <member>shortname - nazwa skrócona (radius)</member>
		    <member>nastype - typ NAS (radius)</member>
		    <member>clients - liczba klientów (radius)</member>
		    <member>secret - hasło (radius)</member>
		    <member>community - community SNMP</member>
		    <member>channelid - identyfikator kanału STM (tabela ewx_channels)</member>
		    <member>longitude - długość geograficzna</member>
		    <member>latitude - szerokość geograficzna</member>
	    </simplelist>
          </sect2>
          <sect2 id="netlinks">
               <title>Połączenia sieciowe ('netlinks')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>src - jeden koniec</member>
                    <member>dst - drugi koniec</member>
                    <member>type - typ połączenia (0-kabel, 1-radio)</member>
		    <member>srcport- port źródłowy (początku połączenia)</member>
		    <member>dstport - port docelowy (końca połączenia)</member>
               </simplelist>
          </sect2>
          <sect2 id="nodes">
               <title>Komputery i adresy IP urządzeń sieciowych ('nodes')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>name - nazwa</member>
                    <member>ipaddr - adres IP</member>
                    <member>passwd - hasło np. pppoe</member>
                    <member>ownerid - identyfikator właściciela ('0' - dla adresu urządzenia)</member>
                    <member>creationdate - znacznik czasu utworzenia wpisu</member>
                    <member>moddate - znacznik czasu ostatniej modyfikacji</member>
                    <member>creatorid - identyfikator użytkownika tworzącego wpis</member>
                    <member>modid - identyfikator użytkownika ostatnio modyfikującego wpis</member>
                    <member>netdev - identyfikator urządzenia sieciowego do którego jest podłączony komputer</member>
		    <member>linktype - typ połączenia sieciowego (0-kabel, 1-radio)</member>
		    <member>port - numer portu w urządzeniu sieciowym</member>
                    <member>access - podłączony/odłączony (1/0)</member>
                    <member>chkmac - włączone/wyłączone sprawdzanie MAC adresu (1/0)</member>
                    <member>halfduplex - half/full duplex (0/1)</member>
                    <member>warning - ostrzegaj/nie ostrzegaj (1/0)</member>
                    <member>lastonline - znacznik czasu ostatniej obecności w sieci</member>
                    <member>info - informacje dodatkowe</member>
		    <member>location - adres lokalizacji, tekst</member>
		    <member>location_city - identyfikator miejscowości (TERYT)</member>
		    <member>location_street - identyfikator ulicy (TERYT)</member>
		    <member>location_house - numer domu</member>
		    <member>location_flat - numer mieszkania</member>
		    <member>nas - flaga NAS (0/1)</member>
		    <member>longitude - długość geograficzna</member>
		    <member>latitude - szerokość geograficzna</member>
               </simplelist>
          </sect2>
          <sect2 id="macs">
               <title>Adresy MAC ('macs')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>mac - adres MAC</member>
                    <member>nodeid - identyfikator adresu IP (tabela nodes)</member>
               </simplelist>
          </sect2>
	    <sect2 id="nodegroups">
	        <title>Grupy komputerów ('nodegroups')</title>
		<simplelist>
		    <member>id - identyfikator</member>
		    <member>name - nazwa</member>
		    <member>prio - priorytet</member>
		    <member>description - opis</member>
		</simplelist>
	    </sect2>
	    <sect2 id="nodegroupassignments">
	        <title>Grupy komputerów - powiązania ('nodegroupassignments')</title>
		<simplelist>
		    <member>id - identyfikator rekordu</member>
		    <member>nodegroupid - identyfikator grupy</member>
		    <member>nodeid - identyfikator komputera</member>
		</simplelist>
	    </sect2>
	    <sect2 id="nastypes">
	        <title>Typy NAS ('nastypes')</title>
		<simplelist>
		    <member>id - identyfikator rekordu</member>
		    <member>name - nazwa typu urządzenia</member>
		</simplelist>
	    </sect2>
          <sect2 id="cash">
               <title>Operacje finansowe ('cash')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>time - znacznik czasu zaksięgowania operacji</member>
		    <member>type - typ operacji (1-płatność, 0-zobowiązanie)</member>
                    <member>userid - identyfikator użytkownika dokonującego operacji</member>
                    <member>value - wartość w złotych</member>
                    <member>taxid - identyfikator stawki podatkowej</member>
                    <member>customerid - identyfikator klienta ('0' - jeśli nie dotyczy)</member>
                    <member>docid - identyfikator dokumentu (np. faktury) obejmującego daną operację</member>
                    <member>itemid - nr pozycji na fakturze</member>
		    <member>importid - identyfikator importu</member>
		    <member>sourceid - identyfikator źródła importu</member>
                    <member>comment - opis operacji</member>
               </simplelist>
          </sect2>
          <sect2 id="cashimport">
               <title>Import operacji finansowych ('cashimport')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>date - znacznik czasu operacji</member>
                    <member>value - kwota operacji</member>
                    <member>customer - dane wpłacającego</member>
                    <member>description - opis operacji</member>
                    <member>customerid - identyfikator klienta</member>
                    <member>hash - unikalny skrót danych operacji</member>
		    <member>sourceid - identyfikator źródła importu</member>
		    <member>sourcefileid - identyfikator pliku importu</member>
                    <member>closed - status operacji</member>
               </simplelist>
          </sect2>
	  <sect2 id="cashsources">
               <title>Żródła importu ('cashsources')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>name - nazwa</member>
                    <member>description - opis</member>
               </simplelist>
          </sect2>
          <sect2 id="sourcefiles">
               <title>Paczki importu ('sourcefiles')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>name - nazwa pliku</member>
                    <member>idate - data/czas importu</member>
                    <member>userid - identyfikator użytkownika</member>
               </simplelist>
          </sect2>
          <sect2 id="taxes">
               <title>Stawki podatkowe ('taxes')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>value - wartość procentowa stawki</member>
                    <member>label - etykieta stawki</member>
                    <member>validfrom - początek okresu obowiązywania</member>
                    <member>validto - koniec okresu obowiązywania</member>
                    <member>taxed - status opodatkowania (1-tak, 0-nie)</member>
               </simplelist>
          </sect2>
          <sect2 id="tariffs">
               <title>Taryfy ('tariffs')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>name - nazwa taryfy</member>
                    <member>type - typ taryfy (zobacz lib/definitions.php)</member>
                    <member>value - kwota</member>
                    <member>taxid - identyfikator stawki podatkowej</member>
                    <member>period - okres płatności (dla podanej kwoty taryfy)</member>
                    <member>prodid - numer PKWiU</member>
                    <member>uprate - gwarantowany upload</member>
                    <member>upceil - maksymalny upload</member>
                    <member>downrate - gwarantowany download</member>
                    <member>downceil - maksymalny download</member>
                    <member>climit - limit połączeń</member>
                    <member>plimit - limit pakietów w jednostce czasu</member>
                    <member>uprate_n - gwarantowany upload w nocy</member>
                    <member>upceil_n - maksymalny upload w nocy</member>
                    <member>downrate_n - gwarantowany download w nocy</member>
                    <member>downceil_n - maksymalny download w nocy</member>
                    <member>climit_n - limit połączeń w nocy</member>
                    <member>plimit_n - limit pakietów w jednostce czasu w nocy</member>
                    <member>plimit - limit danych w jednostce czasu</member>
                    <member>domain_limit - limit liczby domen</member>
		    <member>alias_limit - limit liczby aliasów</member>
		    <member>sh_limit - limit liczby kont shellowych</member>
		    <member>mail_limit - limit liczby kont pocztowych</member>
		    <member>www_limit - limit liczby kont www</member>
		    <member>ftp_limit - limit liczby kont ftp</member>
		    <member>sql_limit - limit liczby kont sql</member>
		    <member>quota_sh_limit - limit quoty dla konta shellowego</member>
		    <member>quota_mail_limit - limit quoty dla konta pocztowego</member>
		    <member>quota_www_limit - limit quoty dla konta www</member>
		    <member>quota_ftp_limit - limit quoty dla konta ftp</member>
		    <member>quota_sql_limit - limit quoty dla konta sql</member>
		    <member>description - opis</member>
		    <member>disabled - status taryfy: włączona/wyłączona (0/1)</member>
               </simplelist>
          </sect2>
          <sect2 id="promotions">
               <title>Promocje ('promotions')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>name - nazwa promocji</member>
                    <member>description - opis</member>
                    <member>disabled - status</member>
               </simplelist>
          </sect2>
          <sect2 id="promotionschemas">
               <title>Schematy promocji ('promotionschemas')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>name - nazwa schematu</member>
                    <member>description - opis</member>
                    <member>promotionid - identyfikator promocji</member>
                    <member>data - definicja okresów schematu</member>
                    <member>disabled - status</member>
                    <member>continuation - włączenie przedłużenia umowy</member>
                    <member>ctariffid - identyfikator taryfy dodatkowej w okresie po promocji</member>
               </simplelist>
          </sect2>
          <sect2 id="promotionassignments">
               <title>Powiązania schematów z taryfami ('promotionassignments')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>promotionschemaid - identyfikator schematu</member>
                    <member>tariffid - identyfikator taryfy</member>
                    <member>data - definicje kwot abonamentu</member>
               </simplelist>
          </sect2>
        <sect2 id="liabilities">
		<title>Zobowiązania ('liabilities')</title>
		<simplelist>
			<member>id - identyfikator</member>
			<member>name - nazwa (opis) zobowiązania</member>
			<member>value - kwota</member>
			<member>taxid - identyfikator stawki podatkowej</member>
			<member>prodid - numer PKWiU</member>
		</simplelist>
	</sect2>
          <sect2 id="payments">
               <title>Opłaty stałe ('payments')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>name - nazwa</member>
                    <member>value - kwota</member>
                    <member>creditor - nazwa wierzyciela</member>
                    <member>period - typ okresu naliczania: codziennie/co tydzień/co miesiąc/co kwartał/co rok (1/2/3/4/5)</member>
                    <member>at - dzień naliczenia</member>
                    <member>description - opis</member>
               </simplelist>
          </sect2>
          <sect2 id="assignments">
               <title>Powiązania ('assignments')</title>
                  <simplelist>
                    <member>id - identyfikator</member>
                    <member>tariffid - identyfikator taryfy</member>
		    <member>liabilityid - identyfikator zobowiązania</member>
                    <member>customerid - identyfikator klienta</member>
                    <member>period - typ okresu naliczania: codziennie/co tydzień/co miesiąc/co kwartał/co rok (1/2/3/4/5)</member>
                    <member>at - dzień naliczania</member>
                    <member>datefrom - data obowiązywania zobowiązania</member>
                    <member>dateto - data obowiązywania zobowiązania</member>
                    <member>invoice - określa czy ma być wystawiana faktura (1 - tak, 0 - nie)</member>
                    <member>pdiscount - wartość procentowa rabatu</member>
                    <member>vdiscount - wartość kwotowa rabatu</member>
                    <member>suspended - zawieszenie płatności (1 - tak, 0 - nie)</member>
		    <member>settlement - rozliczenie okresu niepełnego (1 - tak, 0 - nie)</member>
		    <member>paytype - identyfikator typu płatności faktury</member>
		    <member>numberplanid - identyfikator planu numeracyjnego</member>
               </simplelist>
          </sect2>
	<sect2 id="nodeassignments">
		<title>Powiązania komputer-taryfa ('nodeassignments')</title>
		<simplelist>
			<member>id - identyfikator</member>
			<member>assignmentid - identyfikator zobowiązania</member>
			<member>nodeid - identyfikator komputera</member>
		</simplelist>
        </sect2>
	<sect2 id="numberplans">
               <title>Plany (szablony) numeracyjne dokumentów ('numberplans')</title>
                  <simplelist>
                    <member>id - identyfikator</member>
                    <member>template - szablon (wzorzec) numeru</member>
                    <member>period - typ okresu numeracyjnego: dzień/tydzień/miesiąc/kwartał/rok</member>
                    <member>doctype - typ dokumentu</member>
                    <member>isdefault - '1' - jeśli dany plan jest domyślny dla wybranego typu dokumentów, '0' - jeśli nie</member>
               </simplelist>
        </sect2>
	<sect2 id="numberplanassignments">
		  <title>Powiązania planów num. z firmami ('numberplanassignments')</title>
		  <simplelist>
			<member>id - identyfikator</member>
			<member>planid - identyfikator planu</member>
			<member>divisionid - identyfikator firmy</member>
		  </simplelist>
          </sect2>
	  <sect2 id="cashregs">
		<title>Rejestry kasowe ('cashregs')</title>
		<simplelist>
			<member>id - identyfikator</member>
			<member>name - nazwa rejestru</member>
			<member>description - dodatkowy opis</member>
			<member>in_numberplanid - identyfikator planu numeracyjnego dla dowodów wpłaty</member>
			<member>out_numberplanid - identyfikator planu numeracyjnego dla dowodów wypłaty</member>
			<member>disabled - wyłączenie sumowania (0/1)</member>
		</simplelist>
	  </sect2>
	  <sect2 id="cashrights">
		  <title>Rejestry kasowe - uprawnienia ('cashrights')</title>
		  <simplelist>
			  <member>id - identyfikator</member>
			  <member>regid - identyfikator rejestru</member>
			  <member>userid - identyfikator użytkownika</member>
			  <member>rights - (1-odczyt, 2-zapis, 3-zaawansowane)</member>
		  </simplelist>
          </sect2>
	<sect2 id="cashreglog">
	        <title>Cash registries - cash history ('cashreglog')</title>
		<simplelist>
			<member>id - identyfikator</member>
			<member>regid - identyfikator rejestru</member>
			<member>userid - identyfikator użytkownika</member>
			<member>time - data i godzina wpisu</member>
			<member>value - rzeczywista wartość stanu kasy (gotówki)</member>
			<member>snapshot - wartość stanu kasy</member>
			<member>description - dodatkowe informacje</member>
		</simplelist>
	</sect2>
          <sect2 id="documents">
               <title>Dokumenty: faktury, KP, umowy, etc. ('documents')</title>
                  <simplelist>
                    <member>id - identyfikator</member>
                    <member>number - numer dokumentu (%N)</member>
		    <member>extnumber - dodatkowy numer dokumentu (%I)</member>
		    <member>numberplanid - identyfikator planu numeracyjnego</member>
		    <member>type - typ dokumentu (1-faktura, 2-KP)</member>
                    <member>cdate - data wystawienia</member>
                    <member>sdate - data sprzedaży (dla faktur)</member>
                    <member>paytime - termin płatności (ilość dni)</member>
                    <member>paytype - rodzaj płatności (1-gotówka, 2-przelew, 3-przelew/gotówka, 4-karta, 5-kompensata, 6-barter, 7-umowa)</member>
                    <member>customerid - identyfikator klienta-nabywcy</member>
		    <member>userid - identyfikator użytkownika wystawiającego dokument</member>
		    <member>divisionid - identyfikator firmy (oddziału)</member>
                    <member>name - nazwa (nazwisko i imię) klienta</member>
                    <member>address - adres klienta</member>
                    <member>ten - nip klienta</member>
                    <member>ssn - PESEL klienta</member>
                    <member>zip - kod pocztowy klienta</member>
                    <member>city - miasto klienta</member>
		    <member>countryid - identyfikator kraju</member>
		    <member>closed - czy dokument jest rozliczony? (0/1)</member>
		    <member>reference - ID dokumentu (np. korygowanej faktury)</member>
		    <member>reason - np. powód korekty faktury</member>
               </simplelist>
          </sect2>
          <sect2 id="documentcontents">
               <title>Dokumenty niefinansowe ('documentcontents')</title>
                  <simplelist>
                    <member>docid - identyfikator dokumentu</member>
                    <member>title - tytuł dokumentu</member>
		    <member>fromdate - początek okresu obowiązywania</member>
                    <member>todate - koniec okresu obowiązywania</member>
                    <member>filename - nazwa pliku</member>
                    <member>contenttype - typ pliku</member>
                    <member>md5sum - suma md5 pliku</member>
		    <member>description - dodatkowy opis</member>
               </simplelist>
          </sect2>
          <sect2 id="invoicecontents">
               <title>Faktury ('invoicecontents')</title>
                  <simplelist>
                    <member>docid - identyfikator faktury</member>
                    <member>itemid - nr pozycji</member>
                    <member>value - kwota pozycji</member>
		    <member>pdiscount - wartość procentowa rabatu</member>
		    <member>vdiscount - wartość kwotowa rabatu</member>
                    <member>taxid - identyfikator stawki podatkowej</member>
                    <member>prodid - numer PKWiU</member>
                    <member>content - użyta jednostka (najczęściej 'szt.')</member>
                    <member>count - ilość</member>
                    <member>description - opis</member>
                    <member>tariffid - identyfikator taryfy</member>
               </simplelist>
          </sect2>
	  <sect2 id="debitnotecontents">
		  <title>Noty obciążeniowe ('debitnotecontents')</title>
		  <simplelist>
			  <member>docid - identyfikator noty</member>
			  <member>itemid - nr pozycji</member>
			  <member>value - kwota pozycji</member>
			  <member>description - opis</member>
		  </simplelist>
          </sect2>
          <sect2 id="receiptcontents">
               <title>Potwierdzenia wpłaty - KP ('receiptcontents')</title>
                  <simplelist>
                    <member>docid - identyfikator faktury</member>
                    <member>itemid - nr pozycji</member>
		    <member>regid - identyfikator rejestru</member>
                    <member>value - kwota pozycji</member>
                    <member>description - opis pozycji</member>
               </simplelist>
          </sect2>
	  <sect2 id="docrights">
                <title>Dokumenty - uprawnienia ('docrights')</title>
                <simplelist>
                        <member>userid - identyfikator użytkownika</member>
                        <member>doctype - id typu dokumentu (zobacz lib/definitions.php)</member>
                        <member>rights - uprawnienia (1-odczyt, 2-tworzenie, 3-zatwierdzanie, 4-edycja, 5-usuwanie)</member>
                </simplelist>
          </sect2>
	<sect2 id="imessengers">
		<title>Identyfikatory internetowe ('imessengers')</title>
		<simplelist>
			<member>id - identyfikator rekordu</member>
			<member>customerid - identyfikator klienta</member>
			<member>uid - identyfikator/nazwa użytkownika komunikatora </member>
			<member>type - typ komunikatora (0-gadu-gadu, 1-yahoo, 2-skype)</member>
		</simplelist>
	</sect2>
	<sect2 id="customercontacts">
		<title>Kontakty ('customercontacts')</title>
		<simplelist>
			<member>id - identyfikator rekordu</member>
			<member>customerid - identyfikator klienta</member>
			<member>phone - numer telefoniczny</member>
			<member>name - nazwa/opis kontaktu</member>
			<member>type - typ kontaktu (suma flag: 1-komórka, 2-fax)</member>
		</simplelist>
	</sect2>
	<sect2 id="domains">
		<title>Domeny ('domains')</title>
		<simplelist>
			<member>id - identyfikator rekordu</member>
			<member>name - nazwa domeny</member>
			<member>type - typ DNS ('MASTER', 'SLAVE', 'NATIVE')</member>
			<member>master - adres głównego serwera DNS</member>
			<member>account - adres e-mail administratora DNS</member>
			<member>last_check - znacznik czasu</member>
			<member>notified_serial - znacznik czasu</member>
		</simplelist>
	</sect2>
	<sect2 id="records">
		<title>Rekordy DNS ('records')</title>
		<simplelist>
			<member>id - identyfikator rekordu</member>
			<member>domain_id - identyfikator domeny</member>
			<member>name - nazwa</member>
			<member>type - typ rekordu (MX, SOA, A, AAAA, itd.)</member>
			<member>content - dane</member>
			<member>ttl - TTL</member>
			<member>prio - priorytet</member>
			<member>change_date - znacznik czasu ostatniej zmiany</member>
		</simplelist>
	</sect2>
          <sect2 id="passwd">
               <title>Konta ('passwd')</title>
               <simplelist>
                    <member>id - identyfikator rekordu</member>
                    <member>ownerid - identyfikator klienta (0 - konto "systemowe")</member>
                    <member>login - nazwa konta</member>
                    <member>password - hasło zaszyfrowane funkcją crypt()</member>
                    <member>realname - dodatkowa nazwa konta/użytkownika</member>
                    <member>lastlogin - data ostatniego logowania</member>
                    <member>uid - identyfikator systemowy konta</member>
                    <member>home - katalog domowy</member>
                    <member>type - typ konta (suma: 1-shell, 2-poczta, 4-www, 8-ftp)</member>
                    <member>expdate - data ważności konta</member>
                    <member>domainid - identyfikator domeny z tabeli 'domains'</member>
                    <member>createtime - data utworzenia konta</member>
                    <member>quota_sh - limit</member>
                    <member>quota_mail - limit</member>
                    <member>quota_www - limit</member>
                    <member>quota_ftp - limit</member>
		    <member>quota_sql - limit</member>
		    <member>mail_forward - adres email przekierowania</member>
		    <member>mail_bcc - adres email kopii BCC</member>
		    <member>description - dodatkowe informacje</member>
               </simplelist>
          </sect2>
          <sect2 id="aliases">
               <title>Aliasy ('aliases')</title>
               <simplelist>
                    <member>id - identyfikator rekordu</member>
                    <member>login - nazwa konta (bez domeny)</member>
                    <member>domainid - identyfikator domeny</member>
               </simplelist>
          </sect2>
	<sect2 id="aliasassignments">
		<title>Powiązania aliasów z kontami ('aliasassignments')</title>
		<simplelist>
		<member>id - identyfikator rekordu</member>
		<member>aliasid - indentyfikator aliasu</member>
		<member>accountid - identyfikator konta</member>
		<member>mail_forward - adres przekierowania</member>
		</simplelist>
        </sect2>
	<sect2 id="voipaccounts">
		<title>Konta VoIP ('voipaccounts')</title>
		<simplelist>
			<member>id - identyfikator rekordu</member>
			<member>ownerid - identyfikator właściciela (klienta)</member>
			<member>login - login</member>
			<member>passwd - hasło</member>
			<member>phone - numer telefonu</member>
			<member>access - włączone/wyłączone (1/0)</member>
			<member>creationdate - data utworzenia</member>
			<member>moddate - date ostatniej zmiany</member>
			<member>creatorid - identyfikator użytkownika</member>
			<member>modid - identyfikator użytkownika</member>
		</simplelist>
	</sect2>
          <sect2 id="stats">
               <title>Statystyki wykorzystania łącza ('stats')</title>
               <simplelist>
                    <member>nodeid - numer komputera</member>
                    <member>dt - znacznik czasu</member>
                    <member>upload - ilość danych wysłanych, w bajtach</member>
                    <member>download - ilość danych odebranych, w bajtach</member>
               </simplelist>
          </sect2>
          <sect2 id="rtqueues">
               <title>Helpdesk - kolejki ('rtqueues')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>name - nazwa</member>
                    <member>email - adres konta pocztowego</member>
                    <member>description - opis dodatkowy</member>
               </simplelist>
          </sect2>
          <sect2 id="rttickets">
               <title>Helpdesk - zgłoszenia ('rttickets')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>queueid - identyfikator kolejki</member>
                    <member>requestor - dane zgłaszającego-klienta (w tym e-mail)</member>
                    <member>customerid - identyfikator klienta</member>
                    <member>subject - temat zgłoszenia</member>
                    <member>state - status (0-nowy, 1-otwarty, 2-rozwiązany, 3-martwy)</member>
		    <member>cause - przyczyna zgłoszenia (0-nieznana, 1-klient, 2-firma)</member>
                    <member>owner - identyfikator właściciela-użytkownika</member>
		    <member>creatorid - identyfikator użytkownika dodającego zgłoszenie</member>
                    <member>createtime - data zgłoszenia</member>
               </simplelist>
          </sect2>
          <sect2 id="rtmessages">
               <title>Helpdesk - wiadomości ('rtmessages')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>ticketid - identyfikator zgłoszenia</member>
                    <member>userid - identyfikator użytkownika-nadawcy</member>
                    <member>customerid - identyfikator klienta-nadawcy</member>
                    <member>mailfrom - e-mail nadawcy</member>
                    <member>subject - temat wiadomości</member>
                    <member>messageid - pocztowy identyfikator wiadomości</member>
                    <member>inreplyto - identyfikator poprzedniej wiadomości</member>
                    <member>replyto - nagłówek wiadomości</member>
                    <member>headers - wszystkie nagłówki pocztowe wiadomości</member>
                    <member>body - treść wiadomości</member>
                    <member>createtime - data utworzenia/wysłania/odebrania </member>
               </simplelist>
          </sect2>
          <sect2 id="rtattachments">
               <title>Helpdesk - załączniki ('rtattachments')</title>
               <simplelist>
                    <member>messageid - identyfikator wiadomości</member>
                    <member>filename - nazwa pliku</member>
                    <member>contenttype - typ pliku</member>
               </simplelist>
          </sect2>
          <sect2 id="rtnotes">
               <title>Helpdesk - notatki ('rtnotes')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>ticketid - identyfikator zgłoszenia</member>
                    <member>userid - identyfikator użytkownika</member>
                    <member>body - treść notatki</member>
                    <member>createtime - data utworzenia</member>
               </simplelist>
          </sect2>
          <sect2 id="rtrights">
               <title>Helpdesk - uprawnienia ('rtrights')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>queueid - identyfikator kolejki</member>
                    <member>userid - identyfikator użytkownika</member>
                    <member>rights - (1-odczyt, 2-zapis, 3-powiadomienia)</member>
               </simplelist>
          </sect2>
          <sect2 id="uiconfig">
               <title>Konfiguracja LMS-UI ('uiconfig')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>section - nazwa sekcji</member>
                    <member>var - nazwa opcji konfiguracyjnej</member>
                    <member>value - wartość</member>
                    <member>description - opis/komentarz</member>
                    <member>disabled - wyłączenie opcji (0-wł., 1-wył.)</member>
               </simplelist>
          </sect2>
          <sect2 id="events">
               <title>Terminarz - zdarzenia ('events')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>title - tytuł</member>
                    <member>description - opis</member>
                    <member>note - notatka</member>
                    <member>date - data zdarzenia</member>
                    <member>begintime - początek zdarzenia</member>
                    <member>endtime - koniec zdarzenia</member>
                    <member>userid - identyfikator użytkownika tworzącego wpis w terminarzu</member>
                    <member>customerid - identyfikator klienta</member>
                    <member>private - prywatny/publiczny</member>
                    <member>closed - status zamknięcia</member>
		    <member>moduserid - id użytkownika, który ostatnio zmodyfikował zdarzenie</member>
		    <member>moddate - data ostatniej modyfikacji zdarzenia</member>
               </simplelist>
          </sect2>
          <sect2 id="eventassignments">
               <title>Terminarz - powiązania ('eventassignments')</title>
               <simplelist>
                    <member>eventid - identyfikator zdarzenia</member>
                    <member>userid - identyfikator użytkownika</member>
               </simplelist>
          </sect2>
          <sect2 id="hosts">
               <title>Hosty ('hosts')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>name - nazwa hosta</member>
                    <member>description - opis</member>
                    <member>lastreload - data ostatniego przeładowania</member>
                    <member>reload - żądanie przeładowania</member>
               </simplelist>
          </sect2>
          <sect2 id="daemoninstances">
               <title>Konfiguracja demona - instancje ('daemoninstances')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>name - nazwa instancji</member>
                    <member>hostid - identyfikator hosta</member>
                    <member>module - nazwa i ścieżka do modułu</member>
                    <member>crontab - czas wykonania</member>
                    <member>priority - priorytet przeładowania</member>
                    <member>description - opis</member>
                    <member>disabled - status (włączona/wyłączona)</member>
               </simplelist>
          </sect2>
          <sect2 id="daemonconfig">
               <title>Konfiguracja demona - opcje ('daemonconfig')</title>
               <simplelist>
                    <member>id - identyfikator</member>
                    <member>instanceid - identyfikator instancji</member>
                    <member>var - nazwa opcji</member>
                    <member>value - wartość opcji</member>
                    <member>description - opis</member>
                    <member>disabled - status (włączona/wyłączona)</member>
               </simplelist>
          </sect2>
          <sect2 id="sessions">
               <title>Sesje ('sessions')</title>
               <simplelist>
                    <member>id - identyfikator sesji</member>
                    <member>ctime - czas utworzenia</member>
                    <member>mtime - czas modyfikacji</member>
                    <member>atime - czas ost. dostępu</member>
                    <member>vdata - dane weryfikujące</member>
                    <member>content - dane</member>
               </simplelist>
          </sect2>
	<sect2 id="states">
		<title>Województwa ('states')</title>
		<simplelist>
			<member>id - identyfikator</member>
			<member>name - nazwa województwa</member>
			<member>description - informacje dodatkowe</member>
		</simplelist>
	</sect2>
	<sect2 id="zipcodes">
		<title>Kody pocztowe ('zipcodes')</title>
		<simplelist>
			<member>id - identyfikator</member>
			<member>zip -  kod pocztowy</member>
			<member>stateid - identyfikator województwa</member>
		</simplelist>
	</sect2>
	<sect2 id="countries">
		<title>Kraje ('countries')</title>
		<simplelist>
			<member>id - identyfikator</member>
			<member>name -  nazwa kraju</member>
		</simplelist>
	</sect2>
	<sect2 id="divisions">
		<title>Firmy/Oddziały ('divisions')</title>
		<simplelist>
			<member>id - identyfikator</member>
			<member>shortname -  nazwa skrócona firmy</member>
			<member>name - pełna nazwa firmy</member>
			<member>address - adres</member>
			<member>zip - kod pocztowy</member>
			<member>city - miasto</member>
			<member>countryid - identyfikator kraju</member>
                	<member>ten - numer identyfikacji podatkowej NIP</member>
			<member>regon - numer REGON</member>
			<member>account - konto bankowe lub prefiks konta płatności masowych</member>
			<member>description - informacje dodatkowe</member>
			<member>status - status blokady (1/0)</member>
			<member>inv_header - nagłówek faktury</member>
			<member>inv_footer - stopka faktury</member>
			<member>inv_author - wystawca faktury</member>
			<member>inv_cplace - miejsce wystawienia faktury</member>
			<member>inv_paytime - termin płatności faktury</member>
			<member>inv_paytype - sposób płatności faktury (zobacz tabela documents)</member>
		</simplelist>
	</sect2>
	<sect2 id="messages">
		<title>Wiadomości - lista ('messages')</title>
		<simplelist>
			<member>id - identyfikator</member>
			<member>subject - temat wiadomości</member>
			<member>body - treść wiadomości</member>
			<member>cdate - data utworzenia</member>
			<member>type - typ (1-email, 2-sms)</member>
			<member>userid - identyfikator nadawcy (użytkownika)</member>
			<member>sender - nagłówek 'From' wiadomości e-mail</member>
		</simplelist>
	</sect2>
	<sect2 id="messagesitems">
		<title>Wiadomości - szczegóły ('messageitems')</title>
		<simplelist>
			<member>id - identyfikator</member>
			<member>messageid - identyfikator wiadomości</member>
			<member>customerid - identyfikator odbiorcy (klienta)</member>
			<member>destination - numer tel./adres e-mail odbiorcy</member>
			<member>lastdate - data ostatniego przetwarzania (wysłania lub błędu)</member>
			<member>status - status wysyłki (zobacz lib/definitions.php)</member>
			<member>error - komunikat błędu</member>
		</simplelist>
	</sect2>
          <sect2 id="dbinfo">
               <title>Informacje o bazie danych ('dbinfo')</title>
               <simplelist>
                    <member>keytype - typ</member>
                    <member>keyvalue - wartość</member>
               </simplelist>
          </sect2>
     </sect1>
     <sect1 id="devel-ini">
          <title>Format pliku konfiguracyjnego</title>
          <para>W pliku konfiguracyjnym LMS'a (standardowo <filename>/etc/lms/lms.ini</filename>)
          można ustawiać parametry <emphasis>LMS-UI</emphasis>, <emphasis>LMS_MGC</emphasis>
	  i innych skryptów. Przechowywanie konfiguracji demona <emphasis>lmsd</emphasis>
	  w pliku konfiguracyjnym nie jest zalecane. Format wartości parametrów dla skryptów 
	  perlowych podlega większym restrykcjom niż dla UI.</para>
          <sect2 id="ini-comments">
               <title>Komentarze</title>
               <para>Programy parsujące plik konfiguracyjny pomijają wszystkie linie
               zaczynające się znakiem '#' lub ';'. Komentarze poprzedzone jednym z tych
               znaków można także wstawiać w tej samej linii co sekcje i opcje.</para>
          </sect2>
          <sect2 id="ini-params">
               <title>Sekcje, klucze, wartości</title>
               <para>Opcje konfiguracyjne pogrupowane są w sekcje. Nazwę sekcji, składającą
               się z liter i/lub cyfr należy zamknąć w nawiasy kwadratowe. Ich nazwy
               powinny być unikalne.</para>
               <para>Sekcje i parametry umieszcza się w osobnych liniach. Parametry
               składają się z klucza i wartości. Klucz to nazwa parametru konfiguracyjnego
               składająca się z liter i/lub cyfr. W tej samej linii co klucz, po znaku
               równości, umieszcza się wartość parametru. Jeśli wartość zawiera znaki specjalne
               należy ją objąć w apostrofy lub cudzysłów.</para>
               <example id="config-format">
                    <title>Format opcji konfiguracyjnych</title>
                    <screen>
[sekcja]
klucz = wartość 
zmienna1 = "jakiś tekst"
para_metr = 'zmienna "para_metr" w apostrofach'

[sekcja_1]                    #tu można komentować
klucz = "tekst ze znakami \t i ;"     ; tu też można komentować
; a to jest komentarz na całą linię
key = "A.L.E.C's LMS Daemon is the best"
# opcja = wyłączona
</screen>
               </example>
          </sect2>
          <sect2 id="ini-perl">
               <title>Zmienne dla skryptów perlowych</title>
               <para>Konfiguracja skryptów perlowych, z uwagi na zastosowanie
               modułu Config::IniFiles, ma pewne ograniczenia. Komentarze mogą
               być wstawiane tylko i wyłącznie w nowej linii. Wartości
               zmiennych nie obejmuje się w apostrofy lub cudzysłów, a są
               one czytane od znaku równości do końca wiersza. Dlatego właśnie 
               nie można umieszczać komentarzy w jednej linii z parametrami.
               </para>
          </sect2>
     </sect1>
     <sect1 id="devel-genfake">
          <title>Generowanie danych losowych</title>
          <para>Dla osób chcących szybko sprawdzić jak działa LMS przygotowaliśmy
          moduł 'genfake', służący do tworzenia bazy zawierającej przykładowe dane. </para>
          <para>Aby wygenerować dane należy, po zalogowaniu się w LMS'ie wywołać adres <filename>
          http://twoj.serwer.net/lms/?m=genfake</filename>, określić ilu
          użytkowników ma zostać stworzonych i nacisnąć ENTER. To wszystko. Ewentualne błędy
          bazy danych, spowodowane ograniczeniami unikalności niektórych danych, można zignorować.
          <note><para>Dla prawidłowego wygenerowania zależności, moduł 'genfake'
          należy uruchamiać na pustej, nowo utworzonej bazie.</para></note>
          <warning><para>Wszystkie dane (oprócz danych użytkowników) zostaną
          usunięte z bazy.</para></warning>
          </para>
     </sect1>
     <sect1 id="devel-rights">
          <title>Poziomy dostępu</title>
          <para>W  sumie  tutaj  to  wytłumaczę  bardziej  dla developerów, gdyż osoby
          korzystające z LMS raczej nie będą zainteresowane.</para>
          <para>Oryginalnie poziomy dostępu miały być definiowane poprzez różne litery.
          Było to  założenie  z  czasów LMS-0.4, lecz nigdy nie wykorzystane. Z
          racji  tego,  że  weszło  to  do 1.0, długo się głowiłem jak wykorzystać
          64-znakowego  stringa. Otóż w kolumnie rights jest po prostu 64-znakowa
          (256-bitowa)  liczba  heksadecymalna.  Każdy jej znak może opisać
          maksymalnie  cztery bity kombinacji (4*64 = 256 - stąd ilość możliwych
          poziomów).  Tak  więc  włączenie  jakiegoś  poziomu  dostępu  powoduje
          ustawienie  w  tej  liczbie  odpowiedniego  bitu.  I tak jeżeli "pełen
          dostęp"  ma pozycję 0 w lib/accesstable.php, zostanie ustawiony bit 0,
          czyli  będzie  to liczba 1. Więc poziomy mogą mieć numery od 0 do 255.
          Nie jest to finalne ograniczenie. Stosując więcej liter i znaków można
          rozszerzyć ilość możliwych kombinacji do przynajmniej 6 bitów na znak,
          co da nam 384 kombinacje.
          </para>
     </sect1>
     <sect1 id="devel-limits">
          <title>Ograniczenia</title>
          <para>Każdy system ma ograniczenia. Pewne wynikają z użytego silnika SQL (DBMS)
          inne zaś z założeń [prawie] świadomie podjętych przez developerów. Nasz system
          takowe posiada:</para>
          <sect2 id="devel-limits-lms">
               <title>Wynikające z naszego projektu</title>
               <para>Ilość pieniędzy (tabela 'cash'). Pieniążki (od lms-1.1) przechowywaliśmy jako
               32 bitową liczbę całkowitą i w związku z tym za 8 lat mogliście nas nie lubić 
               posiadając około 5000 użytkowników.  Aktualnie (od lms-1.1.7 Hathor) używamy 
               bardziej odpowiedniego typu danych [decimal (9.2), 2 miejsca znaczące po przecinku,
               a w sumie 9 miejsc na całą liczbę]. Maksymalna wartość to 9'999'999.99 (dotyczy sumy                wszystkich operacji finansowych!). Procedury konwertujące liczby na słowa są 
               przygotowane na kwoty tak duże jak 10^18.</para>
          </sect2>
          <sect2 id="devel-limits-db">
               <title>Wynikające z używanego DBMS</title>
               <itemizedlist>
               <listitem>
               <para>MySQL</para>
               <itemizedlist>
               <listitem>
               <para>Rozmiar bazy danych:</para>
               <para>Jak mówi dokumentacja do MySQL'a (rozdział: Table size, paragraf "How Big Can
               MySQL Tables Be?"), MySQL wersja 3.22 był ograniczony do 4 GB na tabelkę.
               W wersji zaś 3.23 zostało to podniesione do 8 milionów terabajtów (czyli
               2^63 bajtów). Jednak warto zauważyć że różne systemy operacyjne mają
               limity nakładane przez systemy plików, najczęściej jest to 2 lub 4 GB.</para>
               </listitem>
               <listitem>
               <para>Ilość rekordów:</para>
               <para>Prawdziwe informacje na temat limitów uzyskamy dopiero po wydaniu polecenia:
               (w interpreterze poleceń mysql)</para>
               <screen>
mysql&gt; show table status;

...| Avg_row_length | Data_length | Max_data_length | Index_length |
...|             44 |       24136 |      4294967295 |        19456 |</screen>
               <para>Zauważymy że miejsca wystarczy na około 175 000 razy tyle ile mamy
               aktualnie wpisów w tabelce. (czyt.: możesz spać spokojnie, chyba że
               planujesz posiadanie ponad 100000 użytkowników :-)</para>
               </listitem>
               </itemizedlist>
               </listitem>
               <listitem>
               <para>PostgreSQL</para>
               <itemizedlist>
               <listitem>
               <para>Rozmiar bazy danych:</para>
               <para>PostgreSQL zapisuje dane w porcjach po 8 kB. Liczba tych bloków jest
               ograniczona do 32-bitowej liczby całkowitej ze znakiem, dając maksymalną
               wielkość tabeli wynoszącą 16 terabajtów. Z uwagi na ograniczenia systemów
               operacyjnych dane przechowywane są w wielu plikach o wielkości 1 GB każdy.</para>
               </listitem>
               <listitem>
               <para>Ilość rekordów:</para>
               <para>PostgreSQL nie narzuca ograniczenia na liczbę wierszy w dowolnej tabeli.</para>
               </listitem>
               </itemizedlist>
               </listitem>
               </itemizedlist>
          </sect2>
     </sect1>
</chapter>
