Tablas cuyo único propósito es especificar un subconjunto de otra tabla
La base de datos que estoy diseñando tiene unemployees
mesa; Puede haber múltiples tipos de empleados, uno de los cuales son empleados médicos. La base de datos también debe describir una relación de muchos a muchos entre los empleados médicos y las competencias que tienen.
¿Está bien crear una tabla?medical_employees
con solo unid
columna, cuyo único propósito es especificar qué empleados son médicos? losid
la columna tiene una restricción de clave externa que hace referencia aemployees
mesa. El siguiente código debería aclarar mi pregunta:
/* Defines a generic employee */
CREATE TABLE employees (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL
);
/* Specifies which employees are medics */
CREATE TABLE medical_employees (
id INT NOT NULL,
FOREIGN KEY (id) references employees(id);
);
/* Specifies what competences a medic can have */
CREATE TABLE medical_competences (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL
);
/* A many-to-many relation between medical employees and
their competences. */
CREATE TABLE medical_employees_competences (
id INT PRIMARY KEY AUTO_INCREMENT,
medic_id INT NOT NULL,
competence_id INT NOT NULL,
FOREIGN KEY (medic_id) REFERENCES medical_employees(id),
FOREIGN KEY (competence_id) REFERENCES medical_competences(id)
);