わからないあなただけのpeople
とpatients
テーブル
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)
);
先生をマージすることができるように医師は生年月日や性別を持たないと、なぜが言うのテーブル「の患者"医師"は "Persons"テーブルからすべての属性を継承する必要があります。これによって、彼らはdoctors
表がpeople
テーブルのすべての列を有していなければならないことを意味する場合
が、これは正規化のアイデアを破ります。これを行う必要がある場合は、データを複製するのではなくVIEW
として実装する必要があります。
CREATE VIEW doctor_details IS
SELECT p.*, d.sepcialization
FROM people p
INNER JOIN
doctors d
ON (p.id = d.id);
出典
2017-04-27 10:58:04
MT0
これまでに何を試みましたか?私たちはあなたの宿題をしません。 – NaeiKinDus
SOは「ハウツー」サイトやチュートリアルサイトではありません。チュートリアルまたは[oracle documentation](http://docs.oracle.com/database/122/SQLRF/CREATE-TABLE.htm#SQLRF01402)から始めて、何か試してみて、コードに問題がある場合はここに投稿して助けを求めてください。 – Aleksej
オブジェクト・ブラウザでOracle 11gでテーブルを作成しようとしましたが、親と子(「パーソン」や「患者」や「医師」などの子どものような人物)の関係をどうやって作るのか分かりません。 –