Cliassi
17.11.2012, 17:49:49
Witam, mam problem z strukturą bazy danych. Mam tabele: szkoły klasy studenci. Chąc stworzyć system wyświetlający oceny wszystkich studentów lepiej jest robić oddzielna tabelke dla klasy czy wszystko w jednej trzymać i dać pole "id klasy" ?
spokoloko123
17.11.2012, 17:53:20
Odpowiednio zrobione osobne tabelę zapewniają większą elastyczność.
PanGuzol
17.11.2012, 19:01:21
Tworzenie nowej tabeli dla każdej nowej klasy to raczej złe rozwiązanie. Z czasem jak będziesz miał kilka tysięcy klas i tym samym kilka tysięcy tabel to będzie bardzo trudne i powolne jak będziesz chciał policzyć statystykę lub cokolwiek bazując na wszystkich danych. Standardowa relacja jeden do wielu powinna być najlepszym rozwiązaniem.
Cliassi
17.11.2012, 19:23:52
czyli lepiej mieć to wszystko w jednej tabeli ?
spokoloko123
17.11.2012, 21:21:12
Cytat(Cliassi @ 17.11.2012, 19:23:52 )

czyli lepiej mieć to wszystko w jednej tabeli ?
Żeby nie było nieporozumień w trzech tabelach

Trudno o receptę na bazę danych. To co napisałeś na początku "szkoły klasy studenci" jest najprostsze, a proste rozwiązania zazwyczaj sprawdzają się najlepiej. Zastanawia mnie tylko czy dla klas jest sens tworzenia osobnej tabeli bo zazwyczaj klasę opisujemy od dwóch do trzech znaków np. 1A, 3Az
CuteOne
17.11.2012, 22:03:35
+ co najmniej 2 tabele na relacje - jeden student, może być zapisany do X kirunków w X uczelniach
thek
18.11.2012, 11:09:35
Jak dla mnie najprostszym podejściem będzie wersja z podziałem podobnym do:
Uczeń: id, nazwisko, imię
Szkoła: id, nazwa
Klasa: id, id_szkoły, nazwa
Przedmiot: id, nazwa
Klasa_rocznika: id, id_klasy, rok
Ocena: id_ucznia, id_klasy_rocznika, id_przedmiotu, ocena
Oczywiście można rozbijać na wiele innych relacji, ale ten sposób w jednym miejscu gromadzi wszystkie konieczne dane. Ocena wskazuje na ucznia i przedmiot, a dodatkowo określoną klasę. Dla takiego podejścia wydzieliłem jeszcze rocznik klasy. Dzięki temu dochodzi kilka możliwości przy wyłuskiwaniu danych, bez zbytniego rozbicia na malutkie klasy. Oczywiście to tylko jedna z wielu możliwości podejścia. Wiele zależy od tego, na co kładziesz nacisk.