Hi alle zusammen
Ich habe im Moment folgendes problem:
muss ein effizientes insert statment für folgendes schreiben
es gibt primäre abteilungen, welche mehere unterabteilungen haben können und jeder dieser unter abteilungen kann mehere verscheidene mitarbeiter "typen" haben.
Ein Beispiel:
Abteilung: Web
Unterabteilungen: Design, Datenbanken
Design kann mitarbeiter des Typs: Artist order Programmier enthalten
Datenbanken kann mitarbeiter des Typs: Programmiere und Techniker enthalten
die Datebank soll allerdings ermöglichen dass man beispielsweise jederzeit weitere Personaltypen zu jeder Unterabteilung hinzufügen kann, genauso wie weitere unterabteilungen zu den Abteilungen. Die meisten meiner Relations sind also Many2Many .
die tabellen in meiner DB sind im Moment:
Abteilungen: AbtID (prim), AbtName
Unterabteilungen: UAbtID (prim), UAbtName
MitarbeiterTyp: TypID (prim), TypName
Mitarbeiter: MitID(prim), name etc..
link_typ_unterabteilung: TypID1, UAbtID1
link_unterabteilung_abteilung: UAbtID1, AbtID1
link_typ_abteilung: AbtID1, UAbtID1
link_mitarbeiter_unterabteilung: MitID1, UAbtID1
link_mitarbeiter_typ: MitID1, TypID1
Ich weis das die letzte tabelle in meinem beispiel hier nicht soo viel sinn macht und eigentlich ein foreign key in Mitarbeiter mehr sinn machen würde, aber geht einfach davon aus, dass ein Mitarbeiter von mehreren Typen sein darf.
Meine frage ist jetzt folgende:
Wie forumuliere ich ein effizientes INSERT statment wenn ich einen neuen mitarbeiter einer Abteilung und underabteilung zuweisen will:
mein gedanken gang wäre dieser:
neuen Mitarbeiter einfugen ---> dessen MitID dann "link_mitarbeiter_typ" und "link_mitarbeiter_unterabteilung" einfügen.
was für möglichkeiten würdet ihr sehen das zu tun, denn ich suche nauch einer möglichkeite die möglichst wenig queries benutzt, und die einzige auf die ich gekommen bin war:
INSERT INTO Mitarbeiter(name, etc...) VALUES(SeinName, etc...);
SELECT MitID FROM Mitarbeiter WHERE name=SeinName straße=SeineStraße;
SELECT TypID FROM MitarbeiterTyp WHERE name=derTyp;
SELECT UAbtID FROM Unterabteilungen WHERE name=DieUAbt;
INSERT INTO link_mitarbeiter_typ(MitID1, TypID1) VALUES (MitID, TypID);
INSERT INTO link_mitarbeiter_unterabteilung(MitID1, UAbtID1) VALUES (MitID, UAbtID);
und meiner meinung nach kann das unmöglich der beste weg sein den job zu erledigen.
Danke für die Hilfe
DH_vie
Ich habe im Moment folgendes problem:
muss ein effizientes insert statment für folgendes schreiben
es gibt primäre abteilungen, welche mehere unterabteilungen haben können und jeder dieser unter abteilungen kann mehere verscheidene mitarbeiter "typen" haben.
Ein Beispiel:
Abteilung: Web
Unterabteilungen: Design, Datenbanken
Design kann mitarbeiter des Typs: Artist order Programmier enthalten
Datenbanken kann mitarbeiter des Typs: Programmiere und Techniker enthalten
die Datebank soll allerdings ermöglichen dass man beispielsweise jederzeit weitere Personaltypen zu jeder Unterabteilung hinzufügen kann, genauso wie weitere unterabteilungen zu den Abteilungen. Die meisten meiner Relations sind also Many2Many .
die tabellen in meiner DB sind im Moment:
Abteilungen: AbtID (prim), AbtName
Unterabteilungen: UAbtID (prim), UAbtName
MitarbeiterTyp: TypID (prim), TypName
Mitarbeiter: MitID(prim), name etc..
link_typ_unterabteilung: TypID1, UAbtID1
link_unterabteilung_abteilung: UAbtID1, AbtID1
link_typ_abteilung: AbtID1, UAbtID1
link_mitarbeiter_unterabteilung: MitID1, UAbtID1
link_mitarbeiter_typ: MitID1, TypID1
Ich weis das die letzte tabelle in meinem beispiel hier nicht soo viel sinn macht und eigentlich ein foreign key in Mitarbeiter mehr sinn machen würde, aber geht einfach davon aus, dass ein Mitarbeiter von mehreren Typen sein darf.
Meine frage ist jetzt folgende:
Wie forumuliere ich ein effizientes INSERT statment wenn ich einen neuen mitarbeiter einer Abteilung und underabteilung zuweisen will:
mein gedanken gang wäre dieser:
neuen Mitarbeiter einfugen ---> dessen MitID dann "link_mitarbeiter_typ" und "link_mitarbeiter_unterabteilung" einfügen.
was für möglichkeiten würdet ihr sehen das zu tun, denn ich suche nauch einer möglichkeite die möglichst wenig queries benutzt, und die einzige auf die ich gekommen bin war:
INSERT INTO Mitarbeiter(name, etc...) VALUES(SeinName, etc...);
SELECT MitID FROM Mitarbeiter WHERE name=SeinName straße=SeineStraße;
SELECT TypID FROM MitarbeiterTyp WHERE name=derTyp;
SELECT UAbtID FROM Unterabteilungen WHERE name=DieUAbt;
INSERT INTO link_mitarbeiter_typ(MitID1, TypID1) VALUES (MitID, TypID);
INSERT INTO link_mitarbeiter_unterabteilung(MitID1, UAbtID1) VALUES (MitID, UAbtID);
und meiner meinung nach kann das unmöglich der beste weg sein den job zu erledigen.
Danke für die Hilfe
DH_vie