Ваша диаграмма выливается в следующих таблицах:
Employee (Ssn PK, Fname, Minit, Lname, Birth_date, Address, Job_type)
Secretary (Ssn PK/FK, Job_type FK, Typing_speed)
Technician (Ssn PK/FK, Job_type FK, Tgrade)
Engineer (Ssn PK/FK, Job_type FK, Eng_type)
Job_type
имеет домен (Secretary, Technician, Engineer)
, тип перечисления будет подходящим в MySQL. Ограничения FK для таблиц подтипов являются составными: Secretary (Ssn, Job_type) REFERENCES Employee (Ssn, Job_type)
и аналогично для двух других подтипов. Вам нужно будет создать подходящие индексы.
MySQL не поддерживает контрольные ограничения, что было бы неплохо обеспечить применение Job_type
каждого подтипа. Вы можете создать триггер, чтобы сделать то же самое. При этом составные ограничения FK препятствуют тому, чтобы работник имел более одного подтипа в любой момент: каждая запись в таблице Employee
может иметь только один Job_type
, и только таблица подтипов с подходящим Job_type
может иметь соответствующую запись.
Если вы хотите, чтобы Employee
участвовал полностью в отношении подтипа (т. Е. Каждый сотрудник должен иметь подтип), вы также можете создать триггер.
Что значит «Workbench»? SQL Workbench? Идентификатор не является частью вашей диаграммы. И здесь не существует никаких отношений «1: n», если у сотрудника нет нескольких заданий –
MySQL Workbench для создания таблиц и отношений. Инженер - специализация сотрудника, можете ли вы дать мне ответ, какие отношения мне нужно создать? –
В вашей диаграмме показаны отношения. Почему 'SSN'' fk'? Это должно быть первичным ключом, похоже ... Это действительно зависит от того, насколько вы денормализированы. Вам определенно нужна таблица «Employee», тогда у этого может быть внешний ключ в таблице «JobType». Не уверен, что делать с «подтипами» сотрудника. –