Oracleデータベースのオブジェクトの管理

※ポイント※
     Oracleユーザーが所有する表、索引、ビュー、順序の作成方法や管理内容。
     表に関しては、特に制約による整合性チェックの動作。

 スキーマオブジェクト 

Oracleデータベースで使用することのできるオブジェクトは、何らかのOracleユーザーにより所有されている。
個々のユーザーには独自の名前空間があり、この空間のことを「スキーマ」という。

同じスキーマ(名前空間)の中では同一のオブジェクト名を使用することができないが、
スキーマが異なれば同じオブジェクト名を持つこともできる。

オブジェクト名には、次のようなルールがある。

・名前の長さは1~30バイト。ただし、データベース名は最大8バイト、データベースリンク名は最大128バイトという例外もある。
・Oracle予約語(TABLE、USERなど)は使用することができない。
・最初の文字として数字を使用することはできない。
・大文字と小文字は区別されない。

長さの制限は変更できないが、名前を「"」(ダブルクオーテーション)で囲んだ場合、そのほかのルールは適用されない。
しかし使用するときは毎回「"」で囲む必要があり、大文字と小文字も区別されてしまうため、推奨されていない。

SQL> CREATE TABLE "USER" (col1 NUMBER);

表が作成されました。

SQL> INSERT INTO USER VALUES(1);
INSERT INTO USER VALUES(1)
*
行1でエラーが発生しました。:
ORA-00903: 表名が無効です。

SQL> INSERT INTO "USER" VALUES(1);

1行が作成されました。

 制約 

Oracleデータベースでは列に対し、次の制約を使用することができる。
制約によって、格納データに特定のルールを適用できる。

・ PRIMARY KEY 
レコードを一意に識別できることを保証する。
特定の列、または列の組み合わせによって、テーブルに1つのみ宣言できる。
PRIMARY KEYとして宣言された列または列の組み合わせには、重複しない値を格納することが必須。
また、索引が必要となっており、存在しなければ自動作成される。


・ UNIQUE KEY 
PRIMARY KEY同様、レコードを一意に識別できることを保証する。
ただしPRIMARY KEYと異なり、テーブルに複数宣言することができる。
複数のレコードでNULL値が存在することも許可されているが、索引が必要。


・ FOREIGN KEY 
複数のテーブル、または同一テーブル内の共通の列を使用して関連付けできることを保証する。
各テーブルの共通列には同じ値が格納される必要があるため、次のルールが適用される。

参照キーを持つ親テーブル:
外部キー列の値として使用されている場合、対象となる参照キー列値の変更とレコードの削除は禁止される。
ただし、FOREIGN KEY制約がON DELETE CASCADEで宣言されている場合、
親テーブルのレコード削除と同時に子テーブルの依存レコードも削除される。

外部キーを持つ子テーブル:
親テーブルの参照キー列に含まれる値以外は、外部キー列値として使用できない。
INSERT時、UPDATE時に、一致する値が存在するかどうかが確認される。


・ CHECK 
指定した条件に対して、真(TRUE)であることが保証される。
偽(FALSE)である場合、DML文はロールバックされる。


・ NOT NULL 
列値として必ず値が存在する(NULL値は存在しない)ことが保証される。

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License