どこから始めれば?
varchar2
notを使用する必要がありvarchar
ます。それらは現在同一ですが、の将来の動作varchar
は保証されていません
- 数値フィールドとしての電話番号? 多くの電話番号は 0 で始まります。これを失うことになります。うまく表示したい場合は、終了時にファンキーな文字列操作を行う必要があります。
- ID が数字の場合は、数字として保存する必要があります。
- テーブルが主キーを持つべきでない状況はめったにありません。
外部キーは、データベースで参照整合性を強化するように設計されています。したがって、このスキーマには少なくとも 1 つまたは 2 つのテーブルが必要です。
典型的な状況は、同じpostcode,phone
組み合わせが に存在することを前提として、このようなものになる可能性がありますagency
。
CREATE TABLE ORGANISATION(
ORG_REF VARCHAR2(5),
POSTCODE VARCHAR2(10) ,
TELEPHONE VARCHAR2(50),
DESCRIPTION VARCHAR(30),
AGENCY_ID VARCHAR(5),
CONSTRAINT PK_ORGANISATION PRIMARY KEY ( org_ref ),
CONSTRAINT FX_ORGANISATION FOREIGN KEY
REFERENCES SOME_OTHER_TABLE(POSTCODE,PHONE)
);
2 列ではなく 1 列だけの場合は、次のようにインラインで参照できます。
create table organisation (
org_ref number(16) not null
, phone varchar2(5) not null constraint fk_organisation
references agency ( phone )
, constraint pk_organisation primary key ( org_ref )
);
ただし、これが機能するかどうかは非常に疑わしいです。外部キーは一意の制約を参照する必要があります。したがって、コメントから判断するagency
と、一意の制約または主キーを持つテーブルが必要phone, postcode
です。
あなたのデータモデルに欠陥があると思われます。組織が から継承しているかのように聞こえますagency
。
現在テーブルを見ている場合は、phone
andpostcode
を削除し、結合を実行してその情報を取得します。agency
agency
select a.*, o.postcode, o.phone
from agency a
join organisation o
on a.agency_id = o.agency_id
where a.id = 12345
参考文献: