Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Prośba o pomoc - zadanie
wyso1989
post 21.05.2013, 08:34:42
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.



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

Pozdrawiam.
Go to the top of the page
+Quote Post
alegorn
post 21.05.2013, 10:52:18
Post #2





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


na tym forum, nie rozwiazujemy prac domowych.
gdybys choc zaproponowal cos od siebie - mozna by bylo dyskutowac o zastosowanych rozwiazaniach.

szukaj korepetycji. najlepiej u dobrych fachowcow - jesli ci zalezy na nauce, lub daj komus zlecenie, jesli zalezy ci tylko na zadaniu....
za lenistwo tak czy inaczej, trzeba placic.

pozdrawiam,
Jacek.

Ten post edytował alegorn 21.05.2013, 10:52:55
Go to the top of the page
+Quote Post
wyso1989
post 21.05.2013, 15:22:58
Post #3





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

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


Nawet własnymi słowami; samą logikę programowania? Oczywiście, że nie chcę Was wykorzystywać do napisania mi kodu! Chciałbym dostać od Was wstęp - jak byście mogli mi wytłumaczyć "na chłopski rozum" jak to miałoby wyglądać. Np.:
1. zapisanie listy operatorów komórkowych
2. odczytanie kodów doładowań
3. stworzenie wpisów aukcji

czy w jakiej kolejności mam to napisać? i w ogóle jakimi funkcjami - może innymi, na skróty... chciałbym mieć to ogarnięte prostymi słowami, abym mógł z nich przejść do kodowania w MySql, czego jeszcze nigdy nie robiłem.

Pozdrawiam.
Go to the top of the page
+Quote Post
PrinceOfPersia
post 21.05.2013, 16:08:37
Post #4





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

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


Cytat
Nawet własnymi słowami; samą logikę programowania?

Nie ma sprawy. Najłatwiej będzie to co masz CAPSLOCKIEM przerobić na tabele w bazie danych,
a to masz w
- kreskach
- kreskach
bym przerobił na koiumny w tabeli.
I jak tak zrobisz to chyba będzie dobrze.

Cytat
Zadanie potrzebuję na zaliczenie, na pojutrze. (...) abym mógł z nich przejść do kodowania w MySql, czego jeszcze nigdy nie robiłem.

ech, studenci wink.gif

Ale pomyśl o tym, że zawsze masz drugi termin, a jak nie to są warunki. Z drugiej strony trochę nie rozumiem. Wiadomo, że na informatyce uczą wielu niepotrzebnych rzeczy, ale to się akurat może przydać w pracy zawodowej, więc nie rozumiem trochę, czemu to olałeś.


--------------------
Go to the top of the page
+Quote Post
alegorn
post 21.05.2013, 16:12:36
Post #5





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


na początek - kartka i ołówek.
projektujesz bazę danych, musisz zaprojektować wszystkie relacje, encje...
nie da się opisać zasad projektowania bazy danych w trzech słowach..
hm.....
a może tak.

poczytaj o normalizacji (pierwsze 3 postacie na początek), bez tego nie da się zaprojektować żadnej dobrej bazy.
na początek musisz potrafić doprowadzić bazę minimum do 2 postaci, trzecia postać nie była by tutaj faux pas.

rozpisz na kartce tą bazę, w dalszych zadaniach masz pewne podpowiedzi, co ma się w niej znajdować.
tutaj masz trzy podstawowe encje : produkty, kody, aukcje, pola jakie są wymagane masz wymienione..
przeanalizuj i wyodrębnij dodatkowe encje ja np widzę: operator, być może czas doładowania

rozpisz na kartce wszystkie pola, jakie do tych encji należą, przeanalizuj relacje jakie zachodzą między nimi.

o ile widzę to relacje jakie zachodzą to
kody[n]-[1]produkt[n]-[1]aukcje
produkty[n]-[1]operator

o ile rozumiem zadanie, aukcja jest tutaj uproszczona, i chyba można poprzestać na jednej encji

czyli musisz wiedzieć o relacjach jeden do wielu, (wiele do wielu nie zaszkodzi także)

