SQL
Как реализовать данную таблицу?
Каждая категория врачебного персонала обладает характеристиками, присущими только специалистам этого профиля и по-разному участвует в связях: хирурги, стоматологи и гинекологи могут проводить операции, они же имеют такие характеристики, как число проведенных операций, число операций с летальным исходом; рентгенологи и стоматологи имеют коэффициент к зарплате за вредные условия труда, у рентгенологов и невропатологов более длительный отпуск.
Для начала разделите конкретных специалистов и профессию специалистов. Как в языках программирования переменные от типов переменных.
У вас есть конкретные специалисты - ID, ФИО, Категория, Зарплата и что там ещё есть у всех.
Но так как специалисты разные и у каждого типа специалистов свои свойства, то к этим атрибутам нужно добавить ещё тип специалиста. Каждому значению типа нужно добавить свою конкретизирующую подтаблицу с дополнительными атрибутами. Например для хирурга будет таблица с ID, Число операций, кол-во летальных. Причём ID будет равен ID основной таблицы, отношение 1 к 1. Можно типу сопоставить не одну, а несколько конкретизирующих таблиц.
В предыдущем абзаце я описал типичную схему хранения данных объекта и его наследников. Несколько конкретизирующих таблиц появляется, когда имеется многоуровневая иерархия объектов, а также при необходимости реализовать множественное наследование.
Аналогично нужно поступать с категориями, там такая же схема - основная таблица категорий и много конкретизирующих подтаблиц. Для связи конкретного специалиста с его категорией используют дополнительное поле в основной таблице специалистов. Так как несколько специалистов могут иметь одну категорию, то отношение 1 ко многим
У вас есть конкретные специалисты - ID, ФИО, Категория, Зарплата и что там ещё есть у всех.
Но так как специалисты разные и у каждого типа специалистов свои свойства, то к этим атрибутам нужно добавить ещё тип специалиста. Каждому значению типа нужно добавить свою конкретизирующую подтаблицу с дополнительными атрибутами. Например для хирурга будет таблица с ID, Число операций, кол-во летальных. Причём ID будет равен ID основной таблицы, отношение 1 к 1. Можно типу сопоставить не одну, а несколько конкретизирующих таблиц.
В предыдущем абзаце я описал типичную схему хранения данных объекта и его наследников. Несколько конкретизирующих таблиц появляется, когда имеется многоуровневая иерархия объектов, а также при необходимости реализовать множественное наследование.
Аналогично нужно поступать с категориями, там такая же схема - основная таблица категорий и много конкретизирующих подтаблиц. Для связи конкретного специалиста с его категорией используют дополнительное поле в основной таблице специалистов. Так как несколько специалистов могут иметь одну категорию, то отношение 1 ко многим
Если тот или иной признак в равной степени свойственен целому классу специалистов (например, всем стоматологам), то можно создать таблицу категорий, и для каждой категории прописать ее особенности: длительность отпуска (либо прибавка к отпуску по умолчанию), коэффициент к зарплате, ..
Дальше нам нужна таблица специалистов, у каждого из которых будет ссылка на элемент из таблицы категорий.
В таблице операций каждая операция будет привязана к специалисту (одному).
(Если одну операцию могут выполнять несколько специалистов, тогда надо реализовать связь "многие-ко-многим" между специалистами и операциями. Это делается при помощи отдельной таблицы, в которой хранятся пары значений: ID специалиста, ID операции.)
Затем перечень специалистов можно реализовать в виде представления (VIEW) и в этом представлении считать количество операций.
Дальше нам нужна таблица специалистов, у каждого из которых будет ссылка на элемент из таблицы категорий.
В таблице операций каждая операция будет привязана к специалисту (одному).
(Если одну операцию могут выполнять несколько специалистов, тогда надо реализовать связь "многие-ко-многим" между специалистами и операциями. Это делается при помощи отдельной таблицы, в которой хранятся пары значений: ID специалиста, ID операции.)
Затем перечень специалистов можно реализовать в виде представления (VIEW) и в этом представлении считать количество операций.
Похожие вопросы
- SQL. Есть таблица а и b как мне поставить ограничение на поле таблицы b, на основании поля таблицы a? пример в описании
- Можно ли связать одно поле таблицы с несколькими полями другой таблицы?
- Вопрос по SQL - уникальное поле ID для трёх таблиц (нельзя вставить значения в одну, если оно есть в другой таблице).
- Как в одной записи таблицы хранить несколько полей одного типа (не фиксированное число)?
- Блин что то не могу найти способ произвести эффективную выборку данных из таблицы БД?
- Как связать две таблицы между собой?
- SQL,БД. Какие данные могут быть в таблице users?
- Postgresql Как правильно наладить связь между таблицами в базк данныъ?
- UPDATE обновить все таблицы.. помогите с запросом??? (вн подробнее)
- PostgreSQL Extensions. С помощью модуля tablefunc получите из таблицы projects базы HR