此列列表没有匹配的唯一键或主键
no matching unique or primary key for this column-list
大家好,我收到了这个错误:"no matching unique or primary key for this column-list" 在 Termine 和 Verbund 表中。我真的不知道如何解决这个问题;(如果有人可以帮助我更改代码以获得工作代码,那就太棒了!:)
这是代码:
/* CREATE USER mydb IDENTIFIED BY mydb ;
ALTER SESSION SET CURRENT_SCHEMA = mydb ;*/
DROP TABLE VERBUND;
DROP TABLE TERMINE;
DROP TABLE KUNDE;
DROP TABLE ADRESSEN;
DROP TABLE PROTOKOLL;
DROP TABLE MITARBEITER;
DROP TABLE Abteilung;
DROP TABLE JobBeschreibung;
-- -----------------------------------------------------
-- Table `mydb`.`JobBeschreibung`
-- -----------------------------------------------------
CREATE TABLE JobBeschreibung (
idJobBeschreibung NUMBER(10) NOT NULL ,
Beschreibung VARCHAR2(45) NULL ,
PRIMARY KEY (idJobBeschreibung) )
;
-- -----------------------------------------------------
-- Table `mydb`.`Abteilung`
-- -----------------------------------------------------
CREATE TABLE Abteilung (
idAbteilung NUMBER(10) NOT NULL ,
Beschreibung VARCHAR2(45) NULL ,
PRIMARY KEY (idAbteilung) )
;
-- -----------------------------------------------------
-- Table `mydb`.`Mitarbeiter`
-- -----------------------------------------------------
CREATE TABLE Mitarbeiter (
idMitarbeiter NUMBER(10) NOT NULL ,
Vorname VARCHAR2(45) NULL ,
Nachname VARCHAR2(45) NULL ,
Telefon NUMBER(19) NULL ,
idAbteilung NUMBER(10) NOT NULL ,
idJobBeschreibung NUMBER(10) NOT NULL ,
PRIMARY KEY (idMitarbeiter, idAbteilung, idJobBeschreibung)
,
CONSTRAINT fk_Mitarbeiter_Abteilung
FOREIGN KEY (idAbteilung )
REFERENCES Abteilung (idAbteilung )
,
CONSTRAINT fk_Mitarbeiter_JobB
FOREIGN KEY (idJobBeschreibung )
REFERENCES JobBeschreibung (idJobBeschreibung )
)
;
-- -----------------------------------------------------
-- Table `mydb`.`Protokoll`
-- -----------------------------------------------------
CREATE TABLE Protokoll (
idProtokoll NUMBER(10) NOT NULL ,
Notizen VARCHAR2(45) NULL ,
Abrechnungsbetrag BINARY_DOUBLE NULL ,
idVerbund NUMBER(10) NOT NULL ,
PRIMARY KEY (idProtokoll, idVerbund) )
;
-- -----------------------------------------------------
-- Table `mydb`.`Adressen`
-- -----------------------------------------------------
CREATE TABLE Adressen (
idAdressen NUMBER(10) NOT NULL ,
Straße VARCHAR2(45) NULL ,
Nummer VARCHAR2(5) NULL ,
PLZ NUMBER(10) NULL ,
Ort VARCHAR2(45) NULL ,
Land VARCHAR2(45) NULL ,
PRIMARY KEY (idAdressen) )
;
-- -----------------------------------------------------
-- Table `mydb`.`Kunde`
-- -----------------------------------------------------
CREATE TABLE Kunde (
idKunde NUMBER(10) NOT NULL ,
Vorname VARCHAR2(45) NULL ,
Nachname VARCHAR2(45) NULL ,
Anrede VARCHAR2(45) NULL ,
Firma VARCHAR2(45) NULL ,
idAdressen NUMBER(10) NOT NULL ,
PRIMARY KEY (idKunde, idAdressen)
,
CONSTRAINT fk_Kunde_Adressen1
FOREIGN KEY (idAdressen )
REFERENCES Adressen (idAdressen )
)
;
-- -----------------------------------------------------
-- Table `mydb`.`Termine`
-- -----------------------------------------------------
CREATE TABLE Termine (
idTermine NUMBER(10) NOT NULL ,
Anfangszeit TIMESTAMP(0) NULL ,
Endzeit TIMESTAMP(0) NULL ,
Thema VARCHAR2(45) NULL ,
Beschreibung VARCHAR2(45) NULL ,
idVerbund NUMBER(10) NOT NULL ,
idKunde NUMBER(10) NOT NULL ,
idMitarbeiter NUMBER(10) NOT NULL ,
PRIMARY KEY (idTermine, idVerbund, idKunde, idMitarbeiter)
,
CONSTRAINT fk_Termine_Protokoll1
FOREIGN KEY (idVerbund )
REFERENCES Protokoll (idVerbund )
,
CONSTRAINT fk_Termine_Kunde1
FOREIGN KEY (idKunde )
REFERENCES Kunde (idKunde )
,
CONSTRAINT fk_Termine_Termine1
FOREIGN KEY (idTermine )
REFERENCES Termine (idVerbund )
,
CONSTRAINT fk_Termine_Mitarbeiter1
FOREIGN KEY (idMitarbeiter )
REFERENCES Mitarbeiter (idMitarbeiter )
)
;
-- -----------------------------------------------------
-- Table `mydb`.`Verbund`
-- -----------------------------------------------------
CREATE TABLE Verbund (
idVerbund NUMBER(10) NOT NULL ,
Document VARCHAR2(45) NULL ,
idProtokoll NUMBER(10) NOT NULL ,
PRIMARY KEY (idVerbund, idProtokoll)
,
CONSTRAINT fk_Verbund_Protokoll1
FOREIGN KEY (idProtokoll )
REFERENCES Protokoll (idProtokoll )
)
;
/* SET SQL_MODE=@OLD_SQL_MODE; */
/* SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; */
/* SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; */
尝试使用此代码。它是关于 SQL Server 2012 的。
/* CREATE USER mydb IDENTIFIED BY mydb ;
ALTER SESSION SET CURRENT_SCHEMA = mydb ;*/
DROP TABLE VERBUND;
DROP TABLE TERMINE;
DROP TABLE KUNDE;
DROP TABLE ADRESSEN;
DROP TABLE PROTOKOLL;
DROP TABLE MITARBEITER;
DROP TABLE Abteilung;
DROP TABLE JobBeschreibung;
-- -----------------------------------------------------
-- Table `mydb`.`JobBeschreibung`
-- -----------------------------------------------------
CREATE TABLE JobBeschreibung
(
idJobBeschreibung NUMERIC(10) NOT NULL,
Beschreibung VARCHAR(45) NULL,
PRIMARY KEY (idJobBeschreibung)
);
-- -----------------------------------------------------
-- Table `mydb`.`Abteilung`
-- -----------------------------------------------------
CREATE TABLE Abteilung
(
idAbteilung NUMERIC(10) NOT NULL,
Beschreibung VARCHAR(45) NULL,
PRIMARY KEY (idAbteilung)
);
-- -----------------------------------------------------
-- Table `mydb`.`Mitarbeiter`
-- -----------------------------------------------------
CREATE TABLE Mitarbeiter
(
idMitarbeiter NUMERIC(10) NOT NULL,
Vorname VARCHAR(45) NULL,
Nachname VARCHAR(45) NULL,
Telefon NUMERIC(19) NULL,
idAbteilung NUMERIC(10) NOT NULL,
idJobBeschreibung NUMERIC(10) NOT NULL,
PRIMARY KEY (idMitarbeiter, idAbteilung, idJobBeschreibung),
CONSTRAINT fk_Mitarbeiter_Abteilung FOREIGN KEY (idAbteilung ) REFERENCES Abteilung (idAbteilung ),
CONSTRAINT fk_Mitarbeiter_JobB FOREIGN KEY (idJobBeschreibung ) REFERENCES JobBeschreibung (idJobBeschreibung )
);
-- -----------------------------------------------------
-- Table `mydb`.`Protokoll`
-- -----------------------------------------------------
CREATE TABLE Protokoll
(
idProtokoll NUMERIC(10) NOT NULL,
Notizen VARCHAR(45) NULL,
Abrechnungsbetrag FLOAT(53) NULL,
idVerbund NUMERIC(10) NOT NULL,
PRIMARY KEY (idProtokoll, idVerbund)
);
-- -----------------------------------------------------
-- Table `mydb`.`Adressen`
-- -----------------------------------------------------
CREATE TABLE Adressen
(
idAdressen NUMERIC(10) NOT NULL,
Straaye VARCHAR(45) NULL,
Nummer VARCHAR(5) NULL,
PLZ NUMERIC(10) NULL,
Ort VARCHAR(45) NULL,
Land VARCHAR(45) NULL,
PRIMARY KEY (idAdressen)
);
-- -----------------------------------------------------
-- Table `mydb`.`Kunde`
-- -----------------------------------------------------
CREATE TABLE Kunde
(
idKunde NUMERIC(10) NOT NULL,
Vorname VARCHAR(45) NULL,
Nachname VARCHAR(45) NULL,
Anrede VARCHAR(45) NULL,
Firma VARCHAR(45) NULL,
idAdressen NUMERIC(10) NOT NULL,
PRIMARY KEY (idKunde, idAdressen),
CONSTRAINT fk_Kunde_Adressen1 FOREIGN KEY (idAdressen ) REFERENCES Adressen (idAdressen )
);
-- -----------------------------------------------------
-- Table `mydb`.`Termine`
-- -----------------------------------------------------
CREATE TABLE Termine
(
idTermine NUMERIC(10) NOT NULL,
Anfangszeit DATETIME NULL,
Endzeit DATETIME NULL,
Thema VARCHAR(45) NULL,
Beschreibung VARCHAR(45) NULL,
idProtokoll NUMERIC(10) NULL,
idVerbund NUMERIC(10) NOT NULL,
idAdressen NUMERIC(10) NOT NULL,
idKunde NUMERIC(10) NOT NULL,
idMitarbeiter NUMERIC(10) NOT NULL,
idAbteilung NUMERIC(10) NOT NULL,
idJobBeschreibung NUMERIC(10) NOT NULL,
PRIMARY KEY (idTermine, idVerbund, idKunde, idMitarbeiter),
CONSTRAINT fk_Termine_Protokoll1 FOREIGN KEY (idProtokoll, idVerbund ) REFERENCES Protokoll (idProtokoll, idVerbund ),
CONSTRAINT fk_Termine_Kunde1 FOREIGN KEY (idKunde, idAdressen ) REFERENCES Kunde (idKunde, idAdressen ),
--CONSTRAINT fk_Termine_Termine1 FOREIGN KEY (idTermine ) REFERENCES Termine (idVerbund ),--THIS IS WRONG you cannot refer the same column as references in the same table
CONSTRAINT fk_Termine_Mitarbeiter1 FOREIGN KEY (idMitarbeiter, idAbteilung, idJobBeschreibung ) REFERENCES Mitarbeiter (idMitarbeiter, idAbteilung, idJobBeschreibung )
);
-- -----------------------------------------------------
-- Table `mydb`.`Verbund`
-- -----------------------------------------------------
CREATE TABLE Verbund
(
idVerbund NUMERIC(10) NOT NULL,
Document VARCHAR(45) NULL,
idProtokoll NUMERIC(10) NOT NULL,
PRIMARY KEY (idVerbund, idProtokoll),
CONSTRAINT fk_Verbund_Protokoll1 FOREIGN KEY (idProtokoll, idVerbund ) REFERENCES Protokoll (idProtokoll, idVerbund )
);
大家好,我收到了这个错误:"no matching unique or primary key for this column-list" 在 Termine 和 Verbund 表中。我真的不知道如何解决这个问题;(如果有人可以帮助我更改代码以获得工作代码,那就太棒了!:)
这是代码:
/* CREATE USER mydb IDENTIFIED BY mydb ;
ALTER SESSION SET CURRENT_SCHEMA = mydb ;*/
DROP TABLE VERBUND;
DROP TABLE TERMINE;
DROP TABLE KUNDE;
DROP TABLE ADRESSEN;
DROP TABLE PROTOKOLL;
DROP TABLE MITARBEITER;
DROP TABLE Abteilung;
DROP TABLE JobBeschreibung;
-- -----------------------------------------------------
-- Table `mydb`.`JobBeschreibung`
-- -----------------------------------------------------
CREATE TABLE JobBeschreibung (
idJobBeschreibung NUMBER(10) NOT NULL ,
Beschreibung VARCHAR2(45) NULL ,
PRIMARY KEY (idJobBeschreibung) )
;
-- -----------------------------------------------------
-- Table `mydb`.`Abteilung`
-- -----------------------------------------------------
CREATE TABLE Abteilung (
idAbteilung NUMBER(10) NOT NULL ,
Beschreibung VARCHAR2(45) NULL ,
PRIMARY KEY (idAbteilung) )
;
-- -----------------------------------------------------
-- Table `mydb`.`Mitarbeiter`
-- -----------------------------------------------------
CREATE TABLE Mitarbeiter (
idMitarbeiter NUMBER(10) NOT NULL ,
Vorname VARCHAR2(45) NULL ,
Nachname VARCHAR2(45) NULL ,
Telefon NUMBER(19) NULL ,
idAbteilung NUMBER(10) NOT NULL ,
idJobBeschreibung NUMBER(10) NOT NULL ,
PRIMARY KEY (idMitarbeiter, idAbteilung, idJobBeschreibung)
,
CONSTRAINT fk_Mitarbeiter_Abteilung
FOREIGN KEY (idAbteilung )
REFERENCES Abteilung (idAbteilung )
,
CONSTRAINT fk_Mitarbeiter_JobB
FOREIGN KEY (idJobBeschreibung )
REFERENCES JobBeschreibung (idJobBeschreibung )
)
;
-- -----------------------------------------------------
-- Table `mydb`.`Protokoll`
-- -----------------------------------------------------
CREATE TABLE Protokoll (
idProtokoll NUMBER(10) NOT NULL ,
Notizen VARCHAR2(45) NULL ,
Abrechnungsbetrag BINARY_DOUBLE NULL ,
idVerbund NUMBER(10) NOT NULL ,
PRIMARY KEY (idProtokoll, idVerbund) )
;
-- -----------------------------------------------------
-- Table `mydb`.`Adressen`
-- -----------------------------------------------------
CREATE TABLE Adressen (
idAdressen NUMBER(10) NOT NULL ,
Straße VARCHAR2(45) NULL ,
Nummer VARCHAR2(5) NULL ,
PLZ NUMBER(10) NULL ,
Ort VARCHAR2(45) NULL ,
Land VARCHAR2(45) NULL ,
PRIMARY KEY (idAdressen) )
;
-- -----------------------------------------------------
-- Table `mydb`.`Kunde`
-- -----------------------------------------------------
CREATE TABLE Kunde (
idKunde NUMBER(10) NOT NULL ,
Vorname VARCHAR2(45) NULL ,
Nachname VARCHAR2(45) NULL ,
Anrede VARCHAR2(45) NULL ,
Firma VARCHAR2(45) NULL ,
idAdressen NUMBER(10) NOT NULL ,
PRIMARY KEY (idKunde, idAdressen)
,
CONSTRAINT fk_Kunde_Adressen1
FOREIGN KEY (idAdressen )
REFERENCES Adressen (idAdressen )
)
;
-- -----------------------------------------------------
-- Table `mydb`.`Termine`
-- -----------------------------------------------------
CREATE TABLE Termine (
idTermine NUMBER(10) NOT NULL ,
Anfangszeit TIMESTAMP(0) NULL ,
Endzeit TIMESTAMP(0) NULL ,
Thema VARCHAR2(45) NULL ,
Beschreibung VARCHAR2(45) NULL ,
idVerbund NUMBER(10) NOT NULL ,
idKunde NUMBER(10) NOT NULL ,
idMitarbeiter NUMBER(10) NOT NULL ,
PRIMARY KEY (idTermine, idVerbund, idKunde, idMitarbeiter)
,
CONSTRAINT fk_Termine_Protokoll1
FOREIGN KEY (idVerbund )
REFERENCES Protokoll (idVerbund )
,
CONSTRAINT fk_Termine_Kunde1
FOREIGN KEY (idKunde )
REFERENCES Kunde (idKunde )
,
CONSTRAINT fk_Termine_Termine1
FOREIGN KEY (idTermine )
REFERENCES Termine (idVerbund )
,
CONSTRAINT fk_Termine_Mitarbeiter1
FOREIGN KEY (idMitarbeiter )
REFERENCES Mitarbeiter (idMitarbeiter )
)
;
-- -----------------------------------------------------
-- Table `mydb`.`Verbund`
-- -----------------------------------------------------
CREATE TABLE Verbund (
idVerbund NUMBER(10) NOT NULL ,
Document VARCHAR2(45) NULL ,
idProtokoll NUMBER(10) NOT NULL ,
PRIMARY KEY (idVerbund, idProtokoll)
,
CONSTRAINT fk_Verbund_Protokoll1
FOREIGN KEY (idProtokoll )
REFERENCES Protokoll (idProtokoll )
)
;
/* SET SQL_MODE=@OLD_SQL_MODE; */
/* SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; */
/* SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; */
尝试使用此代码。它是关于 SQL Server 2012 的。
/* CREATE USER mydb IDENTIFIED BY mydb ;
ALTER SESSION SET CURRENT_SCHEMA = mydb ;*/
DROP TABLE VERBUND;
DROP TABLE TERMINE;
DROP TABLE KUNDE;
DROP TABLE ADRESSEN;
DROP TABLE PROTOKOLL;
DROP TABLE MITARBEITER;
DROP TABLE Abteilung;
DROP TABLE JobBeschreibung;
-- -----------------------------------------------------
-- Table `mydb`.`JobBeschreibung`
-- -----------------------------------------------------
CREATE TABLE JobBeschreibung
(
idJobBeschreibung NUMERIC(10) NOT NULL,
Beschreibung VARCHAR(45) NULL,
PRIMARY KEY (idJobBeschreibung)
);
-- -----------------------------------------------------
-- Table `mydb`.`Abteilung`
-- -----------------------------------------------------
CREATE TABLE Abteilung
(
idAbteilung NUMERIC(10) NOT NULL,
Beschreibung VARCHAR(45) NULL,
PRIMARY KEY (idAbteilung)
);
-- -----------------------------------------------------
-- Table `mydb`.`Mitarbeiter`
-- -----------------------------------------------------
CREATE TABLE Mitarbeiter
(
idMitarbeiter NUMERIC(10) NOT NULL,
Vorname VARCHAR(45) NULL,
Nachname VARCHAR(45) NULL,
Telefon NUMERIC(19) NULL,
idAbteilung NUMERIC(10) NOT NULL,
idJobBeschreibung NUMERIC(10) NOT NULL,
PRIMARY KEY (idMitarbeiter, idAbteilung, idJobBeschreibung),
CONSTRAINT fk_Mitarbeiter_Abteilung FOREIGN KEY (idAbteilung ) REFERENCES Abteilung (idAbteilung ),
CONSTRAINT fk_Mitarbeiter_JobB FOREIGN KEY (idJobBeschreibung ) REFERENCES JobBeschreibung (idJobBeschreibung )
);
-- -----------------------------------------------------
-- Table `mydb`.`Protokoll`
-- -----------------------------------------------------
CREATE TABLE Protokoll
(
idProtokoll NUMERIC(10) NOT NULL,
Notizen VARCHAR(45) NULL,
Abrechnungsbetrag FLOAT(53) NULL,
idVerbund NUMERIC(10) NOT NULL,
PRIMARY KEY (idProtokoll, idVerbund)
);
-- -----------------------------------------------------
-- Table `mydb`.`Adressen`
-- -----------------------------------------------------
CREATE TABLE Adressen
(
idAdressen NUMERIC(10) NOT NULL,
Straaye VARCHAR(45) NULL,
Nummer VARCHAR(5) NULL,
PLZ NUMERIC(10) NULL,
Ort VARCHAR(45) NULL,
Land VARCHAR(45) NULL,
PRIMARY KEY (idAdressen)
);
-- -----------------------------------------------------
-- Table `mydb`.`Kunde`
-- -----------------------------------------------------
CREATE TABLE Kunde
(
idKunde NUMERIC(10) NOT NULL,
Vorname VARCHAR(45) NULL,
Nachname VARCHAR(45) NULL,
Anrede VARCHAR(45) NULL,
Firma VARCHAR(45) NULL,
idAdressen NUMERIC(10) NOT NULL,
PRIMARY KEY (idKunde, idAdressen),
CONSTRAINT fk_Kunde_Adressen1 FOREIGN KEY (idAdressen ) REFERENCES Adressen (idAdressen )
);
-- -----------------------------------------------------
-- Table `mydb`.`Termine`
-- -----------------------------------------------------
CREATE TABLE Termine
(
idTermine NUMERIC(10) NOT NULL,
Anfangszeit DATETIME NULL,
Endzeit DATETIME NULL,
Thema VARCHAR(45) NULL,
Beschreibung VARCHAR(45) NULL,
idProtokoll NUMERIC(10) NULL,
idVerbund NUMERIC(10) NOT NULL,
idAdressen NUMERIC(10) NOT NULL,
idKunde NUMERIC(10) NOT NULL,
idMitarbeiter NUMERIC(10) NOT NULL,
idAbteilung NUMERIC(10) NOT NULL,
idJobBeschreibung NUMERIC(10) NOT NULL,
PRIMARY KEY (idTermine, idVerbund, idKunde, idMitarbeiter),
CONSTRAINT fk_Termine_Protokoll1 FOREIGN KEY (idProtokoll, idVerbund ) REFERENCES Protokoll (idProtokoll, idVerbund ),
CONSTRAINT fk_Termine_Kunde1 FOREIGN KEY (idKunde, idAdressen ) REFERENCES Kunde (idKunde, idAdressen ),
--CONSTRAINT fk_Termine_Termine1 FOREIGN KEY (idTermine ) REFERENCES Termine (idVerbund ),--THIS IS WRONG you cannot refer the same column as references in the same table
CONSTRAINT fk_Termine_Mitarbeiter1 FOREIGN KEY (idMitarbeiter, idAbteilung, idJobBeschreibung ) REFERENCES Mitarbeiter (idMitarbeiter, idAbteilung, idJobBeschreibung )
);
-- -----------------------------------------------------
-- Table `mydb`.`Verbund`
-- -----------------------------------------------------
CREATE TABLE Verbund
(
idVerbund NUMERIC(10) NOT NULL,
Document VARCHAR(45) NULL,
idProtokoll NUMERIC(10) NOT NULL,
PRIMARY KEY (idVerbund, idProtokoll),
CONSTRAINT fk_Verbund_Protokoll1 FOREIGN KEY (idProtokoll, idVerbund ) REFERENCES Protokoll (idProtokoll, idVerbund )
);