2013-12-10 2 views
0

오케이 이것은 업데이트입니다. MySQL Workbench를 사용하고 있습니다. 내가 엔지니어를 포워드하는 동안 내가 들어오는 것입니다. 중도에서 포워드 엔지니어링 후 결과를 볼 수 있습니다.엔지니어에게 전달할 수없는 이유는 무엇입니까?

SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0; 
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; 
SET @[email protected]@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; 

USE `mh23202` ; 

-- ----------------------------------------------------- 
-- Table `mh23202`.`Patient` 
-- ----------------------------------------------------- 
DROP TABLE IF EXISTS `mh23202`.`Patient` ; 

CREATE TABLE IF NOT EXISTS `mh23202`.`Patient` (
    `Patient Number` INT NOT NULL, 
    `First Name` TEXT NULL, 
    `Last Name` TEXT NULL, 
    `Date of Birth` DATE NULL, 
    `Phone Number` INT NULL, 
    `Email` TEXT NULL, 
    `Gender` TEXT NULL, 
    `Race` TEXT NULL, 
    `Address` TEXT NULL, 
    `Reason for Visit` TEXT NULL, 
    `Primary Doctor` TEXT NULL, 
    PRIMARY KEY (`Patient Number`), 
    CONSTRAINT `Visit Number` 
    FOREIGN KEY (`Patient Number`) 
    REFERENCES `mh23202`.`Visits` (`Visit Number`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `Physician Number` 
    FOREIGN KEY (`Patient Number`) 
    REFERENCES `mh23202`.`Physician` (`Physician Number`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mh23202`.`Visits` 
-- ----------------------------------------------------- 
DROP TABLE IF EXISTS `mh23202`.`Visits` ; 

CREATE TABLE IF NOT EXISTS `mh23202`.`Visits` (
    `Visit Number` INT NOT NULL, 
    `Date of Visit` DATE NULL, 
    `Time of Visit` TIME NULL, 
    `Reason for Visit` TEXT NULL, 
    PRIMARY KEY (`Visit Number`), 
    CONSTRAINT `Patient Number` 
    FOREIGN KEY (`Visit Number`) 
    REFERENCES `mh23202`.`Patient` (`Patient Number`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `Physician Number` 
    FOREIGN KEY (`Visit Number`) 
    REFERENCES `mh23202`.`Physician` (`Physician Number`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mh23202`.`Physician` 
-- ----------------------------------------------------- 
DROP TABLE IF EXISTS `mh23202`.`Physician` ; 

CREATE TABLE IF NOT EXISTS `mh23202`.`Physician` (
    `Physician Number` INT NOT NULL, 
    `Specialty` TEXT NULL, 
    `First name` TEXT NULL, 
    `Last Name` TEXT NULL, 
    `Date of Birth` DATE NULL, 
    `Phone Number` INT NULL, 
    `Email` TEXT NULL, 
    `Gender` TEXT NULL, 
    `Race` TEXT NULL, 
    `Address` TEXT NULL, 
    PRIMARY KEY (`Physician Number`), 
    CONSTRAINT `Visit Number` 
    FOREIGN KEY (`Physician Number`) 
    REFERENCES `mh23202`.`Visits` (`Visit Number`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mh23202`.`Medication` 
-- ----------------------------------------------------- 
DROP TABLE IF EXISTS `mh23202`.`Medication` ; 

CREATE TABLE IF NOT EXISTS `mh23202`.`Medication` (
    `Prescription Number` INT NOT NULL, 
    `Prescription Name` TEXT NULL, 
    `Units per Day` TEXT NULL, 
    `Start Date` DATE NULL, 
    `Finish Date` DATE NULL, 
    PRIMARY KEY (`Prescription Number`), 
    CONSTRAINT `Patient Number` 
    FOREIGN KEY (`Prescription Number`) 
    REFERENCES `mh23202`.`Patient` (`Patient Number`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `Physician Number` 
    FOREIGN KEY (`Prescription Number`) 
    REFERENCES `mh23202`.`Physician` (`Physician Number`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mh23202`.`MedicalRecord` 
-- ----------------------------------------------------- 
DROP TABLE IF EXISTS `mh23202`.`MedicalRecord` ; 

CREATE TABLE IF NOT EXISTS `mh23202`.`MedicalRecord` (
    `Physician Number` INT NULL, 
    `Date of Visit` DATE NULL, 
    `Time of Visit` TIME NULL, 
    `Reason for Visit` TEXT NULL, 
    `Findings` TEXT NULL, 
    `Notes` TEXT NULL, 
    `Treatment` TEXT NULL, 
    `Prescriptions` TEXT NULL, 
    `Procedures` TEXT NULL, 
    INDEX `Patient Number_idx` (`Physician Number` ASC), 
    CONSTRAINT `Patient Number` 
    FOREIGN KEY (`Physician Number`) 
    REFERENCES `mh23202`.`Patient` (`Patient Number`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mh23202`.`Nurse` 
-- ----------------------------------------------------- 
DROP TABLE IF EXISTS `mh23202`.`Nurse` ; 

CREATE TABLE IF NOT EXISTS `mh23202`.`Nurse` (
    `Nurse Number` INT NOT NULL, 
    `First Name` TEXT NULL, 
    `Last Name` TEXT NULL, 
    `Date of Birth` DATE NULL, 
    `Phone Number` INT NULL, 
    `Email` TEXT NULL, 
    `Gender` TEXT NULL, 
    `Race` TEXT NULL, 
    `Address` TEXT NULL, 
    PRIMARY KEY (`Nurse Number`)) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mh23202`.`Secretary` 
-- ----------------------------------------------------- 
DROP TABLE IF EXISTS `mh23202`.`Secretary` ; 

CREATE TABLE IF NOT EXISTS `mh23202`.`Secretary` (
    `Secretary Number` INT NOT NULL, 
    `First Name` TEXT NULL, 
    `Last Name` TEXT NULL, 
    `Date of Birth` DATE NULL, 
    `Phone Number` INT NULL, 
    `Email` TEXT NULL, 
    `Gender` TEXT NULL, 
    `Race` TEXT NULL, 
    `Address` TEXT NULL, 
    PRIMARY KEY (`Secretary Number`), 
    CONSTRAINT `Visit Number` 
    FOREIGN KEY (`Secretary Number`) 
    REFERENCES `mh23202`.`Visits` (`Visit Number`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mh23202`.`ChargeNurse` 
-- ----------------------------------------------------- 
DROP TABLE IF EXISTS `mh23202`.`ChargeNurse` ; 

CREATE TABLE IF NOT EXISTS `mh23202`.`ChargeNurse` (
    `Charge Nurse Number` INT NOT NULL, 
    `First Name` TEXT NULL, 
    `Last Name` TEXT NULL, 
    `Date of Birth` DATE NULL, 
    `Phone Number` INT NULL, 
    `Email` TEXT NULL, 
    `Gender` TEXT NULL, 
    `Race` TEXT NULL, 
    `Address` TEXT NULL, 
    PRIMARY KEY (`Charge Nurse Number`)) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mh23202`.`Shifts` 
-- ----------------------------------------------------- 
DROP TABLE IF EXISTS `mh23202`.`Shifts` ; 

CREATE TABLE IF NOT EXISTS `mh23202`.`Shifts` (
    `Shift Number` INT NOT NULL, 
    `Date of Shift` DATE NULL, 
    `Time of Shift` TIME NULL, 
    PRIMARY KEY (`Shift Number`), 
    CONSTRAINT `Secertary Number` 
    FOREIGN KEY (`Shift Number`) 
    REFERENCES `mh23202`.`Secretary` (`Secretary Number`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `Physician Number` 
    FOREIGN KEY (`Shift Number`) 
    REFERENCES `mh23202`.`Physician` (`Physician Number`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `Nurse Number` 
    FOREIGN KEY (`Shift Number`) 
    REFERENCES `mh23202`.`Nurse` (`Nurse Number`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `Charge Nurse Number` 
    FOREIGN KEY (`Shift Number`) 
    REFERENCES `mh23202`.`ChargeNurse` (`Charge Nurse Number`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


SET [email protected]_SQL_MODE; 
SET [email protected]_FOREIGN_KEY_CHECKS; 
SET [email protected]_UNIQUE_CHECKS; ` 

이것이 결과입니다.

ERROR: Error 1005: Can't create table 'mh23202.visits' (errno: 121) 

CREATE TABLE IF NOT EXISTS `mh23202`.`Visits` (

    `Visit Number` INT NOT NULL, 

    `Date of Visit` DATE NULL, 

    `Time of Visit` TIME NULL, 

    `Reason for Visit` TEXT NULL, 

    PRIMARY KEY (`Visit Number`), 

    CONSTRAINT `Patient Number` 

    FOREIGN KEY (`Visit Number`) 

    REFERENCES `mh23202`.`Patient` (`Patient Number`) 

    ON DELETE NO ACTION 

    ON UPDATE NO ACTION, 

    CONSTRAINT `Physician Number` 

    FOREIGN KEY (`Visit Number`) 

    REFERENCES `mh23202`.`Physician` (`Physician Number`) 

    ON DELETE NO ACTION 

    ON UPDATE NO ACTION) 

ENGINE = InnoDB 



SQL script execution finished: statements: 7 succeeded, 1 failed 



Fetching back view definitions in final form. 

Nothing to fetch 

Executing SQL script in server 

ERROR: Error 1005: Can't create table 'mh23202.visits' (errno: 121) 





CREATE TABLE IF NOT EXISTS `mh23202`.`Visits` (

    `Visit Number` INT NOT NULL, 

    `Date of Visit` DATE NULL, 

    `Time of Visit` TIME NULL, 

    `Reason for Visit` TEXT NULL, 

    PRIMARY KEY (`Visit Number`), 

    CONSTRAINT `Patient Number` 

    FOREIGN KEY (`Visit Number`) 

    REFERENCES `mh23202`.`Patient` (`Patient Number`) 

    ON DELETE NO ACTION 

    ON UPDATE NO ACTION, 

    CONSTRAINT `Physician Number` 

    FOREIGN KEY (`Visit Number`) 

    REFERENCES `mh23202`.`Physician` (`Physician Number`) 

    ON DELETE NO ACTION 

    ON UPDATE NO ACTION) 

ENGINE = InnoDB 



SQL script execution finished: statements: 7 succeeded, 1 failed 



Fetching back view definitions in final form. 

Nothing to fetch 
+5

이 게시물을 단순화하는 방법을 찾으십시오 ... (이동, 희망, 레드 삭스!) – Nix

+0

나는 이것을 단순화하는 방법을 모르겠습니까? 전적으로 데이터베이스에 익숙하지 않아 엔지니어를 포워드해야합니다. 나는 모든 테이블을 배치하고 기본 및 외래 키를 만들었습니다. 나는이 구문 오류가 발생하지만 앞으로 엔지니어링을 시도 할 때마다. – SoxFan9298

+0

FOREIGN KEY 제약 조건에서 열 이름이 누락되었습니다. – Barmar

답변

2

스크립트에 많은 오류가 있습니다.

CONSTRAINT `Visit Number` 
    FOREIGN KEY() 
    REFERENCES `mh23202`.`Visits`() 

빈 괄호는 모든 테이블에 당신의 오류입니다 : 당신의 외래 키가있는 테이블을 작성하지만, 참조 섹션에서 다음이 생성 테이블 명세서에 싸웁 예를 지정하지 않기 때문에 대부분이다. 외래 키의 경우 테이블의 열 이름과 참조 번호 mh23202이 있어야합니다. Visits() 해당 테이블의 열 이름이 있어야합니다.

덧글에 언급 된 바와 같이, 다른 하나는 첫 번째 것과 중복 된 스크립트에 하나의 테이블 만 생성됩니다. 가장 많이 사용하는 도구가 제대로 작동하지 않아 하나의 테이블에 대한 스크립트를 만들려고했습니다. 당신이 당신의 생성 테이블에있는 편집 한 후

편집

필드 이름 사이에 공백을 명령한다. 그것은 가지고 있으면 안되며 따옴표를 붙여야합니다. 귀하의 첫 번째 작성 진술 : 환자 번호.

+0

테이블을 클릭 한 다음 외래 키로 이동하고 하나의 외래 키를 클릭 한 다음 열 탭 아래의 상자를 선택한 다음 참조 된 열 탭에서 참조를 선택하여이를 변경할 수 있습니까? ? 왜냐하면 내가이 작업을 수행했기 때문에 다른 오류 1005로 끝났기 때문에 테이블을 만들 수 없습니다. – SoxFan9298

+0

그게 무슨 도구를 사용하는지 말하지 않았기 때문에 나는 당신을 도울 수 없다.그러나이 도구에서 테이블 종속성을 찾아야합니다. 스크립트에서 환자와 의사가되어야하고, 두 가지를 확인하고 참조 옵션을 확인한 다음 다시 시도하십시오. –

0

MySQL의 오류 코드 121 : 쓰기에 키를 중복 또는 FOREIGN KEY (Visit Number)와

문제를 업데이트합니다.

0

예를 들어 동일한 이름의 제약 조건을 사용할 수 없습니다.

  • 테이블 mh23202.Physician에는 "방문 번호"라는 제약 조건이 있습니다.
  • 표 mh23202.Patient에는 "방문 번호"라는 제약 조건이 있습니다.
  • 표 mh23202.Secretary에는 "방문 번호"라는 제약 조건이 있습니다.

항상 제약 조건 이름이 다른지 확인해야합니다. 그렇지 않으면이 오류가 발생합니다. 나는 작업대에서 비슷한 문제를 겪었다. 문제를 해결 한 이름을 바꿨습니다.

관련 문제