Witam Szanownych Forumowiczów

Piszę aplikację web, obsługującą depozyt towarowy u klienta.
Założenia to:
- wiecej niż jeden magazyn u klienta
- historia towarów
- historia dokumentów
- możliwość skladania zamówień
- możliwość zwrotów i wystawiania pobrań z magazynu
- nadzór dla klienta i handlowaca
- więcej niż jeden klient dla handlowca

Na chwile obecną mam taki projekt bazy rysunek.
Na końcu skryp tworzący. Jeśli znajdzie ktoś czas, by spojrzeć - proszę o uwagi.

Ps. to moja pierwsza baza.
Pozdrawiam, capt.d.

CREATE TABLE Faktury (
idFaktury INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
FK_idLoginu INTEGER UNSIGNED NOT NULL ,
FK_idKlienta INTEGER UNSIGNED NOT NULL ,
FK_idKomentarza INTEGER UNSIGNED NOT NULL DEFAULT 0 ,
FK_idKomentarza2 INTEGER UNSIGNED NOT NULL DEFAULT 0 ,
NrDokumentu CHAR(20) NULL ,
DataDokumentu DATE NULL ,
DataDokumentu2 DATE NULL ,
Temp CHAR NOT NULL DEFAULT T ,
PRIMARY KEY(idFaktury));

CREATE TABLE GrupyTowarowe (
idGrupyTowarowe INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
NazwaGT CHAR(100) NOT NULL DEFAULT NIE PODANO NAZWY ,
PRIMARY KEY(idGrupyTowarowe));

-- ------------------------------------------------------------
-- Dla okteslenia z jakiej firmy
-- Moze w przyszlosci inne dane
-- ------------------------------------------------------------

CREATE TABLE Klienci (
idKlienci INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
NazwaFirmy CHAR(45) NULL ,
Miasto CHAR(45) NULL ,
FK_Komentarza2 INTEGER NULL ,
PRIMARY KEY(idKlienci));

CREATE TABLE Komentarze (
idKomentarze INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Komentarz VARCHAR(255) NULL ,
PRIMARY KEY(idKomentarze));

-- ------------------------------------------------------------
-- Lista idKlienta dla kazdego Loginu z typu sesji (handlowiec, handlowiec_nadzor)
-- ------------------------------------------------------------

CREATE TABLE ListaKlientow (
idListaKlientow INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
FK_idKlienta INTEGER UNSIGNED NOT NULL ,
FK_idLoginu INTEGER UNSIGNED NOT NULL ,
PRIMARY KEY(idListaKlientow));

-- ------------------------------------------------------------
-- Loginy klientow i inforamcje o tej osobie
-- ------------------------------------------------------------

CREATE TABLE Loginy (
idLoginy INTEGER UNSIGNED NOT NULL ,
FK_idKlienta INTEGER UNSIGNED NOT NULL ,
FK_idKomentarza2 INTEGER UNSIGNED NULL ,
Login CHAR(45) NULL ,
Haslo CHAR(45) NULL ,
Imie CHAR(20) NULL ,
Nazwisko CHAR(45) NULL ,
CzyPoImieniu CHAR(1) NOT NULL DEFAULT N ,
CzyFacet CHAR(1) NOT NULL DEFAULT T ,
CzyNaTy CHAR(1) NOT NULL DEFAULT N ,
ImieZdrobniale CHAR(20) NULL ,
TypSesji CHAR(1) NOT NULL DEFAULT K ,
CzyNadzor CHAR(1) NULL DEFAULT N ,
Uprawnienia INTEGER UNSIGNED NULL ,
PRIMARY KEY(idLoginy));

CREATE TABLE Magazyny (
idMagazyny INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
FK_idKlienta INTEGER UNSIGNED NULL ,
NazwaMag CHAR(20) NULL ,
PRIMARY KEY(idMagazyny));

