Сегодня я начинаю небольшой проект по созданию программы школьного администрирования на основе Django. Я в настоящее время разрабатываю модели и их соответствующие отношения. Будучи довольно новым для Django и реляционных баз данных в целом, я хотел бы получить некоторую информацию.
Прежде чем я покажу вам текущую модель, вам необходимо понять, для чего предназначена программа. Помните, что моя цель - чтобы программное обеспечение могло использоваться как отдельными школами, так и целыми школьными системами.
Особенности:
- Создать несколько школ
- Отслеживание численности учащихся на школу
- Отслеживать демографические данные учащихся, контактную информацию родителей и т. Д.
- зачетные книжки
- стенограммы
- Отслеживать дисциплинарные записи.
- Графики платежей и отслеживания платежей
- Создание отчетов (активность учащихся, стенограммы учащихся, успеваемость в классе, успеваемость по демографическим данным, отчеты об оплате, дисциплинарный отчет по классам учащихся и демография)
- Автоматизированный PDF отчет по электронной почте для родителей для отчетов учащихся.
Учитывая эти требования к функциям, вот макет модели, который у меня сейчас есть:
Модели
* Person
o ID: char or int
o FirstName: char
o MiddleName: char
o FamilyName: char
o Sex: multiple choice
o Ethnicity: multiple choice
o BirthDate: date
o Email: char
o HomePhone: char
o WordPhone: char
o CellPhone: char
o Address: one-to-one with Location
* Student (inherent Person)
o Classes: one-to-many with Class
o Parents: one-to-many with Parent
o Account: one-to-one with PaymentSchedule
o Tasks: one-to-many with Tasks
o Diciplin: one-to-many with Discipline
* Parent (inherent Person)
o Children: one-to-many with Student
* Teacher (inherent Person)
o Classes: one-to-many with Class
* Location
o Address: char
o Address2: char
o Address3: char
o City: char
o StateProvince: char
o PostalCode: char
o Country: multiple choice
* Course
o Name: char
o Description: text field
o Grade: int
* Class
o School: one-to-one with School
o Course: one-to-one with Course
o Teacher: one-to-one with Teacher
o Students: one-to-many with Student
* School
o ID: char or int
o Name: char
o Location: one-to-one with location
* Tasks
o ID: auto increment
o Type: multiple choice (assignment, test, etc.)
o DateAssigned: date
o DateCompleted: date
o Score: real
o Weight: real
o Class: one-to-one with class
o Student: one-to-one with Student
* Discipline
o ID: auto-increment
o Discription: text-field
o Reaction: text-field
o Students: one-to-many with Student
* PaymentSchedule
o ID: auto-increment
o YearlyCost: real
o PaymentSchedule: multiple choice
o ScholarshipType: multiple choice, None if N/A
o ScholarshipAmount: real, 0 if N/A
o Transactions: one-to-many with Payments
* Payments
o auto-increment
o Amount: real
o Date: date
Если у вас есть идеи о том, как это можно улучшить, я бы с радостью подарил им год!
Обновление
Я написал исходный код models.py, который, вероятно, нуждается в большой любви. Если вы хотите посмотреть или даже присоединиться к проекту, перейдите по ссылке.
http://bazaar.launchpad.net/~djangoschools/djangoschools/trunk/files