![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 656 Pomógł: 3 Dołączył: 26.10.2005 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam mała łamigłówkę i pomyślałem, że poproszę o pomoc bardziej doświadczonych w aplikacjach internetowych. Pisze program do księgowości i magazynowania, mam problem, jestem na etapie zaprojektowania tabeli baz danych dla dokumentów, zaczynam pierw od Faktury, cały formularz jest już gotowy. Problem leży w tym, że chce zrobić ją aby była jak najbardziej wygodna do zapisu i odczytu. Dane z faktury będą również używane przy innych dokumentach i odwrotnie, np. wystawianie Faktury na podstawie WZ (wydane na zewnątrz). Jak mają nazywać się kolumny w tabeli aby były wygodne? Tak jak pola w formularzu? Nie wiem jak dobrze wytłumaczyć mój problem. Ogółem proszę o zasugerowanie struktury tabeli w MySQL dla przechowywanie dokumentów. Pozdrawiam, Łukasz. PS: Jak najlepiej przechowywać tablice w MySQL? Serialize odpada bo nie potrzebnie dużo zajmuje i krzaczy się ze znakami typu: " \ etc. -------------------- zmoderowano - waga i rozmiar
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
W mySQL funkcjonalne relacje obsługuje InnoDB. W myISAM można użyc składnie REFERENCES ale właściwie tylko dla dokumentacji.
Jeśli chodzi o przechowywanie faktur itp, ja to robię tak. Jedna tabela na dane "nagłówkowe" + dodatki o których za chwilę Kod DROP TABLE IF EXISTS `faktury`; CREATE TABLE `faktury` ( `ID` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Klucz podstawowy', `IDodbiorcy` int(10) unsigned NOT NULL COMMENT 'ID odbiorcy', `status` enum('BUFOR','ANULOWANE','ZATWIERDZONE') NOT NULL DEFAULT 'BUFOR' COMMENT 'Stan dokumentu', `nrDokumentu` varchar(20) NOT NULL COMMENT 'Nr dokumentu', `dataSprzedazy` date NOT NULL COMMENT 'Data Sprzedazy', `dataWystawienia` date NOT NULL COMMENT 'Data Wystawienia', `sprzedawcaNazwa` varchar(255) NOT NULL COMMENT 'Nazwa sprzedawcy', `sprzedawcaAdres` varchar(255) NOT NULL COMMENT 'Adres sprzedawcy', `sprzedawcaNIP` varchar(25) NOT NULL COMMENT 'NIP sprzedawcy', `sprzedawcaBank` varchar(255) NOT NULL COMMENT 'Bank sprzedawcy', `sprzedawcaKonto` varchar(100) NOT NULL COMMENT 'Konto sprzedawcy', `sposobZaplaty` enum('GOTOWKA','PRZELEW','GOTOWKA/PRZELEW') NOT NULL COMMENT 'Sposób zapłaty', `terminZaplaty` varchar(511) NOT NULL COMMENT 'Termin zapłaty', `odbiorcaIndeks` char(7) NOT NULL COMMENT 'Indeks odbiorcy', `odbiorcaNazwa` varchar(255) NOT NULL COMMENT 'Nazwa odbiorcy', `odbiorcaKodPocztowy` char(6) NOT NULL COMMENT 'Kod pocztowy odbiorcy', `odbiorcaMiejscowosc` varchar(255) NOT NULL COMMENT 'Miejscowość odbiorcy', `odbiorcaAdres` varchar(255) NOT NULL COMMENT 'Adres odbiorcy', `odbiorcaNIP` char(13) NOT NULL COMMENT 'NIP odbiorcy', `rabat` decimal(3,2) NOT NULL DEFAULT '0.00' COMMENT 'Rabat', `osobaWystawiajaca` varchar(255) NOT NULL COMMENT 'Osoba wystawiająca', `upowaznienie` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Zgoda na wystawianie faktury bez podpisu', `szablonWydruku` varchar(30) NOT NULL COMMENT 'Sablon wydruku', `wydrukRabat` enum('WIERSZE','PODSUMOWANIE','UKRYTY') NOT NULL DEFAULT 'WIERSZE' COMMENT 'Opcje wydruku rabatu', `sumaEgz` int(6) NOT NULL, `sumaNetto` decimal(8,2) NOT NULL, `sumaVat` decimal(8,2) NOT NULL, `sumaBrutto` decimal(8,2) NOT NULL, PRIMARY KEY (`ID`)); Druga tabele na dane "wierszowe" (świadomie nie do końca znormalizowana) Kod DROP TABLE IF EXISTS `faktury_wiersze`; CREATE TABLE `faktury_wiersze` ( `ID` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Klucz podstawowy', `dokumentID` int(10) unsigned NOT NULL COMMENT 'Wskazuje na fakturę', `towarID` int(10) unsigned NOT NULL COMMENT 'Wskazuje na towar', `indeks` char(6) NOT NULL COMMENT 'Indeks towaru', `towarDoWydruku` varchar(255) NOT NULL COMMENT 'Towar w wersji do wydruku', `ilosc` int(5) NOT NULL COMMENT 'Ilosc', `PKWiU` varchar(10) NOT NULL COMMENT 'Symbol PKWiU', `cenaNetto` decimal(6,2) NOT NULL COMMENT 'Cena netto', `stawkaVat` decimal(3,2) NOT NULL COMMENT 'Stawka VAT', `wartoscNetto` decimal(8,2) NOT NULL, `wartoscVat` decimal(8,2) NOT NULL, `wartoscBrutto` decimal(8,2) NOT NULL, PRIMARY KEY (`ID`)) Obciąłem trochę z rzeczywistych definicji, a;e mniej więcej tak to wygląda. Ten post edytował Mchl 25.09.2008, 20:45:06 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.08.2025 - 23:53 |