Elektroniczny indeks - zaprojektowanie kilku tabel

0

Witam, jestem tu nowym użytkownikiem tak więc wybaczcie za jakikolwiek błąd.
Tworzę elektroniczny indeks i mam taki problem.
Główna tabela to INDEKS w której mam miejsce na klucz obcy o nazwie ID_Przedmiot
Teraz tak, zależnie od wydziału i kierunku mam oddzielne tabele (w nich znajdują się oceny wraz z odpowiednimi co do wydziału i kierunku przedmiotami) czyli np
WYDZ_KIER
WYDZ_KIER
i tak dalej...
Teraz jak mam powiązać moją główną tabele INDEKS z tymi tabelami (ocenami wraz z przedmiotami) ?

Schemat uproszczony moich tabel.

INDEKS

  • ID_Indeks (Klucz główny)
  • ID_Przedmiot

WYDZ_KIER1

  • ID_Przedmiot (klucz główny) -* czy potrzebny?*
  • Matematyka
  • Informatyka
    ...

WYDZ_KIER2

  • ID_Przedmiot (klucz główny) - czy potrzebny?
  • Historia
  • Geografia
    ...

Pozdrawiam :)

0

Ja bym to zrobił troszeczkę inaczej.

INDEKS
ID_Indeks (Klucz główny)
ID_Wydz

WYDZ
ID_Wydz (Klucz główny)
NAZWA_WYDZ

PRZEDMIOTY
ID_Wydz
ID_Indeks
Matematyka (nullable)
Informatyka (nullable)
Historia (nullable)
Geografia (nullable)

:)

2

Należałoby zacząć od początku, tak na oko potrzebne są tabele:

  1. Wydziały
  2. Kierunki
  3. Przedmioty
  4. WydziałyKierunki (łącząca)
  5. KierunkiPrzedmioty (łącząca)

I teraz pytanie - co to za tabela "Indeks" i do czego ma służyć?

0

Chciałem z poziomu tabeli "INDEKS" mieć dostęp do wydziału, kierunku, przedmiotów studenta jak i samą charakterystykę studenta czyli pesel, imie, nazwisko adres itp. Tabela np STUDENT (jego dane personalne itp) i INDEKS miałyby związek 1:1

Co jeżeli student będzie studiował na dwóch kierunkach, albo po skreśleniu z listy studentów zacznie studia ponownie? Tutaj odpada 1:1.

0

Po skreśleniu z listy studentów i ponownym przyjęciu zostaje przydzielony nowy numer indeksu bądź też przypisany stary (zależy od uczelni).

Nie wiem ogólnie czy podchodzisz z dobrej strony do zaprojektowania bazy.

Nie łatwiej było by to zrobić w strukturze.

//ŹLE
Student -> 1:n -> Indeks (IndeksId(PK), IndeksNr, StudentPesel(FK)) -> 1:n -> IndeksPrzypisanie (IdPrzypisania(PK), IdKierunku(FK), IdIndeks(FK), Status(ENUM)) <- N:1 <- Kierunek (IdKierunek(PK), Przedmiot) (ITD).

// Update po info od @somekind

Student -> 1:n -> Indeks (IndeksId(PK), IndeksNr, StudentId(FK)) -> 1:n -> IndeksPrzypisanie (IdPrzypisania(PK), IdKierunku(FK), IdIndeks(FK), Status(ENUM)) <- N:1 <- Kierunek (IdKierunek(PK), Przedmiot) (ITD).

Patrząc jak wygląda sprawa chociażby na mojej uczelni. Niektóre przedmioty mimo 100% zgodności materiału i tych samych prowadzących mają inne kody, tak więc takie 2 przedmioty są rozpatrywane jako 2 niezależne przypadki. (Oczywiście inaczej wygląda sprawa przy podziale na Specjalizacje w ramach 1 kierunku/wydziału, tam mimo że są różne przedmioty to część jest wspólna dla całego kierunku i mają te same kody).

0