zadanie ostatnie - jest zbudowaniem odpowiedniego widoku.
jak uporasz się z prawidłowym projektem - będzie on tylko jego konsekwencją (relacji między tabelami).

a więc - poczytaj o normalizacji, kartka + ołówek i do dzieła, jak rozpiszesz encje, relacje między nimi, to siadasz do jakiegoś narzędzia którym przeniesiesz to na gotowy kod (jest tego cała masa..).
nie musisz znać dokładnych poleceń tworzenia tabel, musisz wiedzieć co chcesz osiągnąć.

widokiem chwilowo się nie przejmuj, jeśli zrobisz prawidłowo to co opisałem - bez problemu dasz radę zbudować taki widok
pozdrawiam,
J.

Ten post edytował alegorn 21.05.2013, 16:16:08
Go to the top of the page
+Quote Post
wyso1989
post 22.05.2013, 02:59:25
Post #6





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

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


Serdecznie dziękuję za dotychczasową pomoc. W programie MySql Workbench Portable, z pomocą dobrej duszy z Krakowa, stworzyłem taki oto kod: (jeśli komuś się nie chce czytać; niżej są zrzuty z ekranu)

  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 UNSIGNED NOT NULL ,
  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 ,
  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 ,
  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 ,
  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 ,
  72. `tresc` VARCHAR(14) NOT NULL ,
  73. PRIMARY KEY (`idTRESC`) )
  74. ENGINE = InnoDB;
  75.  
  76. -- -----------------------------------------------------
  77. -- Table `mydb`.`DATA`
  78. -- -----------------------------------------------------
  79. CREATE TABLE IF NOT EXISTS `mydb`.`DATA` (
  80. `idDATA` INT NOT NULL ,
  81. `data_dodania` DATE NOT NULL ,
  82. `data_sprzedazy` DATE NOT NULL ,
  83. PRIMARY KEY (`idDATA`) )
  84. ENGINE = InnoDB;
  85.  
  86.  
  87. -- -----------------------------------------------------
  88. -- Table `mydb`.`KODY`
  89. -- -----------------------------------------------------
  90. CREATE TABLE IF NOT EXISTS `mydb`.`KODY` (
  91. `idKODY` INT UNSIGNED NOT NULL ,
  92. `id_stan` INT NOT NULL ,
  93. `data_dodania` DATE NOT NULL ,
  94. `data_sprzedazy` DATE NOT NULL ,
  95. `operator` INT NOT NULL ,
  96. PRIMARY KEY (`idKODY`) ,
  97. INDEX `data_dodania` (`data_dodania` ASC) ,
  98. INDEX `data_sprzedazy` (`data_sprzedazy` ASC) ,
  99. CONSTRAINT `data_dodania`
  100. FOREIGN KEY (`data_dodania` )
  101. REFERENCES `mydb`.`DATA` (`data_dodania` )
  102. ON DELETE NO ACTION
  103. ON UPDATE NO ACTION,
  104. CONSTRAINT `data_sprzedazy`
  105. FOREIGN KEY (`data_sprzedazy` )
  106. REFERENCES `mydb`.`DATA` (`data_sprzedazy` )
  107. ON DELETE NO ACTION
  108. ON UPDATE NO ACTION)
  109. ENGINE = InnoDB;
  110.  
  111. -- -----------------------------------------------------
  112. -- Table `mydb`.`STAN`
  113. -- -----------------------------------------------------
  114. CREATE TABLE IF NOT EXISTS `mydb`.`STAN` (
  115. `idSTAN` INT NOT NULL ,
  116. `czy_sprzedane` VARCHAR(3) NOT NULL ,
  117. PRIMARY KEY (`idSTAN`) )
  118. ENGINE = InnoDB;


tak wygląda struktura tablic w płaskim widoku:


oto moja tablica "KODY":
Obrazek 1:

______________________________________________________________________________
Obrazek 2:


tablica "PRODUKTY"
Obrazek 1:

______________________________________________________________________________
Obrazek 2:


