此列列表没有匹配的唯一键或主键

时间:2015-02-26 09:16:13

标签: database oracle null

嘿家伙我得到这个错误:“此列列表没有匹配的唯一或主键”在表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; */

1 个答案:

答案 0 :(得分:0)

尝试使用此代码。它与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 )
  );