Tabelas cujo único objetivo é especificar um subconjunto de outra tabela
O banco de dados que estou projetando tem umemployees
mesa; pode haver vários tipos de funcionários, um dos quais é médico. O banco de dados também precisa descrever uma relação muitos-para-muitos entre funcionários médicos e quais competências eles têm.
Tudo bem em criar uma tabelamedical_employees
com apenas umid
coluna, cujo único objetivo é especificar quais funcionários são médicos? oid
A coluna possui uma restrição de chave estrangeira que referencia oemployees
mesa. O código abaixo deve esclarecer minha pergunta:
/* 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)
);