Ich versuche ein Skript zu erstellen, um eine andere Tabelle in MySQL zu normalisieren. Im Folgenden finden Sie, was ich habe:MySQL Fehler 150
USE hw7;
SET foreign_key_checks = 0;
DROP TABLE IF EXISTS airport_codes;
DROP TABLE IF EXISTS airport_locations;
DROP TABLE IF EXISTS airport_codenames;
SET foreign_key_checks = 1;
CREATE TABLE airport_codes(
airport_code char(3) not null,
airline_code char(2) not null,
primary key (airport_code, airline_code)
);
INSERT INTO airport_codes SELECT DISTINCT airport_code, airline_code
FROM airport_airlines;
CREATE TABLE airport_locations(
airport_code char(3) not null,
city varchar(20) not null,
state char(2) not null,
primary key (airport_code),
constraint ap_code_fk
foreign key (airport_code)
references airport_codes(airport_code)
);
INSERT INTO airport_locations SELECT DISTINCT airport_code, city, state
FROM airport_airlines;
CREATE TABLE airport_codenames(
airline_code char(2) not null,
name varchar(20) not null,
primary key (airline_code),
constraint al_code_fk
foreign key (airline_code)
references airport_codes(airline_code)
);
INSERT INTO airport_codenames SELECT DISTINCT airline_code, name
FROM airport_airlines;
Dieser Code führt zu diesem Fehler:
Can't create table hw7.airport_codenames errno:150
Diese FK-Beziehungen scheinen rückwärts zu sein. Normalerweise wäre 'airport_codenames' die Haupttabelle und' airport_codes' würde die FK in 'airport_codenames' haben. Ebenso wäre 'airport_locations' die PK-Tabelle mit einem FK in' airport_codes'. Beide scheinen rückwärts ... –
Ich war asuming die folgenden funktionalen Abhängigkeiten: AIRPORT_CODE> Stadt, Staat Airline_code> Name – kmaz13
Aber wenn Sie erlauben, mehrere 'airline_code' pro' airport_code's in 'airport_locations' (von zusammengesetzten Schlüssel), die den Fremdschlüssel von 'airport_codenames' abbricht, da er auf mehrere Zeilen in' airport_locations' verweisen würde. Ich denke, das ist die Ursache Ihres Problems. –