![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 15.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Korzystam z bazy danych postgresql, ale używam poradników z mysql i w razie błedów zapytań staram się poszukać informacji w google.
W poniższym przypadku trafiłem na nadmiar informacji i tutaj poproszę o pomoc. Przedstawię najlepiej cały kod z zakomentowaniem linijek dających błąd, to będzie mówić samo za siebie i więcej niż moje amatorskie wyjaśnienie. Jest to mój pierwszy projekt bazy danych/php i za krytyczne uwagi będę wdzięczny (varchary nie są skonfigurowane).
Ten post edytował Xenom 18.04.2012, 12:27:34 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 49 Dołączył: 3.07.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Po mojemu jest to bardzo zła konstrukcja.
1. Kwestia porządku: Jeżeli tworzysz tabelę users, to kluczem powinno być id_users. Dla tabeli products id_products 2. Dla kluczy głównych obowiązkowo autoincrement 3. Za pomysł uczynienia kluczem głównym pola VARCHAR w tabeli companies należy Cię wybatożyć 4. Pola na pieniądze nie float, a numeric lub decymal 5. Pole na datę nie typu Varchar, a np DATETIME 6. Brak powiązań między tabelami 7. Takie dane jak telefon lepiej przechowywać w polach INT 8. Za mało kluczy zewnętrznych wymuszających więzy integralności 9. Widzę pole start_date. Jeżeli masz zamiar określać odstępy między datami, to obowiązkowo typ Timestamp 10. NIP, regon to pola typu INT (pomyśl jak będzie wyglądać wyszukiwanie po numerze nip) W ramach higieny języka polskiego zapytam czemu te nazwy tabel są po angielsku. Na osłodę dodam, że to są typowe błędy, które popełniał każdy (ze mną włącznie) (IMG:style_emoticons/default/aarambo.gif) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 15.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Po mojemu jest to bardzo zła konstrukcja. 1. Kwestia porządku: Jeżeli tworzysz tabelę users, to kluczem powinno być id_users. Dla tabeli products id_products 2. Dla kluczy głównych obowiązkowo autoincrement 3. Za pomysł uczynienia kluczem głównym pola VARCHAR w tabeli companies należy Cię wybatożyć 4. Pola na pieniądze nie float, a numeric lub decymal 5. Pole na datę nie typu Varchar, a np DATETIME 6. Brak powiązań między tabelami 7. Takie dane jak telefon lepiej przechowywać w polach INT 8. Za mało kluczy zewnętrznych wymuszających więzy integralności 9. Widzę pole start_date. Jeżeli masz zamiar określać odstępy między datami, to obowiązkowo typ Timestamp 10. NIP, regon to pola typu INT (pomyśl jak będzie wyglądać wyszukiwanie po numerze nip) W ramach higieny języka polskiego zapytam czemu te nazwy tabel są po angielsku. Na osłodę dodam, że to są typowe błędy, które popełniał każdy (ze mną włącznie) (IMG:style_emoticons/default/aarambo.gif) Serdeczne dzięki, już piszę dlaczego, co i jak zrobiłem i też mam pytania. 1. tabela użytkowników będzie podłączona do facebooka i robiłem ja z zamysłem, że podczas logowania użytkownik będzie szukany właśnie po tym id, w sensie że nadawanie jako główny klucz nowego id spowolni wyszukiwanie danych po logowaniu. Czy to dobre podejście, czy jednak zwykły SERIAL i nowe id dodatkowo jako klucz główny? 2. autoincrement to nie jest przypadkiem SERIAL w postgresql? 3. Podczas logowania firm, czy wyświetlania formularzy bedzie wykorzystywany login, czy id_firma będzie lepsze. Moja logika polega na tym, że skrypt szuka tylko loginu i nie musi sortować wszystkich danych(rozumiem, że klucz główny powoduje takie sortowanie), teraz jakbym miał znaleźć firme po id to DB musi jechać każde id pokolei. Jak ten tok myślenia jest zły to też napiszcie, żebym zrozumiał dlaczego. 6. Nie bardzo rozumiem, mam pewne wyobrażenie jak ta aplikacja ma działać i na bazie czego pobierać dane z DB, to dałem pod tabelę control. W jakim sensie brak powiązań? Resztę rozumiem, w każdym razie dzięki za rady. Co do pytania o angielskie nazewnictwo, to jest to pewne przyzwyczajenie, mimo że mam taki sobie angielski. Od jakiegoś czasu zajmuję się tworzeniem gier free(aktualnie na fonline engine, angel script, który bardzo podobny jest do cpp) i współpracowałem z osobami z wielu krajów, dlatego ten angielski na siłę wbijam :-) Co do tworzenia powyższej aplikacji to nie mam absolutnie doświadczenia w tej działce. Jest to aplikacja na życzenie szefa(choć firma nie zajmuje się programowaniem), więc w pracy muszę bardziej działać i staram się to jakoś ogarnąć, jednak wolę poświęcić dużo więcej czasu na fundamentalne konstrukcje typu DB i zrobić to jakoś przyzwoicie z Waszą pomocą. Inna sprawa, że świetnie się przy tym bawię, a dodatkowo uczę nowych rzeczy, co daje mi przyjemność i radochę z pracy. ps. Tu taki przykład gry http://www.youtube.com/watch?v=ZjA2wBU10z8...hwgWSDJZYVInzg= , gdzie właśnie z wykorzystaniem fonline engine staramy się przenieść realia fallouta 2 i tactics na mmo :-) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 19:05 |