Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pierwsza baza - prośba o pomoc i wskazówki
poliocertes
post 4.05.2013, 19:50:44
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 25.11.2011

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


Napisałem pierwszy raz coś, co miało być bazą na zaliczenie. Temat brzmiał: "ewidencja obecności i godzin pracy w małej firmie". To, co udało mi się napisać zamieszczam poniżej:

  1. DROP TABLE IF EXISTS pracownik;
  2. DROP TABLE IF EXISTS grafik;
  3. DROP TABLE IF EXISTS rodzaj_dnia;
  4. DROP TABLE IF EXISTS status_dnia_pracujacego;
  5.  
  6. -- ----------------------------------------------------------------------
  7. -- Tabela "pracownik"
  8. -- ----------------------------------------------------------------------
  9. CREATE TABLE pracownik
  10. (
  11. id varchar NOT NULL,
  12. imie char(15) NOT NULL,
  13. nazwisko char(25) NOT NULL,
  14. PRIMARY KEY (id)
  15. );
  16. -- ----------------------------------------------------------------------
  17. -- Tabela "status_dnia_pracujacego"
  18. -- ----------------------------------------------------------------------
  19. CREATE TABLE status_dnia_pracujacego
  20. (
  21. id varchar NOT NULL,
  22. pracowal char,
  23. urlop char,
  24. choroba char,
  25. nieobecnosc char,
  26. PRIMARY KEY (id)
  27. );
  28. -- ----------------------------------------------------------------------
  29. -- Tabela "rodzaj_dnia"
  30. -- ----------------------------------------------------------------------
  31. CREATE TABLE rodzaj_dnia
  32. (
  33. id text NOT NULL,
  34. pracujacy varchar,
  35. wolny bit,
  36. PRIMARY KEY (id),
  37. FOREIGN KEY (pracujacy) REFERENCES status_dnia_pracujacego (id)
  38. );
  39.  
  40. -- ----------------------------------------------------------------------
  41. -- Tabela "grafik"
  42. -- ----------------------------------------------------------------------
  43. CREATE TABLE grafik
  44. (
  45. id int NOT NULL,
  46. miesiac char NOT NULL,
  47. rok decimal NOT NULL,
  48. dzien text NOT NULL,
  49. czy_pracujacy char NOT NULL,
  50. osoba varchar NOT NULL,
  51. PRIMARY KEY (id),
  52. FOREIGN KEY ("dzien") REFERENCES "rodzaj_dnia" ("id"),
  53. FOREIGN KEY ("osoba") REFERENCES "pracownik" ("id")
  54.  
  55. );
  56.  
  57.  
  58. INSERT INTO pracownik (id,imie,nazwisko)VALUES
  59. ('1','Adam','Dankowski'),
  60. ('2','Bogdan','Nowak'),
  61. ('3','Cezary','Kowalski'),
  62. ('4','Dawid','Glinski'),
  63. ('5','Edward','Adamski'),
  64. ('6','Franciszek','Polski'),
  65. ('7','Grzegorz','Kowal');
  66.  
  67. INSERT INTO grafik (id,miesiac,rok,dzien,czy_pracujacy)VALUES
  68. ('1','styczen','2013','wtorek','0'),
  69. ('2','styczen','2013','sroda','1'),
  70. ('3','styczen','2013','czwartek','1'),
  71. ('4','styczen','2013','piatek','1'),
  72. ('5','styczen','2013','sobota','0'),
  73. ('6','styczen','2013','niedziela','0'),
  74. ('7','styczen','2013','poniedzialek','1'),
  75. ('8','styczen','2013','wtorek','1'),
  76. ('9','styczen','2013','sroda','1'),
  77. ('10','styczen','2013','czwartek','1'),
  78. ('11','styczen','2013','piatek','1'),
  79. ('12','styczen','2013','sobota','0'),
  80. ('13','styczen','2013','niedziela','0'),
  81. ('14','styczen','2013','poniedzialek','1'),
  82. ('15','styczen','2013','wtorek','1'),
  83. ('16','styczen','2013','sroda','1'),
  84. ('17','styczen','2013','czwartek','1'),
  85. ('18','styczen','2013','piatek','1'),
  86. ('19','styczen','2013','sobota','0'),
  87. ('20','styczen','2013','niedziela','0'),
  88. ('21','styczen','2013','poniedzialek','1'),
  89. ('22','styczen','2013','wtorek','1'),
  90. ('23','styczen','2013','sroda','1'),
  91. ('24','styczen','2013','czwartek','1'),
  92. ('25','styczen','2013','piatek','1'),
  93. ('26','styczen','2013','sobota','0'),
  94. ('27','styczen','2013','niedziela','0'),
  95. ('28','styczen','2013','poniedzialek','1'),
  96. ('29','styczen','2013','wtorek','1'),
  97. ('30','styczen','2013','sroda','1'),
  98. ('31','styczen','2013','czwartek','1');


