КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Дополнительные подробностиКомпания Cacophone Studios начала движение в нужном направлении, но им еще нужно подумать о многом. Прежде всего, каждый раз, когда предлагается курс, необходимо создать отдельную запись в таблице Classes. Это разумный подход, но у него есть потенциальная проблема. Это связано с тем, что когда курс (например, электроакустический в стиле гамелан (Electro-Acoustic Gamelan)) заканчивается, он снова предлагается как новый курс с новыми студентами. Несмотря на то, что это полностью новый курс, у него есть информация, общая с предыдущим курсом, например, описание, стоимость курса, предъявляемые требования и т. д. Для учета этой особенности нужно создать еще одну таблицу ClassDescriptions (описания курсов). В записи этой таблицы должна содержаться вся описательная информация о курсе. В записи таблицы Classes представлены сведения об одном предусмотренным расписанием конкретном учебном курсе. Таким образом, школа может предлагать без помех один и тот же курс многократно. Для реализации этой части проекта каждая запись таблицы Classes связывается с единственной записью таблицы ClassDescriptions. Между этими таблицами существует связь "один-ко-многим" (рис. 5.19). Компания Cacophone Studios также должна думать о неприятной финансовой стороне вещей. Каждый раз, когда студент записывается на курс, нужно взять с него установленную плату за обучение. А при каждом назначении преподавателя для ведения курса ему нужно своевременно выплачивать зарплату. Рис. 5.19. Благодаря таблице ClassDescriptions можно использовать одно и то же описание для нескольких курсов, тем самым избегая избыточности данных Этими подробностями можно заполнить две таблицы: TeacherPayments(плата преподавателям) и StudentCharges(плата за обучение студентов). Очевидно, что для этих таблиц надо установить связи, но, возможно, не такие, как вы ожидали. Вы можете решить, что запись таблицы StudentChargesследует связать напрямую с записями таблицы Students.Такая связь не лишена смысла, поскольку необходимо знать, кто из студентов заплатил деньги, Но так же важно знать, за что заплачены деньги — за какой именно курс платит студент. Другими словами, каждая запись таблицы StudentChargesдолжна быть связана и с таблицей Students,и с таблицей Classes. Однако есть более легкий способ. Вы можете сберечь силы, связав таблицу StudentChargesнепосредственно с таблицей StudentsClasses.Если помните, в каждой записи таблицы Students_Classesсодержатся сведения о студентах и курсе для одного учебного курса. Каждый раз, когда добавляется запись в таблицу Students_Classes,необходимо включить соответствующую сумму в таблицу StudentCharges,Аналогичное отношение существует между таблицами Teachers_Classesи TeacherPayments.На рис. 5.20 показано все сооружение (не включена только таблица ClassDescriptions, представленная на рис. 5.19).
|