Как исправить дизайн SQL - PullRequest
0 голосов
/ 27 мая 2019

Я занимаюсь изучением медицинского программного обеспечения. Это программное обеспечение задает пациентам вопросы об их симптомах, и с их помощью можно определить возможные патологии. Мое исследование включает сравнение симптомов и патологий, обнаруженных программным обеспечением, с данными из больницы.

Чтобы облегчить мою работу, я решил внести данные в базу данных, созданную с помощью javadb для netbeans 8.2.

Но похоже, что я сделал что-то не так, поскольку мое утверждение не работает.

Заранее благодарю всех, кто нашел время, чтобы помочь мне.


SQL дизайн:

Create table Patients(
nip varchar(32) primary key,
sexe varchar(8) not null,
age int not null,
dateArrivee timestamp not null,
constraint ck_sexe check(sexe='Male' or sexe='Female'),
constraint ck_age check (age>=0)
);

Create table Symptoms(
symptomID int primary key generated always as identity (start with 1,                         
increment by 1),
nip varchar(32) not null,
symptom varchar(64),
origin varchar(16) not null,
foreign key (nip) references Patients(nip),
constraint ck_origin check (origin='SOFTWARE' or origin='HOSPITAL')
);

Create table Pathologies(
pathologyID int primary key generated always as identity (start with 1,     
increment by 1),
nip varchar(32) not null,
pathology varchar(64),
origin varchar(16) not null,
foreign key (nip) references Patients(nip),
constraint ck_origin check (origin='SOFTWARE' or origin='HOSPITAL')
);

Введенные значения:

Insert into Patients values ('001','Male', 25, '2019-05-27 14:00:00');

Insert into Patients values ('002', 'Female', 30, '2019-05-26 15:00:00');

Insert into Symptoms values (, '001', 'Headache', 'SOFTWARE');

Insert into Pathologies values (,'001', 'Fever', 'SOFTWARE');

Insert into Symptoms values (,'001', 'Stomache', 'HOSTPITAL');

Insert into Pathologies values (, '001', 'Gastro-enteritis', 'HOSPITAL');

Insert into Symptoms values(,'002', 'Headache', 'SOFTWARE');

Insert into Pathologies values (,'002', 'Unknow', 'SOFTWARE');

Оператор SQL:

Select * 
from (Patients inner join
      Symptoms
      on Patients.nip = Symptoms.nip
     ) inner join
     Pathologies
    on Symptoms.nip = Pathologies.nip
 where Symptoms.origin = 'MEDVIR' and 
       Pathologies.origin = 'MEDVIR';

Извините, я забыл поставить ошибки, которые я получаю.

SQL дизайн:

Сначала у меня возникла ошибка, связанная с auto_incrementation, даже я подумал, что это хороший метод. Он говорит, что синтаксис рядом с «сгенерирован» неверен.

Введенные значения:

Здесь у меня ошибка, связанная с неправильным синтаксисом рядом с комой (',').

Оператор SQL:

Наконец, у меня ошибка, когда говорят, что объект «Пациенты» недоступен.

1 Ответ

0 голосов
/ 27 мая 2019

Если я не ошибаюсь, вы пытаетесь получить записи, где 'Origin' = 'MEDVIR' Хотя ни один из ваших операторов вставки не имеет происхождения как «MEDVIR»

Пожалуйста, проверьте ниже,

Select * 
from (Patients inner join
      Symptoms
      on Patients.nip = Symptoms.nip
     ) inner join
     Pathologies
    on Symptoms.nip = Pathologies.nip
 where Symptoms.origin IN ('SOFTWARE', 'HOSPITAL') and 
       Pathologies.origin IN ('SOFTWARE', 'HOSPITAL');

Кроме того, некоторые из ваших операторов INSERT имеют дополнительную запятую перед значениями, что может вызвать синтаксическую ошибку.

...