13

Tworzę system szkolnego systemu zarządzania i opracowuję załączony schemat bazy danych.Normalizacja baz danych dla systemu zarządzania szkołą

Database diagram http://oi40.tinypic.com/15x21ig.jpg

obserwuję to, jak działa system:

  1. Szkoła ma wielu uczniów i nauczycieli. Ma również wiele kursów (przedmiotów) nauczanych. Na poziomie klasy można przypisać wiele kursów. Te kursy z kolei zostaną przydzielone studentom w danej klasie.
  2. Poziomy uczniów są podzielone na oceny i sekcje. Student może być na poziomie 5, ale jeśli uczniowie klasy 5 są liczni, są podzieleni na sekcje. np .: klasa 5 sekcja A, klasa 5 sekcja B.
  3. Uczniowie są umieszczani w unikalnych salach lekcyjnych. Klasa będzie wyjątkowa w całym tekście. Klasa 5 klasy A z roku 2010 będzie inna niż klasa 5 klasy A z roku 2011.
  4. Uczniowie są przydzielani do rodziców. Rodzic może mieć więcej niż jednego ucznia w szkole.
  5. Do nauczyciela można przypisać jedną lub więcej sal lekcyjnych.
  6. Frekwencja dla uczniów jest podejmowana przez ich nauczyciela na co dzień
  7. Będzie wiele rodzajów egzaminów. Wyniki egzaminu są zapisywane dla każdego przedmiotu (kursu).

Jestem początkującym w normalizowaniu bazy danych i byłbym zadowolony, gdyby ktoś mógł dać mi wskazówki, czy baza danych wygląda dobrze czy nie.

EDIT:

Ponadto, nie będzie tylko jeden punkt logowania. W powyższym przypadku podczas logowania użytkownik będzie musiał wybrać typ użytkownika z rozwijanej listy. Ta lista rozwijana zostanie wykorzystana do wysłania zapytania do odpowiedniej tabeli w celu zalogowania się do systemu. Inną alternatywą jest użycie wspólnej tabeli user, która będzie przechowywać user_id, email, password, last_login_date, last_login_ip, ale będzie przechowywać inne szczegóły w odpowiednich tabelach, takich jak student, parent, teacher. Jaki jest preferowany/poprawny sposób wdrożenia?

+3

Hej, uczniowie w twojej szkole mogą mieć tylko jednego rodzica? Raczej dziwnie :) Plus, dlaczego klasie przypisano tylko jednego nauczyciela? Czy nie powinien być przypisany do kursu? – Tadeck

+0

@Tadeck Tabela nadrzędna przechowuje dane autoryzowanego rodzica, który będzie mógł przeglądać i sprawdzać zapisy uczniów. Nie wskazuje wszystkich danych rodziców ucznia. Np .: Ojciec może otrzymać rodzicielską nazwę użytkownika/hasło, aby sprawdzić swojego ucznia. Matka też mogłaby z niego korzystać, ale generalnie tylko jeden byłby w stanie to zrobić.Jeśli chodzi o klasę, w klasie będzie tylko JEDEN przydzielony nauczyciel klasy, który wypełnia frekwencję/stopnie uczniów w danej klasie. Kurs odnosi się do przedmiotów, które student studiuje. Oceny zostaną przypisane do przedmiotów i do klas zostaną przypisane oceny. – WebNovice

+3

@Damchey bądź przygotowany, że rzeczy takie jak reguła 1-autoryzowanego-nadrzędnego mogą się zmienić, a twoja aplikacja będzie musiała jakoś sobie z tym poradzić. Dobrym pomysłem może być zaprojektowanie tego, aby student mógł mieć dowolną liczbę autoryzowanych opiekunów - możesz wtedy ograniczyć liczbę do 1 na poziomie interfejsu użytkownika –

Odpowiedz

5

W ogóle nie modelujesz GRADE_SECTIONS.

Jeśli w okresie wakacji letnich szkoła nie ma dużego programisty rozbiórki i budowy, klasy będą takie same. To jest przypisania, które zmieniają się co roku. Zatem CLASSROOMS powinny być przypisane do osobnej jednostki GRADE_SECTION, zamiast łączenia SEKEKCJI i SEGMENTÓW KLASY, jak teraz.

Uczniowie powinni być przypisani do GRADE_SECTIONS, a nie do SALBOM.

KURSY powinny mieć wiele EGZAMINÓW zamiast wielu EXAM_RESULTS. Po prostu nie ma sensu, aby egzamin francuski mógł być przeprowadzony przez studentów uczących się matematyki i języka rosyjskiego.