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