Schemat bazy danych szkoły

Oct 22 2020

Pracuję nad prostym systemem szkolnym, który obsługuje rejestrację uczniów i harmonogram. Ponadto system powinien obsługiwać różne typy szkół, takie jak przedszkola, szkoły podstawowe, średnie i liceum (przedszkola i szkoły podstawowe).

Nie jestem ekspertem w projektowaniu baz danych, ale nadal podążam za tym, czego się uczę, czytając i ćwicząc.

  • Student
  • Rodzic
  • Student_parent (jeśli więcej niż jeden rodzic chce być w systemie)
  • Szkoła (gdzie system może sprawdzić, do jakiego poziomu uczniowie należą (podstawowa czy średnia itd.))
  • Przedmiot (wszystkie przedmioty w szkołach)
  • Klasa (w zasadzie harmonogram)
  • Sala lekcyjna (każdy pokój i laboratorium w szkole (w zasadzie wyposażenie szkoły))
  • Frekwencja (jeszcze nie)
  • Znaki (jeszcze nie)

czy relacje między tabelami są wystarczające lub czy trzeba je przeprojektować? Masz jakiś problem z tym podstawowym schematem? Czy to wystarczy dla systemu? Jak wdrożyć terminy (semestr 1 i semestr 2) oraz lata? A co z końcem roku. Jak przenieść uczniów na nowy rok (jak to zrealizować)?

Mam nadzieję, że zanim zacznę go programować, zdobędę kilka uwag na temat ulepszeń lub problemów ze schematem.

Dziękuję Ci

. . Edycja: wdrażanie sugestii Johna Herberta . . .

Wdrażanie punktów Johna z wyjątkiem ostatniego, ponieważ w szkole nie ma wydziałów, a liczba uczniów jest bardzo subiektywna w stosunku do roku.

  • zmieniono nazwy tabel z przedrostkami w celu ich grupowania.
  • Zmodyfikowano kilka pól zgodnie z sugestią Johna w celu lepszego wyszukiwania i grupowania
  • Dodano termin tabeli i połączono go ze szkołą (KG- Primary- Sec..etc)
  • W razie potrzeby zmodyfikowano rozmiary pól z Int (11) na coś mniejszego

Schemat bazy danych po edycji

po wdrożeniu tych rzeczy ktoś nie może pomóc, ale błąka się. Czy w przyszłości będę musiał dodawać indeksy wydajności? Gdzie będą ewentualnie potrzebne indeksy?

Mam nadzieję, że przyniesie to korzyści komuś, kto jest zainteresowany projektowaniem DB.

Odpowiedzi

1 JohnHerbert Oct 22 2020 at 03:04

Podsumowując, myślę, że Wasze Kluczowe Relacje są na tyle proste i jasne, że mogę łatwo znaleźć swoją drogę. Prawdopodobnie znajdziesz kilka miejsc do zmiany podczas tworzenia makiety i ostatecznie kodowania procedur składowanych i innych procesów. Oto moje myśli, gdy je przeglądałem.

  • Zastąp rodzica czymś bardziej ogólnym, np. Opiekunem. Takie użycie języka otwiera drzwi dla innych autorytetów dla ucznia, takich jak dziadkowie i adoptowani rodzice, a także pozwala na umieszczenie flagi, która wskazuje, że dana osoba jest kontaktem w nagłych wypadkach lub może odebrać dziecko.
  • Rozdziel pole [Full_Name] na dwa pola; [Given_Name] i [Nazwisko]. Pomaga to podczas sortowania według nazwy podczas programowania. (Lepiej, żeby dwie siostry Williams pojawiły się obok siebie w raporcie, niż wszystkie Mary ze szkoły zgrupowane razem).
  • Zaproponuj przeniesienie pola [termin] pod tabelą [subject] do tabeli [class]. To pole może służyć do wskazania, czy Bobby Tables był w tej klasie wiosną 2010 czy jesienią 2009 roku, z tym konkretnym nauczycielem w określonym pokoju. Chciałbym mieć inną tabelę z zakresami dat dla tych terminów. (Na marginesie, INT (11) może być trochę przesadą. Sto lat jednotygodniowych semestrów dałoby tak naprawdę tylko 5000 terminów, a wystarczyłoby INT (4))
  • Jeśli chodzi o promowanie uczniów na następny rok, można to zrobić z nowym polem pod tabelą [student], z prostym INT (2) oznaczającym rok ich edukacji. Procedura składowana, która jest uruchamiana pod koniec roku szkolnego, może sprawdzić zdobyte punkty i przesunąć je w górę.
  • Można również rozważyć uwzględnienie w tabelach [przedmiot] i [nauczyciel] wydziału, na przykład matematyki, nauk ścisłych lub języka angielskiego. Można to wykorzystać, aby pomóc w pogrupowaniu wszystkich nauczycieli przedmiotów ścisłych lub pokazaniu wszystkich lekcji historii dostępnych w tym semestrze, zwłaszcza jeśli szkoła jest wystarczająco duża, aby mieć więcej niż jedną sesję danej klasy.