1
私は何時間も頭を掻き回してきました。別のテーブルにあるエンタテイメントからの外部キーの作成
私はbid
とauthID
の組み合わせがWorkSession
テーブルからAllocation
テーブルに存在する制約を加える必要があり、4つのテーブルBook
、Author
、Allocation
とWorkSession
を持っています。
通常と同じように外部キーの制約を作成しようとしましたが、参照されたIDが両方とも外部キーであり、割り当てテーブルの識別子として新しいキーを作成できないため動作しません。
CREATE TABLE Book(
bid NUMBER(4),
title VARCHAR2(30) NOT NULL,
SellingPrice NUMBER(6,2),
PRIMARY KEY (bid),
CONSTRAINT EM_SellingPrice CHECK(SellingPrice >= 0)
);
CREATE TABLE Author(
authID NUMBER(4),
fName VARCHAR2(30),
sName VARCHAR2(30),
PRIMARY KEY(authID),
CONSTRAINT EM_Name UNIQUE (fName,SName)
);
CREATE TABLE Allocation(
bid NUMBER(4),
authID NUMBER(4),
payRate NUMBER(6,2),
CONSTRAINT AL_PayRate CHECK(payRate >= 1 AND payRate < 80),
FOREIGN KEY(bid) REFERENCES Book(bid),
FOREIGN KEY(authID) REFERENCES Author(authID)
);
CREATE TABLE WorkSession(
bid NUMBER(4),
authID NUMBER(4),
WorkYear NUMBER(4),
WorkWeek NUMBER(2),
WorkHours NUMBER(4,2),
CONSTRAINT WY_Range CHECK(WorkYear > 2010 AND WorkYear < 2014),
CONSTRAINT WW_Range CHECK(WorkWeek >= 1 AND WorkWeek <= 52),
CONSTRAINT WH_Range CHECK(WorkHours >= 0.5 AND WorkHours <100),
CONSTRAINT FK_Check FOREIGN KEY(bid, AuthID) REFERENCES Allocation(bid, AuthID),
PRIMARY KEY(workYear, WorkWeek)
);
こんにちはアレックス、あなたの探しているものは何ですか?外部キーのみがあなたの懸念事項であるか、割り当てテーブルをWorkSessionにバインドしたい他のものよりも外部キーから外部キーへの関係を作成できない –
だから、これを最終的に理解して、これが同じ問題は、最終的に私はそのテーブルのプライマリキーを見つけることができないというエラーを回避したそのテーブルのプライマリキーとして割り当て内の外部キーを割り当てた。これが役立つことを願っています – Ardenexal
「割り当て」の主キーとは何ですか? –