次のようなテーブルがあります。
タンクテーブル
CREATE TABLE fishtank(
tanknum number(8),
temperature number(6,2),
capacity number(10),
primary key(tanknum));
Name Null Type
----------- -------- -----------
TANKNUM NOT NULL NUMBER(8)
TEMPERATURE NUMBER(6,2)
CAPACITY NUMBER(10)
魚の種類
CREATE TABLE type(
species varchar2(20),
mintemp number(6,2),
maxtemp number(6,2),
primary key(species));
Name Null Type
------- -------- ------------
SPECIES NOT NULL VARCHAR2(20)
MINTEMP NUMBER(6,2)
MAXTEMP NUMBER(6,2)
食べる
CREATE TABLE eats(
species1 varchar2(20),
species2 varchar2(20),
primary key(species1, species 2),
foreign key(species1) references type,
foreign key(species2) references type);
Name Null Type
-------- -------- ------------
SPECIES1 NOT NULL VARCHAR2(20)
SPECIES2 NOT NULL VARCHAR2(20)
今はこんな感じで種の違う水槽があります。水槽に魚を入れたいです。Eats は、どの 2 つの種が互いに食べ合うかを指定します。次のような食事に価値がある場合
species1='a' species2='b'
これは、種「a」が「b」を食べることを意味するため、両方を同じ水槽に入れることはできません。今、私はfishというテーブルを作成しようとしています
name
species
tanknum
テーブルを作成する際に、同じタンク内の 2 匹の魚が互いに食べてはならないという条件をここに追加したいと思います。チェック制約を使用してこれを実装したいのですが、Oracle SQLに取り組んでいます。助けが要る。