Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] Projket/budowa bazy danych, Baza przechowująca informacje o wyjazdach służbowych pracowników
osa2t
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 29.07.2009

Ostrzeżenie: (0%)
-----


Witam,

Chce napisać prosty program do przechowywania informacji o wyjazdach służbowych. Nie jestem dobry w projektowaniu baz dlatego proszę o pomoc by napisąc program najbardziej optymalny. Myślałem o czymś takim:
Jedna tabela przechowuje informacje o pracownikach (ID – pracownika, imię, nazwisko, dział w którym pracuje)
Druga tabela przechowuje informacje o miastach (ID- miasta, nazwa miasta, kod-pocztowy)
Trzecia tabela zawiera informacje o datach, kto, kiedy i gdzie wyjechał.
Proszę o pomoc czy dobrze myślę nad tym rozwiązaniem. Jeżeli nie to co jest złe w moim założeniu, czego brakuje co ewentualnie dodać. Jeżeli pomysł jest dobry bo proszę o pomoc w budowaniu bazy.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
askone
post
Post #2





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

Ostrzeżenie: (0%)
-----


Cytat
  1. CREATE TABLE pracownik (
  2. id_pracownik INT(1000) NOT NULL AUTO_INCREMENT,
  3. id_dzial INT(100) NOT NULL AUTO_INCREMENT,
  4. imie VARCHAR(20) NOT NULL,
  5. nazwisko VARCHAR(20) NOT NULL,
  6. telefon INT(10) NOT NULL,
  7. data_dodania DATETIME NOT NULL,
  8. PRIMARY KEY( id_pracownik),
  9. KEY pracownik(nazwisko),
  10. KEY dzial(id_dzial)
  11. )type=MyISAM;
  12.  
  13. CREATE TABLE dzial (
  14. id_dzial INT(100) NOT NULL AUTO_INCREMENT,
  15. nazwa_dzialu VARCHAR(50) NOT NULL,
  16. data_dodania DATETIME NOT NULL,
  17. data_edycji DATETIME,
  18. PRIMARY KEY( id_dzial)
  19. )type=MyISAM;
  20.  
  21. CREATE TABLE delegacje (
  22. id_delegacji MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
  23. id_pracownik INT(1000) NOT NULL AUTO_INCREMENT,
  24. miasto VARCHAR(50) NOT NULL,
  25. cel VARCHAR(50) NOT NULL,
  26. data_wyjazdu DATETIME NOT NULL,
  27. data_przyjazdu DATETIME NOT NULL,
  28. data_edycji DATETIME,
  29. PRIMARY KEY( id_delegacji,id_pracownik)
  30. )type=MyISAM;


Hej

Widzę takie błędy:
  1. W tabeli [Pracownicy] kolumna [id_dzial] nie może być jako AUTO_INCREMENT - musisz ją zadeklarować jako klucz obcy wiążący pracownika z działem z tabeli [dzial].
  2. Taki sam błąd popełniłeś w tabeli [delegacje] z kolumną [id_pracownik]
  3. W jakim celu podajesz przy INT wartość 1000, 100?? Samo INT wystarczy (IMG:style_emoticons/default/smile.gif)
  4. W tabeli delegacje ograniczasz się z liczbą wpisów poprzez zastosowanie typu kolumny [id_delegacji] jako MEDIUMINT - daj INT
  5. W tabeli [delegacje] jako PRIMARY KEY wystarczy [id_delegacji]. Pole [id_pracownika] ma być kluczem obcym FOREGEIN KEY.
  6. Zastanowiłbym się nad rozszerzeniem wielkości tekstu w kolumnie [cel]. 50 znaków to naprawdę mało (IMG:style_emoticons/default/smile.gif)
  7. Rozszerz długość pola [nazwisko] na przykładowo 50 znaków. Pomyśl nad nazwiskami dwu członowymi.
Ok - na razie tyle (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 15:15