Tabellen, deren einziger Zweck darin besteht, eine Teilmenge einer anderen Tabelle anzugeben
Die Datenbank, die ich entwerfe, hat einemployees
Tabelle; Es kann mehrere Arten von Mitarbeitern geben, von denen eine medizinische Mitarbeiter sind. Die Datenbank muss auch eine Beziehung zwischen medizinischen Mitarbeitern und ihren Kompetenzen beschreiben.
Ist es in Ordnung, eine Tabelle zu erstellenmedical_employees
mit nur einemid
-Spalte, deren einziger Zweck darin besteht, anzugeben, welche Mitarbeiter Ärzte sind? Dasid
ie Spalte @ enthält eine Fremdschlüsseleinschränkung, die auf das @ verweisemployees
Tabelle. Der folgende Code sollte meine Frage klarer machen:
/* 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)
);