nie wiem dlaczego nie mogę ustawić tablicy "KODY" następnego, takiego samego obcego klucza [foreign_key], kierującego do tej samej tabeli, co już użyty w kluczu obcym w "PRODUKTACH". (widać na screenach, dokładniej chodzi o dodanie "id_operatora" do "KODY", który to klucz już zostal użyty w "PRODUKTACH".)

no i pytanie zasadnicze - czy jest ok? smile.gif

dodatkowo, załączam oryginalny plik bazy danych do programu:
Plik bazy danych do programu MySql Workbench

pozdrawiam
Go to the top of the page
+Quote Post
mmmmmmm
post 22.05.2013, 07:09:04
Post #7





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Nie masz indeksu na polu `operator` w tabeli `kody`. To uniemożliwia dodanie FK

Ten post edytował mmmmmmm 22.05.2013, 07:09:36
Go to the top of the page
+Quote Post
wyso1989
post 22.05.2013, 07:41:57
Post #8





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

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


Cytat(mmmmmmm @ 22.05.2013, 08:09:04 ) *
Nie masz indeksu na polu `operator` w tabeli `kody`. To uniemożliwia dodanie FK

dziękuję



który index wybrać? muszę przyznać, że jestem zdziwiony, bo ten programik sam dodawał wymagane index'y - właśnie np. w przypadku dodawania FK.

Ten post edytował wyso1989 22.05.2013, 07:53:35
Go to the top of the page
+Quote Post
mmmmmmm
post 22.05.2013, 07:54:00
Post #9





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


PRIMARY odpada (bo już masz)
FOREIGN odpada (bo go właśnie chcesz do tego pola założyć)
SPATIAL - nie wiem co to - odpada
FULLTEXT odpada, bo to liczba
UNIQUE - odpada, bo tam chyba nie mają być wartości unikalne.
Co więc pozostaje?
Go to the top of the page
+Quote Post
wyso1989
post 22.05.2013, 08:25:44
Post #10





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

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


tak wyglada po dodaniu index'u:


tak po dodaniu FK: (z zakładki "Foreign Keys")


niestety nadal nie mogę nadać tego FK. może przy nadawaniu indexu (obrazek 1) mam zaznaczyć coś z prawej kolumny? próbowałem tam z zaznaczeniem id_operatora, ale też nie pomogło... sadsmiley02.gif

wracając do meritum:

Cytat(wyso1989 @ 22.05.2013, 03:59:25 ) *
nie wiem dlaczego nie mogę ustawić w tablicy "KODY" następnego, takiego samego obcego klucza [foreign key], kierującego do tej samej tabeli, co już użyty w kluczu obcym w "PRODUKTACH". (widać na screenach, dokładniej chodzi o dodanie "id_operatora" do "KODY", który to klucz już zostal użyty w "PRODUKTACH".)

no i pytanie zasadnicze - czy jest ok? smile.gif

dodatkowo, załączam oryginalny plik bazy danych do programu:
Plik bazy danych do programu MySql Workbench

pozdrawiam




Ten post edytował wyso1989 22.05.2013, 09:53:59
Go to the top of the page
+Quote Post
mmmmmmm
post 22.05.2013, 09:58:23
Post #11





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Poprawione KODY i DATA:
  1. CREATE TABLE IF NOT EXISTS `mydb`.`DATA` (
  2. `idDATA` INT NOT NULL ,
  3. `data_dodania` DATE NOT NULL ,
  4. `data_sprzedazy` DATE NOT NULL ,
  5. PRIMARY KEY (`idDATA`) ,
  6. INDEX (`data_dodania` ASC),
  7. INDEX (`data_sprzedazy` ASC)
  8. )
  9. ENGINE = InnoDB;
  10.  
  11.  
  12. -- -----------------------------------------------------
  13.  
  14. -- Table `mydb`.`KODY`
  15.  
  16. -- -----------------------------------------------------
  17. -- drop table kody
  18. CREATE TABLE IF NOT EXISTS `mydb`.`KODY` (
  19. `idKODY` INT UNSIGNED NOT NULL ,
  20. `id_stan` INT NOT NULL ,
  21. `data_dodania` DATE NOT NULL ,
  22. `data_sprzedazy` DATE NOT NULL ,
  23. `operator` INT UNSIGNED NOT NULL ,
  24. PRIMARY KEY (`idKODY`) ,
  25. INDEX `data_dodania` (`data_dodania` ASC) ,
  26. INDEX `data_sprzedazy` (`data_sprzedazy` ASC) ,
  27.  
  28. CONSTRAINT `data_dodania`
  29. FOREIGN KEY (`data_dodania` )
  30. REFERENCES `mydb`.`DATA` (`data_dodania` )
  31. ON DELETE NO ACTION
  32. ON UPDATE NO ACTION,
  33. CONSTRAINT `data_sprzedazy`
  34. FOREIGN KEY (`data_sprzedazy` )
  35. REFERENCES `mydb`.`DATA` (`data_sprzedazy` )
  36. ON DELETE NO ACTION
  37. ON UPDATE NO ACTION
  38.  
  39. ,INDEX (`operator` ASC)
  40. ,FOREIGN KEY (`operator`) REFERENCES `OPERATORZY` (`idOPERATORZY` ) ON DELETE NO ACTION ON UPDATE NO ACTION
  41.  
  42. )
  43.  
  44. ENGINE = InnoDB;
  45.  

