Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Struktura bazy - dobre nawyki
Forum PHP.pl > Forum > Bazy danych > MySQL
Lonas
Hej.
Napsalem program do faktur, magazynu w php oparty na my sql - z czasem widze jednak że wiele rzeczy źle rozwiazalem smile.gif

Chce sie zabrac za poprawy.

Chcialem spytać o pare rzeczy :

1) Czy np warto budować jedną tabele w ktorej przechowuje faktury vat i proformy ?

tworze taką strukture w której mam :

TABELA DOKUMENT

id_faktura
rodzaj_dokumentu - ( i tutaj ewentualnie wpisywać np 1 -vat, 2 -proforma )
id_kontrahent
numer
miesiac
rok

itd
Czy raczej powinno to byc w 2 tabelach proformy, vat ?

2) Jak najlepiej rozwiązać taki probiem - firma do dziś ma adres warszawska 5/44 - od jutra zmienia sie siedziba firmy na poznanska 4/55 - czyli wszystkie dokumenty do dzis maja stary adres a od jutra nowy,

Dane kontrahenta trzymam w tabeli

KONTRAHENT
id_kontrahent
nazwa
adres

w momencie zmiany stare dane ida w kosmos, myslalem zeby np dolozyc pole modyfikacja w ktorym bedzie data i jakos na tej podsawie operowac ktory wiersz ma byc wybrany do wyswietlenia na fakturze.


Tyle narazie chcialem sie dowiedziec - bede dopisywal pytania smile.gif
dr_bonzo
1.
Cytat
Czy np warto budować jedną tabele w ktorej przechowuje faktury vat i proformy ?


(nie znam sie na fakturach) Jesli Vat i proformy maja identyczne pola/dane to trzymaj w jednej tabeli z polem TYP.


2.
Cytat
2) Jak najlepiej rozwiązać taki probiem - firma do dziś ma adres warszawska 5/44 - od jutra zmienia sie siedziba firmy na poznanska 4/55 - czyli wszystkie dokumenty do dzis maja stary adres a od jutra nowy,


Rozumiem ze adres w fakturach nie moze sie zmieniac w czasie.
Zapisuj adres kontrachenta (aktualny na dzien wystawienia faktur) w fakturze -- niby bedzie to nadmiarowa informacja (baza nieznormalizowana) ale bedzie zachowana prawidlowosc regul biznesowych (czytaj: bedzie w porzadku smile.gif)

Ew. mozesz zrobic tak ze Kontrachent posiada wiele Adresow (dodawane wraz ze zmiana starego; kolejna tabela) i Kontrachent posiada pole (ktore jest FK do jednego z jego adresow; lub pobierasz najnowszy adres np. po dacie 'utworzenia' adresu).
W rozwiazaniu z FK bedziesz mial cykliczne powiazania: Adres wskazuje na kontrachenta, a Kontrachent na jeden z Adresow. Jak zezwolisz na NULLa w aktualny_adres to powinno byc ok.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.