Nun habe ich das ganze schön miteinander logisch verknüpft und dabei ist folgende Struktur dabei herausgekommen:
Code:
CREATE TABLE IF NOT EXISTS `unternehmen_zugang` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(255) NOT NULL,
`pass` varchar(255) NOT NULL,
`seit` date NOT NULL,
`status` int(1) NOT NULL,
`session` varchar(35) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=latin1 ;
CREATE TABLE IF NOT EXISTS `unternehmen_ansprechpartner` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`zugang_id` int(11) NOT NULL,
`titel` varchar(255) NOT NULL,
`vorname` varchar(255) NOT NULL,
`name` varchar(255) NOT NULL,
`telefon` varchar(20) NOT NULL,
`handy` varchar(50) NOT NULL,
`kontakt_per` varchar(7) NOT NULL,
PRIMARY KEY (`id`),
INDEX (`zugang_id`),
FOREIGN KEY (`zugang_id`) REFERENCES unternehmen_zugang(`id`) ON UPDATE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=latin1 ;
CREATE TABLE IF NOT EXISTS `unternehmen_profil` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ansprechpartner_id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`strasse` varchar(100) NOT NULL,
`hausnummer` varchar(4) NOT NULL,
`zusatz` varchar(15) NOT NULL,
`plz` int(5) NOT NULL,
`ort` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
INDEX (`ansprechpartner_id`),
FOREIGN KEY (`ansprechpartner_id`) REFERENCES unternehmen_ansprechpartner(`id`) ON UPDATE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=latin1 ;
CREATE TABLE IF NOT EXISTS `unternehmen_stelle` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`profil_id` int(11) NOT NULL,
`ansprechpartner_id` int(11) NOT NULL,
`funktion` varchar(255) NOT NULL,
`abteilung` varchar(255) NOT NULL,
`branche` int(11) NOT NULL,
`anzahl` int(5) NOT NULL,
`wochenstunden` int(3) NOT NULL,
`abschluss` varchar(25) NOT NULL,
`bezahlung` int(11) NOT NULL,
`ab_tag` int(2) NOT NULL,
`ab_monat` int(2) NOT NULL,
`ab_jahr` int(4) NOT NULL,
`bis_tag` int(2) NOT NULL,
`bis_monat` int(2) NOT NULL,
`bis_jahr` int(4) NOT NULL,
`beschreibung` varchar(3000) NOT NULL,
`anfang_tag` int(2) NOT NULL,
`anfang_monat` int(2) NOT NULL,
`anfang_jahr` int(4) NOT NULL,
`dauer` int(1) NOT NULL,
PRIMARY KEY (`id`),
INDEX (`profil_id`),
FOREIGN KEY (`profil_id`) REFERENCES unternehmen_profil(`id`) ON UPDATE CASCADE,
INDEX (`ansprechpartner_id`),
FOREIGN KEY (`ansprechpartner_id`) REFERENCES unternehmen_ansprechpartner(`id`) ON UPDATE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=latin1 ;
Sobald ich allerdings Daten in der DB mittels Formulars übermitteln möchte trägt das Skript lediglich in Tabelle unternehmen_ansprechpartner die Daten ein und quitiert den Rest mit folgender Fehlermeldung.
1452: Cannot add or update a child row: a foreign key constraint fails (`jobs`.`unternehmen_stelle`, CONSTRAINT `unternehmen_stelle_ibfk_1` FOREIGN KEY (`profil_id`) REFERENCES `unternehmen_profil` (`id`) ON UPDATE CASCADE)
Bitte helft Mir. Ich sehe den Datensatz vor lauter Tabellen nicht. So oder so ähnlich :)
liebe grüße Sebastian
__________________
Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware
wenn einem eine SQL Lösung einfällt, dem wäre ich überaus dankbar, denn gegenwärtig habe ich mittels der Funktion mysql_insert_id() gelöst und somit die Abhängigleiten künstlich über PHP erzeugt. Was mich allerdings nicht zufriedenstellt, denn grundlegend muss es doch möglich sein das SQL / DB das selber macht.
__________________
Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware
In welcher Reihenfolge werden die Einträge erstellt?
Zitat:
1452: Cannot add or update a child row: a foreign key constraint fails (`jobs`.`unternehmen_stelle`, CONSTRAINT `unternehmen_stelle_ibfk_1` FOREIGN KEY (`profil_id`) REFERENCES `unternehmen_profil` (`id`) ON UPDATE CASCADE)
Um in die Tabelle "unternehmen_stelle" zu schreiben, müssen schon die jeweiligen Einträge in "unternehmen_profil" und "unternehmen_ansprechpartner" bestehen.
zuerst kommem die ansprechpartner, danach sollten die profile der unternehmen kommen und dann die stellenanzeige jedoch hackte es nach den ansprechpartnern.
__________________
Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware