Диаграмма реляционной схемы к ER
Я разработал реляционную модель для университетской базы данных, которая приведена ниже. теперь меня просят составить ER-диаграмму из этой базы данных. Я просто хочу знать, есть ли какой-либо инструмент, с помощью которого я могу генерировать диаграмму ER из реляционной схемы. если нет, каковы шаги для создания диаграммы ER из реляционной модели?
1 ответ
Я не знаю каких-либо инструментов, которые могут генерировать правильную диаграмму ER из реляционной модели. Одна трудность для таких инструментов состоит в том, что не все реляционные модели могут быть интерпретированы как модели ER. Хотя реляционная модель может выражать любой конечный набор фактов (поскольку она эквивалентна логике первого порядка), модель сущности-отношения более ограничена.
Чтобы преобразовать реляционную модель в диаграмму ER, я бы предложил следующие шаги:
Хорошее понимание модели ER будет полезным. Изучите статью Чена
The Entity-Relationship Model - Toward a Unified View of Data
,Для каждого столбца определите, представляет ли он набор сущностей или набор значений. Ключами сущностей обычно являются первичные ключи в одной таблице и внешние ключи в других. Наборы значений обычно представляют метки и измерения и находятся в зависимых столбцах.
- Например, в
teacher
,T_ID
а такжеdept_name
являются ключами сущности, в то время какname
а такжеpassword
представляют наборы значений.
- Например, в
Определить отношения. Отношения представлены двумя или более ключами сущностей в одной и той же таблице, по крайней мере, один из которых является частью первичного ключа.
- Например, в
teacher
, пара(T_ID, dept_name)
представляет отношения между наборами сущностей, определенныхT_ID
а такжеdept_name
, Мы можем назвать эти наборы сущностейteacher
а такжеdepartment
, но не путайте их с таблицами с одинаковыми именами. Другой примерadvisor (T_ID, S_ID)
,
- Например, в
Определите атрибуты. Атрибуты представляют собой сопоставления наборов сущностей или отношений с наборами значений. Первичный ключ таблицы будет определять сущность или набор отношений (атомарный или составной PK), с которым связаны зависимые столбцы (наборы значений), образуя атрибуты.
- Например, в
teacher
,T_ID -> name
является атрибутом, иT_ID -> password
Другой.
- Например, в
Сделайте диаграмму. Представьте каждую сущность, заданную прямоугольником, а каждую взаимосвязь - ромбом. Соедините отношения со связанными наборами сущностей. Нарисуйте ключи и атрибуты в виде овалов, прикрепленных к определяющему объекту или набору отношений. Мы не рисуем ключи для отношений - они определяются ключами связанных наборов сущностей.
Это просто базовая отправная точка - процесс на самом деле более сложный, так как нам нужно искать слабые ключи, наборы слабых объектов, идентификацию отношений, наборы ассоциативных объектов, полное или частичное участие и кардинальность отношений.
Опять же, я настоятельно советую вам изучить статью Чена для всех деталей.
PS. Я считаю, что ваш первичный ключ для section
(и соответствующие внешние ключи в teaches
а также takes
) это неверно. Я подозреваю, что первичный ключ должен быть только sec_id
, но так как я не знаю точно, что на самом деле представляет ваша модель (помимо моей собственной интерпретации имен таблиц и столбцов), я не могу сказать наверняка.