CREATE TABLE Pobrania (
idPobrania INTEGER UNSIGNED NOT NULL ,
FK_idLoginu INTEGER UNSIGNED NOT NULL ,
FK_idLoginu2 INTEGER UNSIGNED NOT NULL ,
FK_idKlienta INTEGER UNSIGNED NOT NULL ,
FK_idKomentarza INTEGER UNSIGNED NOT NULL DEFAULT 0 ,
FK_idKomentarza2 INTEGER UNSIGNED NOT NULL DEFAULT 0 ,
NrDokumentu CHAR(20) NOT NULL ,
DataDokumentu DATE NULL ,
DataDokumentu2 DATE NULL ,
Temp CHAR NOT NULL DEFAULT T ,
PRIMARY KEY(idPobrania));

CREATE TABLE PozycjaNaFakturze (
idPozycjaNaFakturze INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
FK_idFaktury INTEGER UNSIGNED NOT NULL ,
FK_idPozycjiWMagazynie INTEGER UNSIGNED NOT NULL ,
FK_idKomentarza2 INTEGER UNSIGNED NULL DEFAULT 0 ,
Ilosc INTEGER UNSIGNED NULL DEFAULT 1 ,
Pozycja INTEGER UNSIGNED NULL ,
Cena INTEGER UNSIGNED NULL ,
PRIMARY KEY(idPozycjaNaFakturze));


CREATE TABLE PozycjaNaPobraniu (
idPozycjaNaPobraniu INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
FK_idPobrania INTEGER UNSIGNED NOT NULL ,
FK_idPozycjiWMagazynie INTEGER UNSIGNED NOT NULL ,
FK_idLoginu INTEGER UNSIGNED NOT NULL ,
FK_idKomentarza INTEGER UNSIGNED NULL ,
Ilosc INTEGER UNSIGNED NULL ,
Pozycja INTEGER UNSIGNED NULL ,
NrZlecenia CHAR(45) NULL ,
PRIMARY KEY(idPozycjaNaPobraniu));

-- ------------------------------------------------------------
-- FK_idKlienta - towar na WZ moze byc dla kilku klientow wiec moze sie to roznic od FK_idKlienta DOKUMENTU
-- ------------------------------------------------------------

CREATE TABLE PozycjaNaWZ (
idPozycjaNaWZ INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
FK_idPozycjiWMagazynie INTEGER UNSIGNED NOT NULL ,
FK_idWZ INTEGER UNSIGNED NOT NULL ,
FK_idKlienta INTEGER UNSIGNED NOT NULL ,
FK_idKomentarza INTEGER UNSIGNED NULL ,
FK_idKomentarza2 INTEGER UNSIGNED NULL ,
Ilosc INTEGER UNSIGNED NULL ,
Pozycja INTEGER UNSIGNED ZEROFILL NULL ,
PRIMARY KEY(idPozycjaNaWZ));

CREATE TABLE PozycjaNaZamowieniu (
idPozycjaNaZamowieniu INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
FK_idPozycjiWMagazynie INTEGER UNSIGNED NOT NULL ,
FK_idLoginu INTEGER UNSIGNED NOT NULL ,
FK_idKlienta INTEGER UNSIGNED NOT NULL ,
FK_idZamowienia INTEGER UNSIGNED NOT NULL ,
FK_idKomentarza INTEGER UNSIGNED NULL ,
Ilosc INTEGER UNSIGNED NULL ,
Pozycja INTEGER UNSIGNED ZEROFILL NULL ,
ZlecenieNr VARCHAR(45) NULL ,
PRIMARY KEY(idPozycjaNaZamowieniu));

CREATE TABLE PozycjaNaZwrocie (
idPozycjaNaZwrocie INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
FK_idZwrotu INTEGER UNSIGNED NOT NULL ,
FK_idPozycjiWMagazynie INTEGER UNSIGNED NOT NULL ,
FK_idKomentarza INTEGER UNSIGNED NOT NULL DEFAULT 0 ,
FK_idKomentarza2 INTEGER UNSIGNED NOT NULL DEFAULT 0 ,
Ilosc INTEGER UNSIGNED NULL ,
Pozycja INTEGER UNSIGNED NULL DEFAULT 0 ,
PRIMARY KEY(idPozycjaNaZwrocie));

