2012-02-08 6 views
-1

Я пишу программу, чтобы контролировать школу. Это больше похоже на схему подписки на членство. Студент подает заявку на курс и должен будет заплатить надписью за подписку ежемесячную плату за оставшееся время, определенное школьным календарем.Как создать базу данных платежей?

В зависимости от каждого случая надпись или ежемесячные сборы могут быть уменьшены для определенного конкретного ученика. После того, как студент подпишет курс, это будет периодический платеж, студент может совершать частичные платежи. Кроме того, студент может уйти и никогда не вернуться.

Я пришел с чем-то вроде таблиц этого:

STUDENT 
+id 
+name 

COURSE 
+id 
+name 
+inscription_fee 
+monthly_fee 

SCHEDULED_PAYMENTS 
+id 
+student_id 
+description 
+amount 

-LEDGER 
+id 
+student_id 
+course_id 
+amount 

Но я закончил с длинными сложными запросами, когда я хочу знать, что студент заплатил, которым ежемесячные взносы за счет и т.д.

Так что я спрашиваю: Правильно ли это проект для создания базы данных для платежей? или есть лучший способ?

+2

Существует редко, если когда-либо, «правильный путь». –

+0

Есть много правильных способов, но вы не можете проверить их, поэтому ваша цель должна быть просто, во-первых, не делать этого неправильно. –

+0

Сохраняет вычисленные значения и маркирует неправильный путь? – mcanedo

ответ

-1

Я поставил бы книгу и запланированные платежи как 1 стол. Когда платеж должен быть добавлен, и если он получает оплату, отметьте его как оплаченную. Но поскольку @Marrgall указал на то, что на самом деле нет правильного способа сделать это, и вы найдете много долгих сложных запросов в поле. поэтому вы можете также использовать его.

+0

Является ли маркировка как уплаченная хорошая практика, вместо того, чтобы рассчитать разницу между причитающейся суммой и оплаченной суммой? – mcanedo

+0

Ну, когда я говорю, что отмечен платным, я больше говорил, что вы его обновили, а не в отдельной книге. Если вы сохранили книгу, я бы связал ее с запланированными платежами, чтобы узнать, что происходит с платежами, нет необходимости связывать ее со студентом и курсом, хотя курс должен быть связан с запланированными платежами. – thenetimp

0

Я думаю, что все, что вам нужно, это ваш студент стол, и ваш стол, конечно, тогда таблица, связывающая между ними, чтобы шоу, которое студентом принимает какой курс

Student + ID + имя

курс + идентификатор + имя + плата + monthly_fee

Student_course + student_id + Course_id

затем

select * 
FROM student 
JOIN student_course on student.id = student_course.student_id 
JOIN course on course.id = student_course.coruse_id 
where student.name = ? 

Тогда у вас есть и ежемесячная абонентская плата и плата, за класс для студентов

Смежные вопросы