Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

MYSQL - Klika prostych pytań

Pawel1924 17 Maj 2014 14:03 1251 18
  • #1 17 Maj 2014 14:03
    Pawel1924
    Poziom 20  

    Witam, muszę zrobić bazę danych. Zrobię ją w Mysql workbench ponieważ mogę zrobić tam ją szybciej i łatwiej.

    Gdy robię diagram to muszę zrobić relację i tu jest pytanie:

    Czy różni się linia przerywana od nie przerywanej?

    Jak wyeksportować kod sql stworzonej bazy danych do pliku?

    0 18
  • #3 17 Maj 2014 14:14
    Pawel1924
    Poziom 20  

    Ok, dziękuję. Czy w tym przypadku mam dobrze ustawioną relację jeden do wielu?

    Tabele bez relacji :

    Kod: mysql
    Zaloguj się, aby zobaczyć kod



    Tabele z relacjami jeden do wielu:

    Kod: mysql
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #4 17 Maj 2014 14:23
    Dżyszla
    Poziom 42  

    Ale 'dobrze' w sensie logicznym, czy 'dobrze' w sensie składniowym?
    Jeśli składnia to tak.
    Jeśli logika, to nie bardzo widzę sens w tym, co jest. Ale rozumiem, że to rozbudowywane będzie?

    0
  • #5 17 Maj 2014 14:49
    Pawel1924
    Poziom 20  

    Heh:) Nie no pewnie że jest bardziej rozbudowane:) Może później jak dokończę to przedstawię całość.


    A co do składni logicznej to wydaje mi się że będzie ok, jak dokończę to dam do sprawdzenia na forum.

    0
  • #6 19 Maj 2014 19:44
    Pawel1924
    Poziom 20  

    Hej, czy tak będzie dobrze?
    W załączniku dałem diagram.

    Mam tylko problem z tym planem zajęć, miałem założenie takie że tabela plan będzie wyglądała tak:

    Code:

    id1 poniedzialek 8:00
    id2 poniedzialek 9:00
    ....
    id8 wtorek 8:00

    itd...


    Teraz do grupy wpisywał bym id planu i dana grupa miała by zajęcia w ten dzień i godzinę.

    Ale co gdy dana grupa ma zajęcia 4 razy w tygodniu?

    0
  • #7 19 Maj 2014 21:00
    rufek90
    Poziom 24  

    A nie masz tu rozróżnienia na przedmioty? I czy na pewno podręcznik będzie przypisany do grupy?

    Ja bym to zrobił tak:
    plan: jest przypisany do grupy: jeden plan - jedna grupa, plan posiada wiele zajęć
    zajęcia: posiadają jeden przedmiot (typ przedmiotu), czas trwania, godzinę rozpoczęcia, dzień tygodnia lub datę, numer sali itp...
    przedmiot posiada: nauczyciela/wykładowcę, podręcznik, opis itp...

    No i chyba nie ma wielkiego sensu posiadanie tabeli z dniami i godzinami - według mnie można śmiało wpisywać to prosto w plan.

    Drobna uwaga stylistyczna: niektóre nazwy tabel masz w liczbie mnogiej, a niektóre w pojedynczej. Zwykło się stosować nazwy tabel w liczbie pojedynczej.

    0
  • #8 19 Maj 2014 21:14
    Pawel1924
    Poziom 20  

    Hej, a jeżeli napiszę że dotyczy to szkoły nauki języka angielskiego, więc jest tylko jeden przedmiot, który jest wykładany dla danej grupy kilka razy w tygodniu o różnych godzinach.

    0
  • Pomocny post
    #9 19 Maj 2014 21:22
    rufek90
    Poziom 24  

    Nie wiem, czy robisz to w celach edukacyjnych, czy komercyjnie. Jeżeli komercyjnie, to ja bym na wszelki wypadek zrobił tak, jak już wcześniej napisałem. jeżeli nie, to możesz uprościć np tak:

    plan: jest przypisany do grupy: jeden plan - jedna grupa, plan posiada wiele zajęć
    zajęcia: posiadają czas trwania, godzinę rozpoczęcia, dzień tygodnia lub datę

    i wtedy do grupy dajesz nauczyciela i podręcznik

    0
  • #10 21 Maj 2014 23:58
    Pawel1924
    Poziom 20  

    hej, wiesz może jak mogę zaimportować dane z pliku tekstowego do tabel?

    Szukam, znaleźć nie mogę a to co znalazłem nie działa.

    Plik wygląda tak:

    1,'poziom_wysoki','opis poziomu'

    a tabela:

    Kod: mysql
    Zaloguj się, aby zobaczyć kod

    0
  • #11 22 Maj 2014 07:14
    rufek90
    Poziom 24  

    Uzywasz workbencha? Musi być tam miejsce na pisanie zapytań. Wcześniej musisz manualnie wybrać bazę lub dopisać " use nazwa_bazy;" bo nie masz tego w kodzie. Zakładam, że masz bazę a chcesz do niej dodać tylko tabelę ;)

    0
  • #12 22 Maj 2014 13:37
    Pawel1924
    Poziom 20  

    Hej;) nie no, mam bazę. Właczam konsole, daje use nazwa_bazy i chce do tabel zaimponować dane z pliku txt, zapisane w formacie jak wyżej.

    0
  • #13 23 Maj 2014 20:53
    Pawel1924
    Poziom 20  

    Już znalazłem:

    Kod: mysql
    Zaloguj się, aby zobaczyć kod



    Poprawiłem też bazę i wszystko mi pasuje ale...

    Chodzi o sam Plan, chciałbym aby nie dało się dodać 2 razy tej samej grupy, w tym samym terminie w tej samej sali bo w normalnym życiu nie może tak być...
    2 grypy mogą mieć lekcje w tym samym terminie ale w innej sali.
    Albo w tej samej sali a w innym terminie.

    Jak to zrobić? Jak ustawić relacje?

    Dodatkowo, jeden nauczyciel może uczyć kilka grup, więc baza nie powinna mieć możliwości dodania 2 grup tego samego nauczyciela w tym samym terminie.

    Głowię się nad tym i mi nie wychodzi...

    Aktualnie baza wygląda tak jak w załączniku.

    0
  • #14 23 Maj 2014 21:02
    rufek90
    Poziom 24  

    Myślę, że takie rzeczy to już łatwiej załatwić programistycznie

    0
  • #15 23 Maj 2014 21:52
    Pawel1924
    Poziom 20  

    Programistycznie, czyli jak? W kodzie mysql? Czy w php?

    0
  • Pomocny post
    #16 23 Maj 2014 21:57
    rufek90
    Poziom 24  

    W kodzie aplikacji, np we wspomnianym PHP. Nie wiem, jak będzie wyglądał interfejs, ale przykładowo to, czy nauczyciel jest zajęty w wybranej godzinie powinieneś sprawdzić jakimś prostym selectem (i nie wyświetlać nauczyciela w dropdownliście, lub nie pokazywać godziny wśród dostępnych godzin lub sprawdzać dostępność nauczyciela przy próbie zapisania) - zależnie od założeń projektu

    0
  • #17 25 Maj 2014 15:49
    Pawel1924
    Poziom 20  

    no ok, ale jednak jak bym się uparł na mysql żeby rozwiązać to relacjami to da się czy raczej nie? Pytam czysto edukacyjnie, nie jest to żaden komercyjny projekt i załóżmy że nie będzie miał aplikacji obsługującej.

    0
  • #18 25 Maj 2014 21:18
    rufek90
    Poziom 24  

    Nie wydaje mi się, aby było to w prosty sposób do zrealizowania w samym sql (bez użycia procedur)

    0
  • #19 26 Maj 2014 14:17
    romkoski
    Poziom 9  

    możesz użyć w mysql UNIQUE KEY `nazwa` (`sala`, `godzina`) nie pozwoli wpisać do bazy dwa razy tej samej sali o tej godzinie, tylko musiałbyś obsłużyć później wyjątek mysql bo wyrzuci błąd przy próbie wpisania

    0