SQL-Code anhand es ER-Diagramms
Ich brauche dringendst Hilfe...
Ich benutze standard xampp MySQL mit MySQL_Querybrowser.
Sieht ER-Diagramm
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;
Ich benutze standard xampp MySQL mit MySQL_Querybrowser.
Sieht ER-Diagramm
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;
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 148842
Url: https://administrator.de/contentid/148842
Ausgedruckt am: 23.11.2024 um 03:11 Uhr
2 Kommentare
Neuester Kommentar
Moin Moin
Ich würde sagen das Problem liegt genau hier:
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.
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.