-- ------------------------------------------------------------
-- globalny magazyn
--
-- IloscPapierowa - Stany miedzy dostawa a fakturowaniem
-- IloscFaktyczna - Stany faktyczne uwzgledaniajace pobrania towaru
-- ------------------------------------------------------------

CREATE TABLE PozycjaWMagazynie (
idPozycjaWMagazynie INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
FK_idKlienta INTEGER UNSIGNED NOT NULL ,
FK_idTowaru INTEGER UNSIGNED NOT NULL ,
FK_idMagazynu INTEGER UNSIGNED NOT NULL ,
FK_idKomentarza INTEGER UNSIGNED NULL ,
FK_idKomentarza2 INTEGER UNSIGNED NULL ,
IloscPapierowa INTEGER UNSIGNED NULL ,
IloscFaktyczna INTEGER UNSIGNED NULL ,
IloscMin INTEGER UNSIGNED NULL ,
IloscMax INTEGER UNSIGNED NULL ,
CenaKlienta FLOAT NULL ,
Archiwalny CHAR NULL DEFAULT N ,
Automatycznie CHAR NULL DEFAULT N ,
PRIMARY KEY(idPozycjaWMagazynie, FK_idKlienta, FK_idTowaru));

-- ------------------------------------------------------------
-- Inforamcja o tawarze
-- ------------------------------------------------------------

CREATE TABLE Towary (
idTowary INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
FK_idGrupyTowarowej INTEGER UNSIGNED NOT NULL ,
NazwaT CHAR(45) NULL ,
Symbol CHAR(20) NULL ,
CenaCennikowa FLOAT NULL ,
PRIMARY KEY(idTowary));

CREATE TABLE WZ (
idWZ INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
FK_idLoginu INTEGER UNSIGNED NOT NULL ,
FK_idKlienta INTEGER UNSIGNED NOT NULL ,
FK_idKomentarza INTEGER UNSIGNED NOT NULL DEFAULT 0 ,
FK_idKomentarza2 INTEGER UNSIGNED NOT NULL DEFAULT 0 ,
NrDokumentu CHAR(20) NULL ,
DataDokumentu DATE NULL ,
DataDokumentu2 DATE NULL ,
Temp CHAR NOT NULL DEFAULT T ,
Laczony CHAR NOT NULL DEFAULT N ,
PRIMARY KEY(idWZ));

CREATE TABLE Zamowienia (
idZamowienia INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
FK_idLoginu INTEGER UNSIGNED NOT NULL ,
FK_idLoginu2 INTEGER UNSIGNED NOT NULL ,
FK_idKlienta INTEGER UNSIGNED NOT NULL ,
FK_idPrevZamowienia INTEGER UNSIGNED NOT NULL DEFAULT 0 ,
FK_idNextZamowienia INTEGER UNSIGNED NOT NULL DEFAULT 0 ,
FK_idKomentarza INTEGER UNSIGNED NOT NULL DEFAULT 0 ,
FK_idKomentarza2 INTEGER UNSIGNED NOT NULL DEFAULT 0 ,
NrDokumentu CHAR(20) NULL ,
Temp CHAR NOT NULL DEFAULT T ,
Zrealizowane CHAR NOT NULL DEFAULT N ,
DataDokumentu DATE NULL ,
DataDokumentu2 DATE NULL ,
PRIMARY KEY(idZamowienia));

CREATE TABLE Zwroty (
idZwroty INTEGER UNSIGNED NOT NULL ,
FK_idLoginu INTEGER UNSIGNED NOT NULL ,
FK_idKlienta INTEGER UNSIGNED NOT NULL ,
FK_idLoginu2 INTEGER UNSIGNED NULL ,
FK_idKomentarza INTEGER UNSIGNED NULL ,
FK_idKomentarza2 INTEGER UNSIGNED NULL ,
NrDokumentu CHAR(20) NULL ,
DataDokumentu DATE NULL ,
DataDokumentu2 DATE NULL ,
Temp CHAR NOT NULL DEFAULT T ,
PRIMARY KEY(idZwroty));