Foreign key problem i MySQL Max 4
Jeg har følgende SQL-skema, men får dog en error 1005 + errno 150 ved oprettelse af tabellen Maskine og jeg kan ikke se, hvad der er galt100 stærke til den hurtigste !
CREATE TABLE KontaktPerson (
KPID SMALLINT DEFAULT 0 AUTO_INCREMENT NOT NULL,
ForNavn VARCHAR ( 50 ) NOT NULL,
EfterNavn VARCHAR ( 50 ) NOT NULL,
Adresse VARCHAR ( 80 ) NOT NULL,
PostNr INTEGER NOT NULL,
City VARCHAR ( 50 ) NOT NULL,
TelefonNr INTEGER NOT NULL,
MobilNr INTEGER,
Email VARCHAR ( 60 ) not null,
FaxNr INTEGER,
PRIMARY KEY (KPID),
INDEX IDX_KontaktPerson_KPID (KPID),
INDEX IDX_KontaktPerson_ForEfter (ForNavn, EfterNavn),
INDEX IDX_KontaktPerson_EfterFor (EfterNavn, ForNavn)
) TYPE = InnoDB;
CREATE TABLE FirmaData (
FID SMALLINT DEFAULT 0 AUTO_INCREMENT NOT NULL,
KPID SMALLINT NOT NULL,
FirmaNavn VARCHAR ( 50 ) NOT NULL,
Adresse VARCHAR ( 80 ) NOT NULL,
PostNr INTEGER NOT NULL,
City VARCHAR ( 50 ) NOT NULL,
TelefonNr INTEGER NOT NULL,
FaxNr INTEGER,
PostBox INTEGER,
Email VARCHAR ( 60 ) NOT NULL,
WebAdresse VARCHAR ( 100 ),
SENr INTEGER,
KvalitetsCertificering VARCHAR ( 100 ),
BrugerNavn VARCHAR ( 50 ) NOT NULL,
Password VARCHAR ( 50 ) NOT NULL,
PRIMARY KEY (FID),
FOREIGN KEY (KPID) REFERENCES KontaktPerson (KPID),
INDEX IDX_FirmaData_FID (FID),
INDEX IDX_FirmaData_KPID (KPID),
INDEX IDX_FirmaData_FID_KPID (FID, KPID),
INDEX IDX_FirmaData_FirmaNavn (FirmaNavn(10)),
INDEX IDX_FirmaData_Adresse (Adresse(10)),
INDEX IDX_FirmaData_TelefonNr (TelefonNr)
) TYPE = InnoDB;
CREATE TABLE HovedKategori (
HKID SMALLINT DEFAULT 0 AUTO_INCREMENT NOT NULL,
Navn VARCHAR ( 50 ) NOT NULL,
PRIMARY KEY (HKID),
INDEX IDX_HovedKategori_HKID (HKID),
INDEX IDX_HovedKategori_Navn (Navn)
) TYPE = InnoDB;
CREATE TABLE UnderKategori (
UKID SMALLINT DEFAULT 0 AUTO_INCREMENT NOT NULL,
HKID SMALLINT NOT NULL ,
Navn VARCHAR ( 50 ) NOT NULL,
PRIMARY KEY (UKID),
FOREIGN KEY (HKID) REFERENCES HovedKategori (HKID),
INDEX IDX_UnderKategori_HKID_UKID (HKID, UKID),
INDEX IDX_UnderKategori_Navn (Navn)
) TYPE = InnoDB;
CREATE TABLE HovedGruppe (
HGID SMALLINT DEFAULT 0 AUTO_INCREMENT NOT NULL,
Navn VARCHAR ( 50 ) NOT NULL,
PRIMARY KEY (HGID),
INDEX IDX_HovedGruppe_HGID (HGID),
INDEX IDX_HovedGruppe_Navn (Navn)
) TYPE = InnoDB;
CREATE TABLE UnderGruppe (
UGID SMALLINT DEFAULT 0 AUTO_INCREMENT NOT NULL,
HGID SMALLINT NOT NULL,
Navn VARCHAR ( 50 ) NOT NULL,
PRIMARY KEY (UGID),
FOREIGN KEY (HGID) REFERENCES HovedGruppe (HGID),
INDEX IDX_UnderGruppe_HGID_UGID (HGID, UGID),
INDEX IDX_UnderGruppe_Navn (Navn)
) TYPE = InnoDB;
CREATE TABLE MaskinSpecifikation (
MSID SMALLINT DEFAULT 0 AUTO_INCREMENT NOT NULL,
UGID SMALLINT NOT NULL,
Navn VARCHAR ( 100 ) NOT NULL,
MaaleEnhed VARCHAR ( 16 ) NOT NULL,
IntervalMin INTEGER,
IntervalMax INTEGER,
PRIMARY KEY (MSID),
FOREIGN KEY (UGID) REFERENCES UnderGruppe (UGID),
INDEX IDX_MaskinSecifikation_Navn (Navn),
INDEX IDX_MaskinSecifikation_Navn_UGID (Navn, UGID),
INDEX IDX_MaskinSecifikation_Min_Max (IntervalMin, IntervalMax),
INDEX IDX_MaskinSecifikation_Max_Min (IntervalMax, IntervalMin)
) TYPE = InnoDB;
CREATE TABLE MS_MA_Link (
MSID SMALLINT NOT NULL,
MAID SMALLINT NOT NULL,
PRIMARY KEY (MSID, MAID),
FOREIGN KEY (MSID) REFERENCES MaskinSpecifikation (MSID),
FOREIGN KEY (MAID) REFERENCES Maskine (MAID),
INDEX IDX_MS_MA_Link_MSID_MAID (MSID, MAID),
INDEX IDX_MS_MA_Link_MAID_MSID (MAID, MSID)
) TYPE = InnoDB;
CREATE TABLE SpecifikationsData (
SDID SMALLINT DEFAULT 0 AUTO_INCREMENT NOT NULL,
MSID SMALLINT NOT NULL,
MAID SMALLINT NOT NULL,
SpecifikationsVaerdi VARCHAR ( 200 ) NOT NULL,
PRIMARY KEY (SDID),
FOREIGN KEY (MSID) REFERENCES MaskinSpecifikation (MSID),
FOREIGN KEY (MAID) REFERENCES Maskine (MAID),
INDEX IDX_SecifikationsData_SDID (SDID),
INDEX IDX_SecifikationsData_MSID_MAID (MSID, MAID),
INDEX IDX_SecifikationsData_MAID_MSID (MAID, MSID)
) TYPE = InnoDB;
CREATE TABLE HK_FD_Link (
FID SMALLINT NOT NULL,
HKID SMALLINT NOT NULL,
PRIMARY KEY (FID, HKID),
FOREIGN KEY (FID) REFERENCES FirmaData (FID),
FOREIGN KEY (HKID) REFERENCES HovedKategori (HKID),
INDEX IDX_HK_FD_Link_FID_HKID (FID, HKID),
INDEX IDX_HK_FD_Link_HKID_FID (HKID, FID)
) TYPE = InnoDB;
CREATE TABLE UK_FD_Link (
FID SMALLINT NOT NULL,
UKID SMALLINT NOT NULL,
PRIMARY KEY (FID, UKID),
FOREIGN KEY (FID) REFERENCES FirmaData (FID),
FOREIGN KEY (UKID) REFERENCES UnderKategori (UKID),
INDEX IDX_UK_FD_Link_FID_UKID (FID, UKID),
INDEX IDX_UK_FD_Link_UKID_FID (UKID, FID)
) TYPE = InnoDB;
CREATE TABLE SoegeOrd (
SOID SMALLINT DEFAULT 0 AUTO_INCREMENT NOT NULL,
FID SMALLINT NOT NULL,
SoegeNavn VARCHAR ( 100 ),
PRIMARY KEY (SOID),
FOREIGN KEY (FID) REFERENCES FirmaData (FID),
INDEX IDX_SoegeOrd_FID_SOID (FID, SOID),
INDEX IDX_SoegeOrd_SOID_FID (SOID, FID),
INDEX IDX_SoegeOrd_SoegeNavn (SoegeNavn)
) TYPE = InnoDB;
CREATE TABLE Maskine (
MAID SMALLINT DEFAULT 0 AUTO_INCREMENT NOT NULL,
FID SMALLINT NOT NULL,
KPID SMALLINT NOT NULL,
UGID SMALLINT NOT NULL,
PRIMARY KEY (MAID),
FOREIGN KEY (FID) REFERENCES FirmaData (FID),
FOREIGN KEY (KPID) REFERENCES KontaktPerson (KPID),
FOREIGN KEY (UGID) REFERENCES UnderGruppe (UGID),
INDEX IDX_Maskine_FID_KPID_UGID (FID, KPID, UGID),
INDEX IDX_Maskine_UGID_FID_KPID (UGID, FID, KPID)
) TYPE = InnoDB;