Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Prośba o pomoc - zadanie
wyso1989
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 20.05.2013

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


Witam serdecznie! Proszę o pomoc w rozwiązaniu zadania. Najważniejsze, abym zrozumiał niezbędną logikę programowania, i odpowiednie do niej komendy. Zadanie potrzebuję na zaliczenie, na pojutrze.

(IMG:http://imageshack.us/a/img689/3134/zader.jpg)

Z góry dziękuję za wszelką okazaną pomoc.

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wyso1989
post
Post #2





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 20.05.2013

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


Zmieniłem id_operatora w kolumnach na Unsigned i już mogłem zaznaczyć FK. BARDZO DZIĘKUJĘ!

w datach_dodania (itp.) chyba powinienem ustawić TIMESTAMP, a nie DATE, jak mam teraz?

jaki datatype ustawić do czasu trwania?

czas na pytanie finałowe!
czy dobrze skonstruowałem bazę do zadania?

  1. SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
  2. SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
  3. SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
  4.  
  5. CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
  6. USE `mydb`;
  7.  
  8. -- -----------------------------------------------------
  9. -- Table `mydb`.`OPERATORZY`
  10. -- -----------------------------------------------------
  11. CREATE TABLE IF NOT EXISTS `mydb`.`OPERATORZY` (
  12. `idOPERATORZY` INT NOT NULL AUTO_INCREMENT ,
  13. `nazwa` VARCHAR(10) NOT NULL ,
  14. PRIMARY KEY (`idOPERATORZY`) )
  15. ENGINE = InnoDB;
  16.  
  17. -- -----------------------------------------------------
  18. -- Table `mydb`.`DOLADOWANIA`
  19. -- -----------------------------------------------------
  20. CREATE TABLE IF NOT EXISTS `mydb`.`DOLADOWANIA` (
  21. `idDOLADOWANIA` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  22. `wartosc` INT NOT NULL ,
  23. `waznosc` INT NOT NULL ,
  24. PRIMARY KEY (`idDOLADOWANIA`) )
  25. ENGINE = InnoDB;
  26.  
  27. -- -----------------------------------------------------
  28. -- Table `mydb`.`AKTYWNE`
  29. -- -----------------------------------------------------
  30. CREATE TABLE IF NOT EXISTS `mydb`.`AKTYWNE` (
  31. `idAKTYWNE` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  32. `czy_mozna_sprzedac` VARCHAR(45) NOT NULL ,
  33. PRIMARY KEY (`idAKTYWNE`) )
  34. ENGINE = InnoDB;
  35.  
  36. -- -----------------------------------------------------
  37. -- Table `mydb`.`PRODUKTY`
  38. -- -----------------------------------------------------
  39. CREATE TABLE IF NOT EXISTS `mydb`.`PRODUKTY` (
  40. `idPRODUKTY` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  41. `id_operatora` INT UNSIGNED NOT NULL ,
  42. `id_doladowania` INT UNSIGNED NOT NULL ,
  43. `id_aktywne` INT UNSIGNED NOT NULL ,
  44. `opis` VARCHAR(45) NULL ,
  45. `obrazek` VARCHAR(45) NULL ,
  46. PRIMARY KEY (`idPRODUKTY`) ,
  47. INDEX `id_operatora` (`id_operatora` ASC) ,
  48. INDEX `id_doladowania` (`id_doladowania` ASC) ,
  49. INDEX `id_aktywne` (`id_aktywne` ASC) ,
  50. CONSTRAINT `id_operatora`
  51. FOREIGN KEY (`id_operatora` )
  52. REFERENCES `mydb`.`OPERATORZY` (`idOPERATORZY` )
  53. ON DELETE NO ACTION
  54. ON UPDATE NO ACTION,
  55. CONSTRAINT `id_doladowania`
  56. FOREIGN KEY (`id_doladowania` )
  57. REFERENCES `mydb`.`DOLADOWANIA` (`idDOLADOWANIA` )
  58. ON DELETE NO ACTION
  59. ON UPDATE NO ACTION,
  60. CONSTRAINT `id_aktywne`
  61. FOREIGN KEY (`id_aktywne` )
  62. REFERENCES `mydb`.`AKTYWNE` (`idAKTYWNE` )
  63. ON DELETE NO ACTION
  64. ON UPDATE NO ACTION)
  65. ENGINE = InnoDB;
  66.  
  67. -- -----------------------------------------------------
  68. -- Table `mydb`.`TRESC`
  69. -- -----------------------------------------------------
  70. CREATE TABLE IF NOT EXISTS `mydb`.`TRESC` (
  71. `idTRESC` INT NOT NULL AUTO_INCREMENT ,
  72. `tresc` VARCHAR(14) NOT NULL ,
  73. PRIMARY KEY (`idTRESC`) )
  74. ENGINE = InnoDB;
  75.  
  76.  
  77. -- -----------------------------------------------------
  78. -- Table `mydb`.`DATA`
  79. -- -----------------------------------------------------
  80. CREATE TABLE IF NOT EXISTS `mydb`.`DATA` (
  81. `idDATA` INT NOT NULL AUTO_INCREMENT ,
  82. `data_dodania` INT NOT NULL ,
  83. `data_sprzedazy` INT NOT NULL ,
  84. `data_dod_a` INT NOT NULL ,
  85. `data_zak_a` INT NOT NULL ,
  86. PRIMARY KEY (`idDATA`) )
  87. ENGINE = InnoDB;
  88.  
  89. -- -----------------------------------------------------
  90. -- Table `mydb`.`KODY`
  91. -- -----------------------------------------------------
  92. CREATE TABLE IF NOT EXISTS `mydb`.`KODY` (
  93. `idKODY` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  94. `id_stan` INT NOT NULL ,
  95. `id_operatora` INT NOT NULL ,
  96. `data_dodania` DATE NOT NULL ,
  97. `data_sprzedazy` DATE NOT NULL ,
  98. PRIMARY KEY (`idKODY`) ,
  99. INDEX `data_dodania` (`data_dodania` ASC) ,
  100. INDEX `data_sprzedazy` (`data_sprzedazy` ASC) ,
  101. INDEX `id_operatora` (`id_operatora` ASC) ,
  102. CONSTRAINT `data_dodania`
  103. FOREIGN KEY (`data_dodania` )
  104. REFERENCES `mydb`.`DATA` (`data_dodania` )
  105. ON DELETE NO ACTION
  106. ON UPDATE NO ACTION,
  107. CONSTRAINT `data_sprzedazy`
  108. FOREIGN KEY (`data_sprzedazy` )
  109. REFERENCES `mydb`.`DATA` (`data_sprzedazy` )
  110. ON DELETE NO ACTION
  111. ON UPDATE NO ACTION,
  112. CONSTRAINT `id_operatora`
  113. FOREIGN KEY (`id_operatora` )
  114. REFERENCES `mydb`.`OPERATORZY` (`idOPERATORZY` )
  115. ON DELETE NO ACTION
  116. ON UPDATE NO ACTION)
  117. ENGINE = InnoDB;
  118.  
  119. -- -----------------------------------------------------
  120. -- Table `mydb`.`STAN`
  121. -- -----------------------------------------------------
  122. CREATE TABLE IF NOT EXISTS `mydb`.`STAN` (
  123. `idSTAN` INT NOT NULL AUTO_INCREMENT ,
  124. `czy_sprzedane` VARCHAR(3) NOT NULL ,
  125. PRIMARY KEY (`idSTAN`) )
  126. ENGINE = InnoDB;
  127.  
  128. -- -----------------------------------------------------
  129. -- Table `mydb`.`AUKCJA`
  130. -- -----------------------------------------------------
  131. CREATE TABLE IF NOT EXISTS `mydb`.`AUKCJA` (
  132. `idAUKCJA` INT NOT NULL AUTO_INCREMENT ,
  133. `data_dod_a` INT NOT NULL ,
  134. `data_zak_a` INT NOT NULL ,
  135. `cena_a` INT NOT NULL ,
  136. `numer_ident_a` INT NOT NULL ,
  137. `czas_trwania` INT NOT NULL ,
  138. `ilosc` INT NOT NULL ,
  139. PRIMARY KEY (`idAUKCJA`) ,
  140. INDEX `data_dod_a` (`data_dod_a` ASC) ,
  141. INDEX `data_zak_a` (`data_zak_a` ASC) ,
  142. CONSTRAINT `data_dod_a`
  143. FOREIGN KEY (`data_dod_a` )
  144. REFERENCES `mydb`.`DATA` (`data_dod_a` )
  145. ON DELETE NO ACTION
  146. ON UPDATE NO ACTION,
  147. CONSTRAINT `data_zak_a`
  148. FOREIGN KEY (`data_zak_a` )
  149. REFERENCES `mydb`.`DATA` (`data_zak_a` )
  150. ON DELETE NO ACTION
  151. ON UPDATE NO ACTION)
  152. ENGINE = InnoDB;
  153.  
  154. SET SQL_MODE=@OLD_SQL_MODE;
  155. SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
  156. SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
  157.  


jutro mam termin oddania! z widokami już sobie zapewne poradzę. jedynie została mi niepewność w kwestii relacji - jak się je tworzy w MySql Workbench'u? BARDZO PROSZĘ O POMOC!

Ten post edytował wyso1989 22.05.2013, 12:57:56
Go to the top of the page
+Quote Post
zegarek84
post
Post #3





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(wyso1989 @ 22.05.2013, 17:44:44 ) *
jutro mam termin oddania! z widokami już sobie zapewne poradzę. jedynie została mi niepewność w kwestii relacji - jak się je tworzy w MySql...

relacje definiuje się właśnie przez FK (nieraz niektórzy to pomijają...) by nie usunąć własności niepoprawnie/bezwiednie tam gdzie ta relacja zachodzi, relacje możesz mieć typu 1:1, 1:n, n:n, przy czym w relacjach typu wiele do wielu musisz mieć tablice pomocnicze (relację rozbija się np. na 2 relacje typu jeden do wielu...)... dalej nie potrzebnie piszę, ale może i to Ci potrzebne, rozwinięcie powyższego to (0;1):(0;1), (0;1):(0;n), (0;n):(0;n)...

podejrzeć relacje możesz w darmowym phpmyadmin w widoku wizualnym... zresztą choć nie korzystałem to podejrzewam, iż "MySql Workbench" także posiada tryb "wizualny"

ps.
nazwy tabel nie koniecznie musiały być z dużych liter ;p... tabele odpowiadają jakby klasie (podejście obiektowe), w modelech typu UML to zazwyczaj rzeczowniki, właściwości tego rzeczownika to kolejne kolumny tej tabeli (lub zmienne klasy), pojedynczy wiersz można tłumaczyć jako konkretny rzeczownik z opisanymi właściwościami lub konkretną instancję obiektu utworzoną z danej klasy...

idąc drogą co napisałem zamiast 'kody' większość pisze 'kod', własności wieloczłonowe w tabelach dla czytelności rozdziela się z reguły podkreśleniem, więc raczej nikt nie pisze 'idKOD' a raczej 'id_kod' - jeśli to jest w id w danej tablicy wielu pisze w skrócie po prostu 'id', ale możesz pisać dłuższą nazwą 'id_kod' jeśli większość uważa, iż to czytelniejsze, po prostu piszę teraz o kolumnie będącej kluczem głównym... teraz w tabelach gdzie np. masz relację do tablicy 'kod' klucz obcy raczej zapisałbyś przez 'id_kod' czyli prawie tak jak zapisujesz, prawie bo nie 'id_operatora' a 'id_operator'... mając odpowiednie nazwy bez wizualnego rysunku relacji tabel widzi się relację i klucze obce w definicjach tabel o ile zachowuje się wcięcia i formatowanie (no i dlatego też w głównych tabelach zamiast skrótowo pisać 'id' można np. napisać 'id_kod')...

to tak tylko niewiele dodałem ale może Ci to jakoś pomoże, gdyż za Ciebie nikt tego nie zrobi...

a i jak zauważyłeś tam gdzie chcesz założyć FK musisz mieć dokładnie ten sam typ wartości/komórki/zmiennej (tłumacz se to jak chcesz)...

ps. 2
a relacje określa się tam gdzie jest czasownik/akcja np. `kod` należy do `operator`a....

Ten post edytował zegarek84 22.05.2013, 18:04:13
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: 10.10.2025 - 16:25