To jest w ogólności bardziej skomplikowana sprawa, bo co jeśli student nie studiuje żadnego kierunku konkretnie tylko jest na studiach międzywydziałowych? Nie wiem, czy wówczas student jest związany z wydziałem (albo kilkoma), kierunkiem czy po prostu z listą przedmiotów. No chyba, że studia międzywydziałowe potraktować jako kierunek prowadzony przez kilka wydziałów (więc powiązanie Wydział 1:n Kierunek jest nieprawidłowe). Z drugiej strony, kierunek nie definiuje listy przedmiotów, jeśli student może je sobie wybierać. No i w sumie, przedmioty są prowadzone raczej w ramach instytutów/katedr, co też powinno się uwzględnić.

Wojski napisał(a):

Indeks (IndeksId(PK), IndeksNr, StudentPesel(FK))

Klucz obcy na PESELu? WTF?

0

Klucz obcy na PESELu? WTF?

StudentPesel / IdStudenta -> Whatever(ważne żeby był to unikalny klucz) : )>

A co, nie może mieć sobie bazy PESELi? Był na Stadionie, to kupił, nie? No! :D - fourfour 19 minut temu

Jeżeli jest to system np. dla uczelni, to po co ma kupować baze Peseli :D ?

Może mieć, ale czemu na tym jakieś FK robić... - somekind 12 minut temu

Nie musi robić. Ja bym wstępnie pewnie zrobił po czym w praniu by wyszło czy jest mi to potrzebne do szczęścia :)

0
Wojski napisał(a):

A co, nie może mieć sobie bazy PESELi? Był na Stadionie, to kupił, nie? No! :D - fourfour 19 minut temu

Jeżeli jest to system np. dla uczelni, to po co ma kupować baze Peseli :D ?

No jak to po co - żeby sprawdzić, czy ten student to ten student a nie inny.. przecież wiadomo, że student kombinuje :)

1
Wojski napisał(a):

StudentPesel / IdStudenta -> Whatever(ważne żeby był to unikalny klucz) : )>

Pomijając już fakt, że PESEL nie jest w praktyce unikalny, to zwłaszcza null dla studentów, którzy nie mają w ogóle tego numeru będzie unikalny. ;]

Stosowanie naturalnych kluczy mści się raczej prędzej niż później.

Nie musi robić. Ja bym wstępnie pewnie zrobił po czym w praniu by wyszło czy jest mi to potrzebne do szczęścia :)

No można najpierw robić, potem myśleć. Zdaje się, że w ekstremalnych przypadkach dają za to nawet Nagrodę Darwina czy coś takiego.

0

Pomijając już fakt, że PESEL nie jest w praktyce unikalny, to zwłaszcza null dla studentów, którzy nie mają w ogóle tego numeru będzie unikalny. ;]

Rozumiem, nie wziąłem pod uwagę Studentów Zagranicznych.
Co do unikalności PESEL, znowu masz rację.
Dlatego też skoryguję:
Powinien zostać zastosowany IdStudenta.

Ale nie rozumiem czemu tego IdStudenta nie można by użyć jako FK w "Indeks". Pewnie masz rację, ale bardzo chętnie bym dowiedział się więcej aby przy projektowaniu baz uniknąć takiej sytuacji :)

0

Odświeżam mój temat, nie miałem w ostatnim czasie czasu aby się za to zabrać.
Generalnie nie tworzę tego programu dla szkoły itp... To jest tylko dla mnie aby pisać, zbierać jakąś wiedzę z zakresu programowania.
Tak więc mógłbym mi ktoś podpowiedzieć w jaki sposób zrobić to co chciałem w pierwszym poście?

Nie będę brał pod uwagę studentów zagranicznych, specjalizacji, grup, nie będą studiowali na dwóch kierunkach i tak dalej :)

Na razie wygląda to tak
Mam tabele Student która opisuje mi danego studenta (dane personalne itp) i tabele Indeks która pokazuje mi jego kierunek, wydział, stopień...

Teraz to czego nadal nie wiem, jak zrobić aby każdy student miał swoje oceny w odpowiedniej tabeli

Schemat mam w załączniku :)

1

To może zacznij od poczytania o podstawach baz danych, w szczególności o postaciach normalnych, a najwięcej o trzeciej postaci normalnej.
http://osilek.mimuw.edu.pl/index.php?title=Bazy_danych/Wyk%C5%82ad_5

1 użytkowników online, w tym zalogowanych: 0, gości: 1