Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Konstrukcji bazy danych do e-dziennika, pomóżcie.

byczynho 16 Jan 2013 16:15 13869 51
Nazwa.pl
  • #1
    byczynho
    Level 19  
    Witam.
    Do szkoły na zaliczenie muszę zrobić projekt w ASP.NET. Wybrałem sobie chyba dość trudny temat (wydawał się łatwy) i mam ogromne problemu z bazą danych. Nie wiem jak ją zrobić tak, żeby miała ręce, nogi i sens.
    Owocem mojej pracy jest to:
    Konstrukcji bazy danych do e-dziennika, pomóżcie.
    Proszę o jakieś wskazówki, rady. Nie potrafię jakoś sensownie tego rozplanować.
  • Nazwa.pl
  • #2
    marcinj12
    Level 40  
    Ha, zawsze wydaje się proste na początku, dopóki nie zaczniesz się nad tematem zastanawiać...

    Do poprawienia jest sporo, to co mi się rzuciło w oczy:

    1. jeżeli w tabeli ROK_SZKOLNY w pole rok_szkolny masz zamiar wpisać tylko 2013, to nie ma sensu tworzyć takiej tabeli, rok jako liczbę możesz wpisać z palca do tabeli z klasą.

    2. w tabeli OCENY nie widać co ma.

    3. z tabeli WYCHOWAWCY wyrzuciłbym pole id_klasy, zamiast tego zrobił pole id_wychowawcy w tabeli KLASY (w tej chwili jeżeli jeden wychowawca ma dwie klasy, musi być dwa razy wpisany do tabeli z powtórzeniem imienia, nazwiska etc.). W ogóle jakaś biedna ta tabela - może dodać chociaż tytuł albo datę urodzenia czy zatrudnienia?

    4. jeżeli jeden uczeń ma co roku być przypisywany do innej klasy, proponuję zrobić tabelę pomocniczą, np. GRUPA, z dwoma polami: id_klasy i id_ucznia. Przypisanie ucznia do klasy polega na wstawieniu do niej id_klasy z tabeli KLASY i id_ucznia z tabeli UCZNIOWIE. Oczywiście w tabeli UCZNIOWIE id_klasy nie jest wtedy potrzebne.

    5. W tabeli UCZNIOWIE pole id_oceny jest zbędne i nieprawidłowe - czy chcesz żeby jeden uczeń mógł mieć tylko jedną ocenę?? W tabeli OCENY zrób pola: id_ucznia i ocena (chyba że chcesz mieć oceny w postaci tekstowej, np. BDB, DB+, DB etc. do wyboru z osobnej tabeli, wtedy musisz zrobić na nią osobną tabelę i ją powiązać relacją). Brakuje też powiązania z przedmiotem, więc trzecie pole to id_przedmiotu.

    6. Brakuje powiązania przedmiotu i ucznia. Potrzebna nowa tabela, np. ZAJĘCIA, z polami: id_przedmiotu i id_ucznia. Zakładając, że jeden przedmiot dla każdej klasy może się odbywać w różnych godzinach i dniach tygodnia, wypadało by to rozwiązać jeszcze inaczej: tabela PRZEDMIOTY: id_przedmiotu i nazwa (np. matematyka, język polski, fizyka). Jak chcesz przyoszczędzić na tabelach, to jeszcze pole z dniem i godziną przedmiotu, ale prawidłowo powinna być kolejna tabela: PLAN z polami: id_planu, id_przedmiotu, dzień, godzina (o nauczycielu nie wspomnę...). No i do tego wspomniana tabela ZAJĘCIA: id_ucznia, id_przedmiotu (lub id_planu, jeżeli będziesz miał tabelę z planem).

    Chyba tyle, przyznam że nie chce mi się tego rozrysowywać ;) Jak to zrobisz, to może wtedy coś więcej wyjdzie...
  • #3
    byczynho
    Level 19  
    Jak rozwiązać w takim razie problem przepisywania klas z roku na rok? Tabele rok szkolny zrobiłem do tego, żeby było wiadomo o jaką np. klasę 1a chodzi. Nie do końca wiedziałem jak to będzie działać ale wydawało mi się to potrzebne.
  • #4
    McMonster
    Level 32  
    Jeśli nie musisz pamiętać historii, to wystarczy w tabeli Klasa pamiętać oddział i obecny rok i modyfikować co roku.
  • Nazwa.pl
  • #5
    byczynho
    Level 19  
    No dobra, a przypuśćmy, że klas jest np. 150. Co roku mam zmieniać ten rekord stu pięćdziesięciu klasom?
  • #6
    McMonster
    Level 32  
    Z palca będziesz to robił? To jest zadanie dla systemu zarządzania bazą danych.

    Może zainspiruje cię stworzony kiedyś w pewnych nieszczęsnych okolicznościach przeze mnie i kolegę projekt. Całkiem gratis obsługa biblioteki szkolnej i pierdyliarda innych rzeczy. Trochę mało czytelne, ale da się połapać.

    Konstrukcji bazy danych do e-dziennika, pomóżcie.
  • #7
    byczynho
    Level 19  
    To jest mój pierwszy projekt i pierwsza przygoda z ASP wiec jeszcze nie wiem co dokładnie w trawie piszczy :D
  • #8
    McMonster
    Level 32  
    To zapamiętaj, że użytkownik nigdy bezpośrednio bazy nie modyfikuje, to należy do zadań systemu zarządzania. Musisz określić, jakie będą wykonywane standardowe operacje (dopisanie ucznia do klasy, skreslenie, zmiana danych osobowych, wystawienie oceny itp. itd.) i będą one zaprogramowane odpowiednio w systemie zarządzającym i dostępne np. przez interfejs użytkownika, lub wykonywane automatycznie co określony czas. Interwencja bezpośrednio w bazę danych to sytuacja raczej awaryjna.
  • #9
    cepelia
    Level 20  
    weź karteczkę... ołóweczek... po pierwsze napisz sobie jaka funkcjonalność cię interesuje (spis uczniów, dziennik ocen, album szkolny)... potem oceń jakie informacje będą ci potrzebne (najlepiej napisz na karteczce co chcesz od bazy danych, jakie info chcesz widzieć w wynikach...), na podstawie tego co chcesz mieć w widoku określ jakie dane będą ci potrzebne... (np. chciałbyś wiedzieć jaka była średnia ocen przez ostatnie trzy lata klas 2...), samo określenie potrzeb wymusi na tobie utworzenie tabel uczen, oceny... itd.

    Jak już to wszystko sobie napiszesz, to przeczytaj to jeszcze raz, jak niczego nie zmienisz to napisz co ustaliłeś wtedy pomożemy...

    Zajrzyj jeszcze do tematu "normalizacja baz danych", "pierwsza, druga i trzecia postać normalna bazy danych".
  • #10
    byczynho
    Level 19  
    Tak tak tak, to wiem. Czyli prościej ujmując będę musiał napisać jakąś pętle, która po każdej zmianie roku zrobi coś takiego za mnie zgadza się?
  • #11
    cepelia
    Level 20  
    nie takie proste... nie każdy otrzymuje promocję do następnej klasy...
  • #12
    byczynho
    Level 19  
    cepelia wrote:
    weź karteczkę... ołóweczek... po pierwsze napisz sobie jaka funkcjonalność cię interesuje (spis uczniów, dziennik ocen, album szkolny)... potem oceń jakie informacje będą ci potrzebne (najlepiej napisz na karteczce co chcesz od bazy danych, jakie info chcesz widzieć w wynikach...), na podstawie tego co chcesz mieć w widoku określ jakie dane będą ci potrzebne... (np. chciałbyś wiedzieć jaka była średnia ocen przez ostatnie trzy lata klas 2...), samo określenie potrzeb wymusi na tobie utworzenie tabel uczen, oceny... itd.

    Jak już to wszystko sobie napiszesz, to przeczytaj to jeszcze raz, jak niczego nie zmienisz to napisz co ustaliłeś wtedy pomożemy...

    Zajrzyj jeszcze do tematu "normalizacja baz danych", "pierwsza, druga i trzecia postać normalna bazy danych".

    Tak chyba właśnie zrobię. Przeczytałem o tych normalizacjach bazy danych i dochodzę do wniosku, że aby takie coś stosować trzeba mieć już w bazach jakieś doświadczenie. Człowiek taki jak ja, który ma problem z jedną prostą bazą danych nie poradzi sobie z takim czymś, przynajmniej na tym etapie biegłości - jeśli można to tak nazwać. Tak więc normalizacje w moim przypadku trzeba raczej pominąć i zacząć od zrozumienia co, jak i dlaczego :D

    Dodano po 1 [minuty]:

    cepelia wrote:
    nie takie proste... nie każdy otrzymuje promocję do następnej klasy...

    No teraz to mnie podłamałeś/aś. Takie przypadki to ja już będę rozważał jak zrobię jakąś działającą sensownie bazę :D
  • #13
    cepelia
    Level 20  
    bo czytałeś jakieś wydumki... powiedz czego nie wiesz to ci wytłumaczę, zobaczysz że to nic strasznego...
  • #15
    byczynho
    Level 19  
    drobok wrote:
    IMO to nie ma sensu w ogóle (przynajmniej te połączenia).
    Powinieneś mieć 4 tabele:
    -nauczycieli (id, oraz dane)
    -uczniów (id, id_klasy, dane)
    -klasy (id, id_wychowawcy, dane)
    -przedmiot (id, id nauczyciela, id_klasy, dane)
    -oceny (id, id ucznia, id_przedmiotu, dane)
    (gdzie pierwsze pola to id_nazwa)


    Mam pytanie. Opieram się na cytowanym szablonie (wydaje się być najłatwiejszy). Zastanawiam się, czy nie lepiej jest zrobić jeszcze jedną bazę 'opiekunowie' i tam umieścić dane personalne opiekunów/rodziców? Druga sprawa, jak mam umieścić klucze obce? id_opiekuna w tabelce uczniowie czy id_ucznia w tabelce opiekunowie?

    Dodano po 4 [minuty]:

    marcinj12 wrote:
    4. jeżeli jeden uczeń ma co roku być przypisywany do innej klasy, proponuję zrobić tabelę pomocniczą, np. GRUPA, z dwoma polami: id_klasy i id_ucznia. Przypisanie ucznia do klasy polega na wstawieniu do niej id_klasy z tabeli KLASY i id_ucznia z tabeli UCZNIOWIE. Oczywiście w tabeli UCZNIOWIE id_klasy nie jest wtedy potrzebne.

    Interesuje mnie ten punkt. Strasznie trudno jest mi wyobrazić sobie działanie tej bazy :/. Trochę tego nie rozumie. Przecież ja nie będę co roku przepisywał uczniów do następnej klasy tylko tworzył dla nich nową klasę. Dobrze myślę?

    Dodano po 26 [minuty]:

    Konstrukcji bazy danych do e-dziennika, pomóżcie.
    Tak to wygląda teraz, co sądzicie?
  • #16
    marcinj12
    Level 40  
    byczynho wrote:
    Interesuje mnie ten punkt. Strasznie trudno jest mi wyobrazić sobie działanie tej bazy :/. Trochę tego nie rozumie.
    OK, to opiszę Ci jak ja to widzę.

    Zakładam, że ma to być dziennik ocen do szkoły podstawowej, bez terminów (planu) zajęć, gdzie wszyscy uczniowie przypisani do danej klasy uczęszczają na te same przedmioty. Pytanie, czy chcesz obsłużyć możliwość "zostawienia" ucznia na drugi rok w klasie i przenosiny między klasami, czy raz stworzona klasa z przypisanymi uczniami ma być stała do końca szkoły?? Zakładam to pierwsze.
    Dla uproszczenia zakładam też, że rekordy usuwane będą też fizycznie usuwane z bazy danych (poleceniem DELETE). Piszę "dla uproszczenia", bo w realnej aplikacji ja bym ich nie usuwał, a do tabel dodał pole wazny_do z datą, gdzie usunięcie rekordu oznacza tak naprawdę ustawienie daty ważności na bieżącą.

    Spytasz pewnie "po co"? Uczniowie i opiekunowie co rok, wraz z opuszczeniem szkoły, nie będą więcej potrzebni w bazie. Jeżeli jednak fizycznie ich usuniesz - stracisz całą historię ocen ucznia, bo np. pole id_ucznia w tabeli OCENY nie będzie się miało do czego odnieść (zakładając, że klucz w bazie danych skonstruujesz tak, że w ogóle pozwoli Ci na usunięcie rekordu powiązanego istniejącą relacją z inną tabelą - domyślnie powinien temu zapobiegać).
    Jeżeli natomiast zamiast usuwać ucznia ustawisz mu "datę ważności" równą dacie ukończenia szkoły, za pomocą prostego warunku WHERE w zapytaniu SELECT możesz wyświetlać tylko aktywnych (bieżących) uczniów, ale np. na potrzeby analizy - zawsze możesz wyświetlić pełne dane wraz z uczniami np. klasy 1A z roku 2011.

    W takiej bazie robisz tabele:
    OPIEKUNOWIE (id_opiekuna, imie, nazwisko, adres, telefon, email)
    UCZNIOWIE (id_ucznia, imie, nazwisko, data_urodzenia, id_opiekuna)
    WYCHOWAWCY (id_wychowawcy, imie, nazwisko, telefon, email)
    PRZEDMIOTY (id_przedmiotu, nazwa_przedmiotu)
    KLASY (id_klasy, id_wychowawcy, nazwa, rok_szkolny)
    ZAJECIA (id_klasy, id_przedmiotu)
    GRUPY (id_klasy, id_ucznia)
    OCENY (id_oceny, id_ucznia, id_przedmiotu, ocena, data_oceny, za_co)

    [dodałem do tabeli OCENY myślę przydatne informacje - z datą otrzymania oceny oraz za co - np. odpowiedź ustna, zadanie domowe, sprawdzian. Możesz tu np. wstawiać z listy jedną literę (O, Z, S), albo zrobić kolejną tabelkę: ZA_CO (id, nazwa) i wtedy wstawiać tam id_za_co]

    Stworzenie i późniejsze działanie takiej bazy wygląda następująco:

    1. Wypełniasz tabele: UCZNIOWIE, OPIEKUNOWIE i WYCHOWAWCY i PRZEDMIOTY danymi. Dla każdej z nich można zrobić osobną stronę w ASP.NET na której administrator może dodawać, usuwać, modyfikować i przeglądać rekordy. Tabela wychowawców czy przedmiotów będzie się raczej rzadko zmieniać, natomiast co roku będzie trzeba dodawać opiekunów oraz uczniów nowych klas oraz usuwać (lub deaktywować polem z datą - pisałem o tym) tych, którzy opuścili szkołę.

    2. Rok szkolny rozpoczynasz od utworzenia nowej, pustej klasy. Do tabeli KLASY wstawiasz tyle rekordów, ile klas będzie w danym roku. Z listy wybierasz i przypisujesz również wychowawcę klasy w danym roku.

    3. Kiedy utworzysz już klasę i przypiszesz jej wychowawcę - przypisujesz do niej przedmioty. Czyli: tworzysz w tabeli ZAJECIA powiązanie klasy oraz przedmiotu: wypełniasz ją id_klasy i id_przedmiotu. Oczywiście, jedna klasa będzie miała wiele przedmiotów, a jeden przedmiot (np. matematyka) będzie mógł być przypisany do różnych klas.

    4. Mając klasę z przypisanymi do niej wychowawcą i przedmiotami - zapełniasz ją uczniami. Podobnie jak wyżej: w tabeli GRUPY wiążesz ucznia (id_ucznia) z klasą (id_klasy). W 20 osobowej klasie będziesz miał 20 rekordów etc.

    5. W zasadzie to tyle - po takim przygotowaniu bazy jest ona gotowa do pracy. Wystawianie oceny polega na dodaniu rekordu do tabeli OCENY.


    byczynho wrote:
    Przecież ja nie będę co roku przepisywał uczniów do następnej klasy tylko tworzył dla nich nową klasę. Dobrze myślę?
    To jest to o czym piszę w pkt. 2 i 4.

    byczynho wrote:
    Zastanawiam się, czy nie lepiej jest zrobić jeszcze jedną bazę 'opiekunowie' i tam umieścić dane personalne opiekunów/rodziców?
    - Masz na myśli tabelę?? Widzę że już to zrobiłeś... Można, tylko musisz pamiętać, że jeden opiekun (rodzic) może mieć pod opieką kilkoro dzieci - wręcz wydaje się to dosyć prawdopodobne, że rodzeństwo uczęszcza do tej samej postawówki. Dlatego to nie id_ucznia powinno być w tabeli OPIEKUNOWIE, a id_opiekuna w tabli UCZNIOWIE.

    - Albo nie rozumiem Twojego toku rozumowania ;), albo nie do końca przemyślałeś sprawę przypisywania ucznia do klasy:
    w tej chwili w tabeli UCZNIOWIE masz id_klasy, ale klasa będzie się przecież zmieniała co roku: jeżeli stworzysz klasę 1A o id=1, a za roku 2A o id=100, to jak to rozwiążesz w tabli UCZNIOWIE? Ja w tym celu zastosowałem dodatkową tabelę GRUPY.

    - Prześledź, co się dzieje na Twoim schemacie w tabeli PRZEDMIOTY, jeżeli masz 50 klas, i każdej chcesz przepisać przedmiot MATEMATYKA.
  • #17
    byczynho
    Level 19  
    marcinj12 wrote:
    - Albo nie rozumiem Twojego toku rozumowania , albo nie do końca przemyślałeś sprawę przypisywania ucznia do klasy:
    w tej chwili w tabeli UCZNIOWIE masz id_klasy, ale klasa będzie się przecież zmieniała co roku: jeżeli stworzysz klasę 1A o id=1, a za roku 2A o id=100, to jak to rozwiążesz w tabli UCZNIOWIE? Ja w tym celu zastosowałem dodatkową tabelę GRUPY.

    Jesteś kochany :D Tak mi polecono na innym forum. Ja mam strasznie trudna pojąć dlaczego np. id_klasy jest w tabeli uczniowie a nie odwrotnie. Brakuje mi logicznego myślenia czy biegłości w tych sprawach? tak czy siak dziękuje za twoje rady. Są dla mnie na wagę złota i będę się na nich opierał.
    Ten projekt tworzę na zaliczenie przedmiotu. Powiedziano, że można ten projekt rozbudować i bronić się nim na inżyniera i taki mam właśnie zamiar. Później planuję dodać tutaj właśnie rodzaj oceny, datę, semestry itp. Teraz chcę zrobić namiastkę tego, żeby zaliczyć przedmiot, poznać narzędzie no i nabrać trochę doświadczenia.

    Dodano po 8 [minuty]:

    Tą wagę oceny i datę to na razie sobie może daruje. Za dużo wrażeń tak na raz. Konstrukcji bazy danych do e-dziennika, pomóżcie.
    Bazę przerobiłem. Pojutrze, ją zapełnię i postaram się sprawdzić jak działa.
  • Helpful post
    #18
    marcinj12
    Level 40  
    byczynho wrote:
    Jesteś kochany Very Happy
    Ej, tego, spokojnie tam, zwykłe "pomógł" wystarczy ;)))

    byczynho wrote:
    dlaczego np. id_klasy jest w tabeli uczniowie a nie odwrotnie
    W moim przykładzie tego nie ma, rozumiem że pytasz o ten, który cytowałeś? Przypuszczam, że ten ktoś zakładał, że w tabeli z klasą nie będziesz co roku dokładał nowego rekordu, a podmieniał istniejący. Można i tak, ale wtedy - jak pisałem - nie jesteś w stanie dotrzeć do jakiejkolwiek historii ocen, chyba żeby ją gdzieś archiwizować...
    Za to np. tabelę "przedmiot" ten ktoś źle skonstruował - wstawiając tam id klasy, nauczyciel matematyki mający zajęcia w 30 różnych klasach musiał by 30x wpisać przedmiot "matematyka", zmieniając jedynie id_klasy, a powtarzając resztę danych przedmiotu...

    Generalnie w relacyjnych bazach danych i tej całej normalizacji chodzi o to, żeby - w miarę możliwości i zdrowego rozsądku - NIE DUBLOWAĆ DANYCH (wiadomo - każdy nowy rekord to dodatkowe miejsce na dysku).
    Gdyby to tabela UCZNIOWIE miała pole id_klasy, to uczeń Jan Kowalski chcąc skończyć szkołę (teraz chyba 6 klas), musiałby być wpisany do tabeli UCZNIOWIE 6x - co roku z innym id klasy, za to z tym samym, powtórzonym, imieniem, nazwiskiem, id_opiekuna etc. W ten sposób dublujesz dane, które się nie zmieniają: 6x po 4 duże pola (plus id_ucznia).
    Jeżeli zamiast tego stworzysz dodatkową tabelę GRUPY z dwoma tylko polami liczbowymi, to w ciągu 6 lat wstawisz tylko 6x 2pola (id klasy i id_ucznia), przy czym w tabeli UCZNIOWIE Jan Kowalski dalej będzie występował tylko jeden raz. Co za oszczędność miejsca na dysku. :)

    byczynho wrote:
    Brakuje mi logicznego myślenia czy biegłości w tych sprawach?
    Co do pierwszego to nie wiem, ale skoro robisz coś pierwszy raz to biegłości raczej może Ci brakować ;)

    byczynho wrote:
    Tą wagę oceny i datę to na razie sobie może daruje. Za dużo wrażeń tak na raz.
    Jak uważasz, ale np. data to kwestia dodania jednego pola do tabeli...

    I jeszcze jedno. Pamiętaj, że to mocno uproszczony model. Nada się może na potrzeby podstawówki, gdzie wszyscy uczniowie danej klasy mają taki sam plan zajęć, ale już np. na studiach, gdzie w zasadzie każdy student sam sobie plany układa - tak podział już nie przejdzie. Teraz w tabeli ZAJECIA przedmiot wiążesz z klasą, natomiast np. na studiach w tej tabeli przedmiot musiałbyś wiązać indywidualnie z uczniem / studentem.

    Przerobiony schemat jest wg mnie OK. Tak naprawdę tabelę GRUPY można by spokojnie nazwać SKLAD_KLASY, bo tak naprawdę zawiera ona skład danej klasy...
  • #19
    byczynho
    Level 19  
    Właściwie wybierając taki właśnie temat na zaliczenie przedmioty kierowałem się wspomnieniem ze szkoły średniej. Pamiętam jak mój nauczyciel informatyki chciał takie coś wprowadzić, w końcu skorzystał z moodle czy jak to się tam nazywa. Stąd też właśnie pomysł, że mógłbym coś takiego zrobić a on by pewnie nawet chętnie przetestował. Wracając do tematu bardzie miałem na myśli szkołę średnią niż podstawówkę jeśli to coś zmienia.
  • #20
    marcinj12
    Level 40  
    byczynho wrote:
    Wracając do tematu bardzie miałem na myśli szkołę średnią niż podstawówkę jeśli to coś zmienia.
    Zasadniczo zmienia się kwestia, z czym wiążesz przedmiot. Nie wiem jak u Was, ale u nas w szkole średniej już były podziały w klasie - np. część osób miała język francuski, a część niemiecki, a przed maturą zupełnie każdy chodził na przedmioty które miał zdawać, więc nie można by było powiązać planu zajęć z klasą, a z uczniem.
    Poza tym, jakbyś chciał to wdrażać, to by to trzeba jeszcze rozbudować - ot, choćby o nauczyciela danego przedmiotu... I opiekunowie w szkole średniej?? Chyba nie tacy o jakich myślę... ;)
    Zamiast wychowawców można wtedy dać tabelę nauczyciele: id_wychowawcy klasy odnosiłoby się wtedy do tabeli nauczyciele, a oprócz tego do tabeli zajęć można wstawić id_nauczyciela.
    Plus, jak sądzę, kolejna pomocnicza tabela na wspomniany plan powiązany z uczniem: jak wstawisz do tabeli zajęcia id_zajecia, to tabela PLAN ma pola id_zajecia, id_ucznia, i zapisujesz każdego ucznia na zajęcia w danej klasie.
  • #21
    byczynho
    Level 19  
    Opiekunowie to rodzice. Nazwałem tą tabele tak dlatego, że niektórzy są sierotami. A z tymi językami to można przypisać więcej języków do klasy i najwyżej uczniowie którzy nie uczą się danego języka będą mieli pustą rubryczkę. Nie prościej?
  • #22
    marcinj12
    Level 40  
    byczynho wrote:
    A z tymi językami to można przypisać więcej języków do klasy i najwyżej uczniowie którzy nie uczą się danego języka będą mieli pustą rubryczkę. Nie prościej?
    Owszem, można i faktycznie jest prościej, ale... Wtedy nauczyciel po wyborze ucznia widzi wszystkie przedmioty w danej klasie, w tym te, na które uczeń nie jest zapisany... Może faktycznie to nie problem, zależy jak bardzo "idiotoodporny" ma być program...
    Prosty przykład: nauczyciel chcąc wprowadzić oceny z kartkówki, wybiera klasę, swój przedmiot, zapytanie SQL złącza mu klasę, przedmiot i (przez tabelę grupy) nazwiska WSZYSTKICH uczniów wybranej klasy, łącznie z tymi, którzy na zajęcia nie są zapisani... Jak np. ma sprawdzić, czy wszyscy zapisani oddali kartkówki,skoro nie wie, ile spośród osób chodzi na dany przedmiot?? :)
  • #23
    byczynho
    Level 19  
    Ogólnie oceny ma wpisywać wychowawca :D Jednak zostanę przy tym uproszczonym schemacie na razie. Kiedy zdobędę większe doświadczenie wtedy się zastanowię nad takimi czymś. Ogólnie pewnie dużo wniosków wysunę sam kiedy zacznę działać na tej bazie bo na razie to działam w powietrzu i trudno jest mi się zorientować.
  • #24
    byczynho
    Level 19  
    Próbowałem wypełnić bazę, niestety otrzymuje taki error.
    Konstrukcji bazy danych do e-dziennika, pomóżcie. Konstrukcji bazy danych do e-dziennika, pomóżcie.
    O co mu chodzi?
  • #25
    marcinj12
    Level 40  
    Gdzieś w kodzie próbujesz wstawić za dużą lub za małą liczbę do pola typu unsigned byte.
  • #26
    cepelia
    Level 20  
    czy kolumna id_wychowawcy jest ustawiona jako idntity ?
  • #27
    byczynho
    Level 19  
    Czy wypełniając bazę np. tabelę klasy muszę od razu wybierać wychowawców? Trochę to nie wygodne i trudne.

    Dodano po 2 [minuty]:

    I jeszcze jedno pytanko. Czy mogę validator ustawić tak, żeby sprawdzał kilka pól jednocześnie? W bazie mam zaznaczone, że żadne polo nie może być puste. Weźmy teraz pod nóż tabelę opiekunowie, mam tam chyba najwięcej pól do uzupełniania. Dla każdego pola muszę wstawiać oddzielny validator czy mogę dodać jakiś jeden dla wszystkich?
    I jeszcze jedno pytanie. Czy w tabeli wychowawcy nie lepiej będzie pola nazwisko i imię połączyć?
    Próbowałem w formularzu dodawania klas do pola id_wychowawcy wrzucić rozwijalną listę z wychowawcami ale mogę wybrać tylko albo imię albo nazwisko wychowawcy.
  • #28
    cepelia
    Level 20  
    jeżeli w bazie ustawisz sobie relacje (odwrotnie albo źle) i do tego zaznaczysz że pole nie może być puste, to tak będziesz musiał przypisać opiekuna...
    normalnie jest tak że uczniowie są na liście a dyrekcja tak naprawdę nie wie ile klas otworzy... wniosek coś jest do dupy...

    czy używając słowa walidator chodzi ci o użycie kontrolki errorprovider czy jakiejś innej ??

    i ostatnie... nie radzę nigdy łączyć pól imię i nazwisko w jedną kolumnę, po pierwsze dla tego że nie masz kontroli nad wprowadzonymi danymi (kolejność imię -> nazwisko) a po drugie skoro nie masz pewności ani kontroli to jak chcesz posortować opiekunów alfabetycznie ???

    to że nie możesz wypełnić combo imieniem i nazwiskiem nie znaczy że się nie da...
    Link
  • #29
    byczynho
    Level 19  
    cepelia wrote:
    to że nie możesz wypełnić combo imieniem i nazwiskiem nie znaczy że się nie da...
    Link

    To nie na moją głowę. Na zajęciach z SQL łączyliśmy takie pola w jedno. Samo zapytanie może bym i zrobił ale jak takie zapytanie połączyć z gotową kontrolką to już nie wiem.
    cepelia wrote:
    czy używając słowa walidator chodzi ci o użycie kontrolki errorprovider czy jakiejś innej ??

    RequiredFieldValidator - konkretnie o tą kontrolkę.
    cepelia wrote:
    jeżeli w bazie ustawisz sobie relacje (odwrotnie albo źle) i do tego zaznaczysz że pole nie może być puste, to tak będziesz musiał przypisać opiekuna...
    normalnie jest tak że uczniowie są na liście a dyrekcja tak naprawdę nie wie ile klas otworzy... wniosek coś jest do dupy...

    Czyli twierdzisz, że ta baza jest do kitu?
  • #30
    cepelia
    Level 20  
    skoro masz takie problemy to znaczy że albo nie zrobiłeś tego co ci napisałem wcześniej albo masz coś źle...
    nie jest to wcale takie trudne, pokombinuj z wypełnieniem comboboxa...
    Link

    rozumiem że tą kontrolką do walidacji sprawdzasz sam formularz podczas wprowadzania... i oczywiście dane przed insert'em(update'm)...

    jak wrócę do domu to napiszę ci jak ja używam kontrolek do walidacji...