2010-08-10 1 views
1

J'ai différents types de ressources qui peuvent être affectées à un travail. Mes ressources, pour le moment, sont des techniciens et de l'équipement. Je voudrais être en mesure de stocker les anciennes affectations (alias, pas de colonne statique dans les tables de ressources référençant la table de travail).Comment stocker l'affectation de ressources à un ou plusieurs travaux dans MySQL

J'ai envisagé d'utiliser une table pour chaque ressource qui suit les affectations, mais j'aimerais savoir s'il existe une solution idéale.

Mes tableaux sont (à titre indicatif):

TABLE equipment (
    id, 
    type, 
    PRIMARY KEY (id) 
) 
TABLE technicians (
    id, 
    name, 
    level, 
    PRIMARY KEY (id) 
) 
TABLE jobs (
    jobno, 
    starts, 
    ends 
    PRIMARY KEY (jobno) 
) 
TABLE table equipment_assignments (
    id, 
    jobno, 
    PRIMARY KEY (id, jobno), 
    FORIEGN KEY (id) REFERENCES equipment(id), 
    FORIEGN KEY (jobno) REFERENCES jobs(jobno) 
) 
TABLE table technician_assignments (
    id, 
    jobno, 
    PRIMARY KEY (id, jobno), 
    FORIEGN KEY (id) REFERENCES technicians(id), 
    FORIEGN KEY (jobno) REFERENCES jobs(jobno) 
) 

Répondre

1

Une autre façon de le faire est d'introduire une table de ressources que l'équipement et référence technicien, ou qui contient une référence NULLABLE à l'équipement et le technicien. Vous avez alors des affectations de ressources plutôt que des affectations spécifiques à l'entité, je dirais que la première de ces approches facilite l'introduction de nouveaux types de ressources.

+0

Est-ce que vous aimez une table qui aurait une seule clé, que les techniciens/l'équipement feraient référence pour leur identifiant? –

+0

La façon dont je l'envisage est que la table de ressources a son propre identifiant, et chaque technicien/équipement référence la table de ressources - l'identifiant du technicien/équipement n'a pas besoin de correspondre à l'identifiant de ressource, cependant. Chaque ressource est référencée par un technicien ou un équipement un et un seul. Cette approche vous permet également de collecter des informations spécifiques aux ressources sur l'entité ressource plutôt que d'avoir des informations potentiellement dupliquées sur le technicien et l'équipement. –

+0

Alors, comment cela serait-il différent d'avoir une table appelée ressources qui a une colonne id (disons auto increment) alors avoir des tables technicien/équipement qui ont une clé primaire appelée ressource qui est aussi une clé étrangère qui référence le resource.id? Ou est-ce exactement ce que vous me décrivez? –

Questions connexes