Niestety pojawia się błąd:

BŁĄD: wartość zbyt długa dla typu znakowego (1)
Stan SQL: 22001

Jak można to naprawić? Ponadto proszę o wskazówki czy to się wogóle do czegokolwiek nadaje, a jesli tak to co można/trzeba poprawić.
Go to the top of the page
+Quote Post
tolomei
post 5.05.2013, 08:28:23
Post #2





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

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


Witaj.

Zobacz. Ustawiłeś kolumnę miesiąc na typ char, czyli jeden znak. Chcesz wpisać więcej niż jeden znak a więc dostajesz błąd, że wartość jest zbyt długa dla typu znakowego.

  1. -- (...)
  2.  
  3. CREATE TABLE grafik
  4. (
  5. id int NOT NULL,
  6. miesiac char NOT NULL,
  7.  
  8. -- (...)
  9.  
  10. INSERT INTO grafik (id,miesiac,rok,dzien,czy_pracujacy)VALUES
  11. ('1','styczen','2013','wtorek','0'),
  12.  
  13. -- (...)


Pozdrawiam.


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
poliocertes
post 19.05.2013, 18:38:51
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 25.11.2011

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


  1. DROP TABLE IF EXISTS podsumowanie;
  2. DROP TABLE IF EXISTS pracownicy;
  3. DROP TABLE IF EXISTS kalendarz;
  4. DROP TABLE IF EXISTS rodzaj_dnia;
  5. DROP TYPE IF EXISTS rodzaj;
  6. DROP TABLE IF EXISTS status_dnia;
  7. DROP TYPE IF EXISTS wariant;
  8.  
  9. CREATE TYPE wariant AS ENUM ('obecny','nieobecny','urlop','choroba');
  10. CREATE TABLE status_dnia(
  11. id_status_dnia serial NOT NULL,
  12. STATUS wariant NOT NULL,
  13. CONSTRAINT x1 PRIMARY KEY (id_status_dnia)
  14. );
  15.  
  16. CREATE TYPE rodzaj AS ENUM ('wolny','pracujacy');
  17. CREATE TABLE rodzaj_dnia(
  18. id_rodzaj_dnia serial NOT NULL,
  19. jaki_dzien rodzaj NOT NULL,
  20. CONSTRAINT x3 PRIMARY KEY (id_rodzaj_dnia),
  21. CONSTRAINT x4 FOREIGN KEY (id_rodzaj_dnia) REFERENCES status_dnia (id_status_dnia)
  22. );
  23.  
  24. CREATE TABLE kalendarz(
  25. id_kalendarz serial NOT NULL,
  26. rok integer NOT NULL ,
  27. miesiac varchar( 30 ) NOT NULL ,
  28. dzien integer NOT NULL,
  29. nazwa_dnia varchar NOT NULL,
  30. rodz_dnia integer NOT NULL,
  31. CONSTRAINT x5 PRIMARY KEY (id_kalendarz)
  32. );
  33.  
  34. CREATE TABLE pracownicy(
  35. id_pracownicy serial NOT NULL,
  36. imie varchar( 30 ) NOT NULL ,
  37. nazwisko varchar( 30 ) NOT NULL,
  38. CONSTRAINT x6 PRIMARY KEY (id_pracownicy)
  39. );
  40.  
  41. CREATE TABLE podsumowanie(
  42. id_podsumowanie serial NOT NULL,
  43. id_pracownik integer NOT NULL ,
  44. liczba_dni_pracujacych integer,
  45. liczba_dni_nieobecnosci integer,
  46. liczba_dni_urlopu integer,
  47. liczba_dni_zwolnienia integer,
  48. CONSTRAINT x7 PRIMARY KEY (id_podsumowanie)
  49. --CONSTRAINT x8 FOREIGN KEY (id_pracownik) references pracownicy (id_pracownicy),
  50. --CONSTRAINT x9 FOREIGN KEY (liczba_dni_pracujacych) references status_dnia (wariant),
  51. --CONSTRAINT x10 FOREIGN KEY (id_pracownik) references pracownicy (id_pracownicy),
  52. --CONSTRAINT x11 FOREIGN KEY (id_pracownik) references pracownicy (id_pracownicy)
  53. );
  54.  
  55. INSERT INTO kalendarz(rok,miesiac,dzien,nazwa_dnia,rodz_dnia)
  56. VALUES
  57. ('2013','maj','1','sroda','0'),
  58. ('2013','maj','2','czwartek','1'),
  59. ('2013','maj','3','piatek','0'),
  60. ('2013','maj','4','sobota','0'),
  61. ('2013','maj','5','niedziela','0'),
  62. ('2013','maj','6','poniedzialek','1'),
  63. ('2013','maj','7','wtorek','1'),
  64. ('2013','maj','8','sroda','1'),
  65. ('2013','maj','9','czwartek','1'),
  66. ('2013','maj','10','piatek','1'),
  67. ('2013','maj','11','sobota','0'),
  68. ('2013','maj','12','niedziela','0'),
  69. ('2013','maj','13','poniedzialek','1'),
  70. ('2013','maj','14','wtorek','1'),
  71. ('2013','maj','15','sroda','1'),
  72. ('2013','maj','16','czwartek','1'),
  73. ('2013','maj','17','piatek','1'),
  74. ('2013','maj','18','sobota','0'),
  75. ('2013','maj','19','niedziela','0'),
  76. ('2013','maj','20','poniedzialek','1'),
  77. ('2013','maj','21','wtorek','1'),
  78. ('2013','maj','22','sroda','1'),
  79. ('2013','maj','23','czwartek','1'),
  80. ('2013','maj','24','piatek','1'),
  81. ('2013','maj','25','sobota','0'),
  82. ('2013','maj','26','niedziela','0'),
  83. ('2013','maj','27','poniedzialek','1'),
  84. ('2013','maj','28','wtorek','1'),
  85. ('2013','maj','29','sroda','1'),
  86. ('2013','maj','30','czwartek','0'),
  87. ('2013','maj','31','piatek','1');
  88.  
  89. INSERT INTO pracownicy(nazwisko,imie)
  90. VALUES
  91. ('Dankowski','Adam'),
  92. ('Nowak','Bogdan'),
  93. ('Kowalski','Cezary'),
  94. ('Glinski','Dawid'),
  95. ('Adamski','Edward'),
  96. ('Polski','Franciszek'),
  97. ('Kowal','Grzegorz');


Udało mi się doprowadzić to wszytko do postaci jak powyżej. Błedów nie wyrzuca, ale nie wiem co dalej. Jak to połączyć w logiczną całość. Proszę o jakieś wskazówki.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 23.04.2024 - 23:31