Проблема создания таблицы SQL с похожим отношением внешнего ключа с первичным ключом - PullRequest
0 голосов
/ 18 октября 2018

Может ли кто-нибудь помочь мне с этим sql statment

Create table doctor(
  doctorId char(3),
  doctorName varchar(20),
  primary key (doctorId)
);
create table patient (
  patient_id char(4) not null check (patient_id LIKE 'P[0-9][0-9][0-9]'),
  doctorId char(3),
  patientName varchar(60) not null,
  dateOfBirth date not null,
  gender char(1),
  height decimal(4, 1) check (height > 0),
  weight decimal(4, 1) check(weight > 0),
  primary key (patient_id) FOREIGN KEY doctorId REFERENCES doctor(doctorId)
);

почему 2-я таблица не создана

Ответы [ 3 ]

0 голосов
/ 18 октября 2018

поместите приведенный ниже код вместо вашего собственного кода:

Create table doctor(
  doctorId char(3),
  doctorName varchar(20),
  primary key (doctorId)
);
create table patient (
  patient_id char(4) not null check (patient_id LIKE 'P[0-9][0-9][0-9]'),
  doctorId char(3),
  patientName varchar(60) not null,
  dateOfBirth date not null,
  gender char(1),
  height decimal(4, 1) check (height > 0),
  weight decimal(4, 1) check(weight > 0),
  primary key (patient_id) FOREIGN KEY doctorId REFERENCES doctor(doctorId)
);
0 голосов
/ 18 октября 2018

Так и должно быть.

  Create table doctor(
  doctorId Int Identity(1,1), --It's 'Primary Key' so it should be Int or Guid
  doctorName varchar(20),
  CONSTRAINT pk_doctorId PRIMARY KEY (doctorId) --It's better!
);
  Create table patient (
  patient_id Int IDENTITY(1,1), --It's 'Primary Key' so it should be Int or Guid
  doctorId Int NOT NULL, --Every patient has a doctor, so it should be 'Not Null'
  patientName varchar(60) not null,
  dateOfBirth date not null,
  gender char(1),
  height decimal(4,1), -- I didnt see check operator, you should check > 0 in code.
  weight decimal(4,1),
  CONSTRAINT pk_patient_id PRIMARY KEY (patient_id),
  CONSTRAINT fk_doctorId FOREIGN KEY (doctorId) REFERENCES doctor(doctorId)
);
0 голосов
/ 18 октября 2018

Это потому, что вам не хватает ,

create table patient (
  patient_id char(4) not null check (patient_id LIKE 'P[0-9][0-9][0-9]'),
  doctorId char(3),
  patientName varchar(60) not null,
  dateOfBirth date not null,
  gender char(1),
  height decimal(4, 1) check (height > 0),
  weight decimal(4, 1) check(weight > 0),
  primary key (patient_id) ,
  FOREIGN KEY (doctorId) REFERENCES doctor(doctorId)
);
...