Объекты и связи между объектами.
Правила проектирования многотабличных баз данных
Чтобы продемонстрировать все правила применим их к более сложному примеру - базе данных ПОЛИКЛИНИКА
В этой базе должна храниться следующие информация :
[Дата приема пациента] , [диагноз] , [ФИО пациента] , [телефон пациента], [адрес пациента], [ФИО лечащего врача] , [телефон врача] , [№ кабинета врача] , [на каком отделении врач работает ] , [телефон отделения] ,[ФИО зав.отделения]
( Учесть , что :
- Каждый врач может работать только на одном отделении
- на кажом отделении работает несколько врачей.
Правило 1. Выделить объекты. Для каждого объекта создать отдельную таблицу.
Отличительный признак объекта: объект может существовать "сам по себе", ни с кем не связанный. В примере с библиотекой объектами являются читатели и книги.В примере с поликлиникой объектами являются : пациенты, врачи, отделения.



Но этого не достаточно. Здесь не показано на каком отделении работает каждый врач. И каких пациентов , какие врачи принимали.
Эти вопросы решаются путем установления связей между объектами.
Правило 2. Определить виды связей между таблицами-объектами
Существует 2 вида связей :- - один ко многим
- - и многие ко многим
2.1) Связь Один ко многим
Имеет место,если каждую запись таблицы T1 можно
связать с нескольким записями таблицы T2, но не наоборот
Между Отделениями - врачами связь
один ко многим.
Действительно, на одном отделении может работать несколько врачей, но
не наоборт. Врач может работать только на одном отделении.
2.2) Связь многие ко многим
Имеет место, если каждую запись таблицы Т1 можно связать с несколькими
записями таблицы Т2 и наоборот , каждую запись Т2 можно связать с
несколькими записями Т1
Между пациентами и врачами связь многие ко многим.
Действительно один и тот же пациент может обратиться к нескольки
врачам. И наоборот, один и тот же врач может принять несколько пациентов.
Правило 3. Для реализации связи один ко
многим, ключ таблицы ОДИН
надо добавить в таблицу МНОГИЕ в качестве поля-характеристики
В таблице отделения надо создать ключевое поле(
ID_отделения) и добавить такое же поле в таблицу врачей, но уже в виде поля-характеристики.Что такое ключевые поля и поля-характеристики см. на следующей странице( ключи и характеристики)

Правило 4:
Для реализации связи многие-ко-многим создается отдельная
таблица-связка.
В эту таблицу-связку включаются ключевые поля связываемых таблиц, но
уже в качестве характеристик.
О ключах и характеристках читайте
здесьВ таблицах пациентов и врачей надо создать ключевые поля для того, чтобы на них можно было сослаться из таблицы связки.
В таблице связке(Прием пациентов) по ID пациента и ID врача понятно, какой врач какого пациента принимал

Правило 5. Не замыкать связи. Для N объектов требуется(N-1) связь.
Схема связей в нашем примере выглядит так
Ни в коем случае нельзя создавать связь между пациентами и
отделениями,
чтобы не получилось кольцо из связей.