これが私の提案です:CHAR
を避けてください 意味がない場合(性別など)のデータ型 、あなたがしたように)、およびVARCHAR
>>> VARCHAR2
を使用します 代わりに(個人的には、CHAR
を使用することはありません 、およびVARCHAR
を使用したことはありません 。
DATE
データ型には日付と時刻の両方のコンポーネントが含まれているため、使用しても安全です。
主キー制約を作成する列には、NOT NULL
を指定する必要はありません。 主キーはとにかくnullを許可しないため、制約が指定されています。
それで、これが実際の例です:
SQL> create table appointment
2 (appointid integer constraint pk_app primary key,
3 appoint_date date,
4 appoint_type varchar2(5)
5 );
Table created.
SQL>
SQL> insert into appointment values
2 (1, to_date('15.04.2017 10:00', 'dd.mm.yyyy hh24:mi'), 'long');
1 row created.
SQL>
SQL> create table doctor
2 (appointid integer constraint fk_doc_app references appointment (appointid),
3 regnum varchar2(6),
4 doc_name varchar2(40),
5 doc_gender char(1),
6 qual varchar2(80),
7 --
8 constraint pk_doc primary key (appointid, regnum)
9 );
Table created.
SQL>