如何基于关系模式创建Oracle数据库

如何基于关系模式创建Oracle数据库

问题描述:

我是Oracle数据库的初学者。如何基于关系模式创建Oracle数据库

我有一个关系图,我想在Oracle中创建表,但我不知道如何在它们和主键之间建立关系。我的老师说,“病人”和“医生”这些表格必须继承“人员”表中的所有属性。

此外,“处方”表需要继承“患者”和“医生”表中的属性。所以与“处方”表。

这是图

diagram

+0

你到目前为止尝试过什么?我们不会为你做你的功课。 – NaeiKinDus

+0

SO不是一个“如何做”或教程网站。从某些教程或[oracle文档](http://docs.oracle.com/database/122/SQLRF/CREATE-TABLE.htm#SQLRF01402)开始,尝试一些内容,然后如果您的代码存在问题,随时张贴在这里,并寻求帮助。 – Aleksej

+0

我试图用Oracle对象浏览器在Oracle 11g中创建表,我不知道如何使父母和孩子之间的关系(像“孩子”,像partents和“医生”,像孩子)。 –

你需要的一切,你可以在此页面找到:official oracle docs

节创建简单的表格和属性的继承“并行创建表”的基本语法。

CREATE TABLE empleat(

    emp_no number(6,0) CONSTRAINT fk_empleat PRIMARY KEY, 

    nom varchar(20) CONSTRAINT nn_empleat_nom NOT NULL, 

    cognom varchar(20), 
    departament number(2,0) CONSTRAINT nn_empleat_dept NOT NULL 
); 


CREATE TABLE departament(
dept_no number(2,0) CONSTRAINT fk_departament_dept_no PRIMARY KEY, 


nom varchar(20) CONSTRAINT nn_departament_nom NOT NULL, 

localitat varchar2(30), 

lider number(6,0) CONSTRAINT nn_departament NOT NULL 
); 

不知道为什么医生就不会出生日期或性别,所以你可以只合并peoplepatients

CREATE TABLE people (
    id   NUMBER  CONSTRAINT people__id__pk PRIMARY KEY, 
    first_name VARCHAR2(250) CONSTRAINT people__first_name__nn NOT NULL, 
    last_name  VARCHAR2(250) CONSTRAINT people__last_name__nn NOT NULL, 
    phone   VARCHAR2(20), 
    date_of_birth DATE   CONSTRAINT people__date_of_birth__nn NOT NULL, 
    gender  CHAR(1)  CONSTRAINT people__gender__chk CHECK (gender IN ('M', 'F', 'X', 'Y')), 
    doctor  NUMBER  CONSTRAINT people__doctor__fk REFERENCES doctor (id) 
); 

CREATE TABLE doctor (
    id    NUMBER  CONSTRAINT doctor__id__pk PRIMARY KEY 
           CONSTRAINT doctor__id__fk REFERENCES people (id), 
    specialization VARCHAR2(250) 
); 

我的老师说,表“患者“和”医生“必须继承”人员“表中的所有属性。

如果这一点,他们意味着doctors表必须具有people表的所有列,然后这打破正常化的想法。如果您需要这样做,那么它应该作为VIEW实施,而不是复制数据。

CREATE VIEW doctor_details IS 
    SELECT p.*, d.sepcialization 
    FROM people p 
     INNER JOIN 
     doctors d 
     ON (p.id = d.id); 
+0

我的老师想要做你在第二次通信中说的话。 '医生'餐桌必须包含'人'餐桌上的所有列,并且'病人'上有同样的事情。这是我直到现在才明白的。非常感谢你! –

+0

“不确定医生为什么没有出生日期或性别”,因为这些属性与DOCTOR实体无关(除非我们正在编写人力资源申请),但他们确实与医学治疗极其相关,因此属于正确的给患者实体 – APC