yxcvbnm1234
Goto Top

SQL-Code anhand es ER-Diagramms

Ich brauche dringendst Hilfe...
Ich benutze standard xampp MySQL mit MySQL_Querybrowser.

Sieht ER-Diagramm
400d3e99678a543c6dbc6b4b3500782d

Anhand des ER-Diagramms möchte ich SQL-Code erzeugen.
Besonderheiten:
n to 1 - Beziehung + Attribut dazwischen
1 zu 1- Beziehung

Ich habe Workbench benutzt, aber es macht mir genau das nicht , was ich auch nicht kann. Kann mir dabei jemand helfen?

Lösungsvorschlag:

CREATE database IF NOT EXISTS `dbtest` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
USE `dbtest`;

CREATE TABLE IF NOT EXISTS `dbtest`.`Metadaten` (
`MetaID` INT NOT NULL AUTO_INCREMENT ,
`Dateiname` VARCHAR(200) NOT NULL ,
`Copyright` VARCHAR(200),
`NutzBeschr` VARCHAR(200,
`Abstrakt` VARCHAR(100),
PRIMARY KEY (`MetaID`) )
ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS `dbtest`.`Auftrag` (
`ArchivID` INT NOT NULL AUTO_INCREMENT ,
`Titel` VARCHAR(200) NOT NULL ,
`Schlüsselwörter` VARCHAR(250),
`BegDatum` DATE NULL ,
`EndDatum` DATE,
`Metadaten_MetaID` INT NOT NULL ,
PRIMARY KEY (`ArchivID`, `Metadaten_MetaID`) ,
INDEX `fk_Auftrag_Metadaten1` (`Metadaten_MetaID` ASC) ,
CONSTRAINT `fk_Auftrag_Metadaten1`
FOREIGN KEY (`Metadaten_MetaID` )
REFERENCES `dbtest`.`Metadaten` (`MetaID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;


CREATE TABLE IF NOT EXISTS `dbtest`.`Mitarbeiter` (
`MNr` INT NOT NULL AUTO_INCREMENT ,
`Name` VARCHAR(60) NOT NULL ,
`Mitbeteiligt` VARCHAR(200),
`Auftrag_ArchivID` INT NOT NULL ,
PRIMARY KEY (`MNr`) ,
INDEX `fk_Mitarbeiter_Auftrag1` (`Auftrag_ArchivID` ASC) ,
CONSTRAINT `fk_Mitarbeiter_Auftrag1`
FOREIGN KEY (`Auftrag_ArchivID` )
REFERENCES `dbtest`.`Auftrag` (`ArchivID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;


CREATE TABLE IF NOT EXISTS `dbtest`.`Kunden` (
`KundeID` INT NOT NULL ,
`Name` VARCHAR(100) NOT NULL ,
`Vorname` VARCHAR(45),
PRIMARY KEY (`KundeID`) )
ENGINE = InnoDB;


CREATE TABLE IF NOT EXISTS `dbtest`.`Kunden_has_Mitarbeiter` (
`Kunden_KundeID` INT NOT NULL ,
`Mitarbeiter_MNr` INT NOT NULL ,
PRIMARY KEY (`Kunden_KundeID`, `Mitarbeiter_MNr`) ,
INDEX `fk_Kunden_has_Mitarbeiter_Kunden` (`Kunden_KundeID` ASC) ,
INDEX `fk_Kunden_has_Mitarbeiter_Mitarbeiter1` (`Mitarbeiter_MNr` ASC) ,
CONSTRAINT `fk_Kunden_has_Mitarbeiter_Kunden`
FOREIGN KEY (`Kunden_KundeID` )
REFERENCES `dbtest`.`Kunden` (`KundeID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Kunden_has_Mitarbeiter_Mitarbeiter1`
FOREIGN KEY (`Mitarbeiter_MNr` )
REFERENCES `dbtest`.`Mitarbeiter` (`MNr` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

Content-ID: 148842

Url: https://administrator.de/contentid/148842

Ausgedruckt am: 23.11.2024 um 03:11 Uhr

Logan000
Logan000 12.08.2010 um 13:22:45 Uhr
Goto Top
Moin Moin

Ich würde sagen das Problem liegt genau hier:
... aber es macht mir genau das nicht , was ich auch nicht kann.

Für die n:m bzw n:1 Beziehungen benötigst du eigene Tabellen oder wor woltest du die jeweiligen Beziehungen sonst speichern
z.B. für die Beziehung Kunden-Mitarbeiter eine Tabelle die die Felder KundeID und MNr enthält.
Für die Mitarbeiter-Auftrag Beziehung (enthält natürlich MNr und AchivID) kannst Du in einen weiteren Feld (z.B Tätigkeit) die Beziehung auch noch "bewerten".

Ich hoffe das hilft Dir weiter.

Gruß L.
yxcvbnm1234
yxcvbnm1234 14.08.2010 um 00:18:36 Uhr
Goto Top
Vielen Dank!!!
Ich versuche es mal..