Prawdopodobnie nie mogłeś dodać, bo miałeś różne typy kolumn (INT vs. INT UNSIGNED)
Go to the top of the page
+Quote Post
wyso1989
post 22.05.2013, 16:44:44
Post #12





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
nospor
post 22.05.2013, 16:48:33
Post #13





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




1) Przestan odswieżać temat co pół godziny
2) PRZESTAN nadużywać DUZEJ CZCIONKI

bo temat zamknę a bardzo bardzo mnie korci. Z innego tematu wiem, że to jest praca na rozmowę kwalifikacyjną więc takie podstawy idąc do roboty znać powinienieś...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
zegarek84
post 22.05.2013, 17:24:14
Post #14





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


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
wyso1989
post 22.05.2013, 21:59:36
Post #15





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

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


widok, jak w przedstawionej tabeli mam utworzyć jednym poleceniem CREATE VIEW? czy można jakoś połączyć kilka w jeden? szukam, ale w mysql jest tak, ze jak sie szuka jednego, to w wyszukiwarce dostaje się drugie... (komendy sie powtarzaja)

pozdrawiam

PS dziękuję za uwagę, nospor; postaram się być bardziej powściągliwym w doborze wielkości czcionki i aktualizacji wątków.
Go to the top of the page
+Quote Post
zegarek84
post 22.05.2013, 22:26:18
Post #16





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, 22:59:36 ) *
widok, jak w przedstawionej tabeli mam utworzyć jednym poleceniem CREATE VIEW? czy można jakoś połączyć kilka w jeden? szukam, ale w mysql jest tak, ze jak sie szuka jednego, to w wyszukiwarce dostaje się drugie... (komendy sie powtarzaja)

nie wiem czy mnie pytałeś ale ja pisząc o widokach w kontekście jakim wcześniej wspominałeś czyli czytelnym FK (wizualizacji) nie to miałem na myśli...

Widok w DB (Data Base - bazach danych) to nic innego jak wirtualne tabele utworzone z zapytania select nie posiadające indeksów (no może w skrajnych przypadkach i w niektórych bazach po kluczach głównych - aż tak się nie znam ;p)

jestem teraz deczko wypity to Ci dam tylko linka do manuala:
http://dev.mysql.com/doc/refman/5.0/en/create-view.html
zapytanie jest w stylu:
  1. CREATE VIEW tablica AS SELECT * FROM tabela AS t WHERE t.id = f(t.name);

a potem robisz selecta z widoku jakbyś robił z tablicy... prywatnie nie bardzo widzę zastosowanie oprócz czytelności i jeśli nie ma jakichś specjalnych "wirtualnych" indeksów... gdyż dla mnie to zwykłe podzapytanie...

choćby dzisiaj dla Ciebie może nie typowy Select a jak są wcięcia to powinien być czytelny i potraktuj jako podzapytanie (select As t1 w skrócie)
http://forum.php.pl/index.php?showtopic=21...p;#entry1046753


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

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: 24.04.2024 - 19:53