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? Dasidie 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)
);

Antworten auf die Frage(6)

Ihre Antwort auf die Frage