0

1対多の関係を作成する方法がわかりませんが、多くのアイテムを「セット」としてそれぞれの一意の主キーに制限します。

DB: オラクル 11g

例:

PK テーブル:

CUST(PK)
100
200

有効な FK テーブル データ:

CUST(FK) | ITEM
100 | 101
100 | 102
200 | 101
200 | 102

外部キー テーブル データが無効です:

CUST(FK) | ITEM
100 | 101
100 | 101
200 | 104
200 | 104

そのような関係を設定する方法について何か提案はありますか? 上記の「セット」の一意性に違反する値を FK テーブルに追加できないように、一意性を制限したいと思います。

これは純粋に Oracle DB 側で行うことができますか、それともアクセスする Java コードから強制する必要がありますか?

4

2 に答える 2

1

次のように、CUSTとITEMの2つの列を持つ一意の制約を作成するだけです。

ALTER TABLE secondtable
ADD CONSTRAINT custItem UNIQUE (CUST, ITEM)

外部キーに加えてこの制約を作成します

于 2013-03-06T04:31:07.260 に答える
1

これはあなたを助けるかもしれません..次の方法でテーブルを作成してください....

create table cust_id 
           (cus_id number primary key) 
                  tablespace ts1;
  create table Valid_FK_Tabl
            (cus_id number,item number,constraints pk1 primary key(cus_id,item))
                  tablespace ts1 ;
  alter table Valid_FK_Tabl 
             add constraints fk1 foreign key(cus_id) 
                    references schema2.cust_id(cus_id);
于 2013-03-06T05:24:09.173 に答える