Многотабличные базы в ACCESS
Разнесение данных по разным таблицам, убирая старые проблемы, упомянутые выше , порождает другие проблемы. Это проблема удаление записей в таблицах объектах. Например, если удалить запись о враче Сиделкине из таблицы врачей, то в таблице приема пациентов будут нарушены ссылки на этого врача. То есть код врача Тарелкина в таблице приема останется, а вот врача с таким кодом не будет. В этом случае говорят, что нарушена целостность данных. Данные в базе становятся противоречивыми.
ACCESS автоматически сам может поддерживать целостность данных. Целостность значит непротиворечивость.
а) ACCESS не позволит ввести ссылку на несуществующий объект.
б) А также не позволит удалить объект(врача, пациента, отделение), если на него имеется ссылка из другой таблицы.
Алгорим создания и поддержки связей между таблицами следующий:
1) В таблицах объектах указать ключевые поля кнопкой [ключ]. Ключевое поле необязательно должно быть счетчиком. ( Счетчик - просто удобно )
Это же надо проделать и в других таблицах-объектах(ПАЦИЕНТОВ и ОТДЕЛЕНИЙ)
2) ПРИ добавлении в таблицу МНОГИЕ ключевого поля объекта
выполнить следующие условия:
а) Добавляемые поля должны быть НЕ КЛЮЧЕВЫМИ !!!
б) Эти поля обязательно должны совпадать по типу и размеру
с ключевыми полями таблиц объектов
Если ключ объекта - СЧЕТЧИК соответствующее поле в таблице
МНОГИЕ должно быть ДЛИННЫМ ЦЕЛЫМ ( это целые числа шириной 4
байта)
3) В панели инструментов гланого окна Базы данных кнопкой [схема данных] откройте одноименное окно [схема_данных] в котором можно установить свзи между таблицами

4) В окне [Схема данных] установите связи между таблицами.
Для этого мышкой "затащите" ключ таблицы-объекта ОДИН на связываемое поле в таблице МНОГИЕ, а именно
[ID_отделения] в таблице ОТДЕЛЕНИЯ на поле [Отделение] в таблице ВРАЧИ ( Связь - Врачи-Отделения)
[ID_врача] в таблице ВРАЧИ на поле [Врач] в таблице ПРИЕМ ПАЦИЕНТОВ ( Связь - Врачи-Прием пациентов)
[ID_пациента] в таблице ПАЦИЕНТЫ на поле [Пациент] в таблице ПРИЕМ ПАЦИЕНТОВ ( Связь - Пациенты-Прием пациентов )

5) При создании связей Установить флаг [x] контроль целостности данных
При этом access установит связь многие-к-одному. Целостность данных означает - непротиворечивость
Access не даст :
- удалить объект при наличии ссылки на него
- изменить значение ключа, если на него есть ссылка в другой таблице
- добавить ссылку на несуществующий объект

[x] - каскадное удаление
при удалении записи из таблицы-объекта[ОДИН] из таблицы
"МНОГИЕ" автоматически удалятся все записи со ссылками
на этот объект
7) При необходимости установить флаги [x] - каскадное обновление
Тогда при обновлении ключа в таблице ОДИН, автоматически изменяться ссылки на него в связанных таблицах МНОГИЕ