0

データベース管理クラスのプロジェクトを行っていますが、SQL で作成するテーブルのファイル コマンドを作成する方法がわかりません。2 つの主キーを持つ 2 つのエンティティがあり、テーブルを作成できません。何か意見はありましたか?旅行代理店テーブルには 2 つの主キーがあり、これらのテーブルの外部キーであり、何らかの理由でこれらのテーブルを作成することができず、理解できません。ここに私がこれまでに持っているものがあります:
これらは、2 つの主キーを持つテーブルを参照する外部キーを持つテーブルです。

create table rental  (rental_id integer not null,  
max_daily_mileage integer not null,  
is_unlimited_mileage char(3) not null,  
rental_start_date integer not null,  
rental_end_date integer not null,  
is_reservation_a_hold char(3),  
checked_out_mileage integer not null,  
checked_in_mileage integer not null,  
checked_out_condition char(8) not null,  
checked_in_condition char(8) not null,  
company_discount integer,  
reservation_is_cancelled char(3),  
employee_id_booked integer not null,  
employee_id_checked_out_car integer not null,  
employee_id_checked_in_car integer not null,  
discount_id integer not null,  
customer_id integer not null,  
class_id integer not null,  
car_id integer not null,  
franchise_id integer not null,  
company_id integer not null, 
primary key (rental_id), 
foreign key (discount_id) references frequent_renter_discount (discount_id), 
foreign key (customer_id) references customers (customer_id), 
foreign key (travel_agency_id) references travel_agency (travel_agency_id), 
foreign key (car_id) references car (car_id), 
foreign key (franchise_id) references franchise (franchise_id), 
foreign key (company_id) references company (company_id));  

create table customers 
(customer_id integer not null, 
employer char(15) not null, 
id_verified integer, 
employee_id integer not null,  
corporate_account_id integer not null, 
credit_card_id integer not null,  
company_id integer not null, 
primary key (customer_id), 
foreign key (employee_id) references employees (employee_id), 
foreign key (corporate_account_id) references corporate_account (corporate_account_id), foreign key (credit_card_id) references credit_card (credit_card_id), 
foreign key (company_id) references company (company_id),
foreign key (rental_id) references rental (rental_id));   

2 つの主キーを持つテーブル:

create table travel_agency  
(travel_agency_id integer not null,  
travel_agent_id integer not null,  
location char(15) not null,  
company_id integer not null,  
primary key (travel_agency_id,travel_agent_id), 
foreign key (company_id) references company (company_id));
4

1 に答える 1

0

まあ、複合 PRIMARY KEY の一部だけに FOREIGN KEY CONSTRAINT を追加することはできません。(ちなみに、travel_agency_id integerテーブルレンタル定義にはフィールドがありません…)

複合 PK を参照する場合は、キーを構成するすべてのフィールドへの参照を追加する必要があります。

つまり、テーブルレンタルの場合

CREATE TABLE rental  (
rental_id integer not null,  
--...,
travel_agency_id integer,
travel_agent_id integer,
PRIMARY KEY (rental_id), 
--...,
FOREIGN KEY (travel_agency_id, travel_agent_id) 
   REFERENCES travel_agency(travel_agency_id, travel_agent_id)
);  

または、設計を変更し、代理キーを使用し、組み合わせが一意である必要があるフィールドに UNIQUE CONSTRAINT を追加します。

ちなみに、一般的に、私は複合キーを避けようとします。

于 2013-03-06T13:07:29.297 に答える