0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

初心者から学ぶDB設計

Posted at

テーブル設計の3つのstep

1.概念設計

2.論理設計

3.物理設計

1.概念設計

エンティティを見つける。
エンティティとは物や出来事に対応する概念。

帳票からエンティティを抜き出す。

例:注文、顧客、商品

帳票に存在する項目がどのエンティティの属性になるか考える。
顧客エンティティ
→顧客番号、顧客名、住所

商品エンティティ
→商品番号、商品名、単価

ER図を書く。

繋がるエンティティに線を引く。

2.論理設計

テーブルに主キー列を設ける。
・主キーはテーブルの列で1番上に記載。
・主キーには下線をつける。

結合するカラムの外部キーを設定する。
1対多の関連について1の方の主キーを他の方のFKにする。

関連の多重度を明らかにする。
1対1か1対多か。

多対多の場合

交差テーブルを作成する。
多対多が存在しないようにする。

1対1の場合

データベースの観点からはテーブル数は少ない方が良い。
1対1の場合どちらかが補助的な役割になっているので統合する。

重複して存在する列を削除する

履歴テーブルなどは問題あることも。

他の列から計算できる列を取り除く

最終確認 正規形になっているか

1.主キーの一部の値が決まると値が決定する列がないこと。
2.段階的に値が決定しまう列がないこと。

列に設定するデータ項目の特徴を整理

3.物理設計

Oracleのストレージ領域割り当てについて。

あらかじめ表領域を割り当てる。

CREATE TABLESPACE <表領域名> DATAFILE '<データファイルのパス>' SIZE <サイズ>[REUSE][AUTOEXTENDON],....

パラメーター 内容
データファイルのパス データファイルのパス。一般的にはdbf
SIZE<サイズ> データファイルのサイズを指定。
REUSE 指定したデータファイルのパスに、既にデータファイルが存在していた場合は再利用する。
AUTOEXTEND ON 自動拡張ON

例)
sql>CREATE TABLESPACE tbs01
2 DATAFILE 'c:/oracle/oradata/tbs01_1.dbf' SIZE 100M AUTOEXTENDED ON
3 ,'c:/oracle¥oradata¥tbs01_2.dbf' SIZE 100M AUTOEXTEND ON;

テーブル作成時に格納先表領域を指定

CREATE TABLE tbl01(id NUMBER,col1 VARCHAR2(100)) TABLESPACE tbs01;
それぞれのユーザーにデフォルトで表領域が決まっているが、ユーザーのデフォルト外の表領域を選択する場合は表領域の指定が必要。

表領域削除の場合は、中にあるデータファイルも同時に消さないとエラーが発生する。
DROP TABLESPACE <表領域> [INCLUDING CONTENTS [AND DATAFILES]];
INCLUDING CONTENTS:格納したオブジェクトとともに。
AND DATAFILES:DATAFILEとともに。

制約を決める

値が決まっているもの→チェック制約
(選択肢)

NOT NULL制約

主キー制約
外部キー制約
一意性制約

インデックスをつける列をきめる

Oracle:主キー、一意キーには自動でインデックスがついているので必要なし。

テーブルインデックスのサイズを見積もる

Oracle:テーブルのコストを見積もるプロシージャとしてDBMS_SPACE.CREATE_TABLE_COST
インデックス:DBMS_SPACE.CREATE_INDEX_COST
が存在する。

オプジェクト(テーブル、インデックス)を格納する表領域を作成

CREATE TABLESPACE order_tbs DATAFILE 'C¥oracle¥order_tbs01.dbf' SIZE 100M AUTOEXTEND ON;

オブジェクトの所有ユーザーを作成

CREATE USER order_app IDENTIFIED BY password QUOTA UNLIMITED ON order_tbs;
order_appユーザーを作成

GRANT CREATE SESSION TO order_app;
order_appユーザーにcerate session権限を付与

決定事項を設計書にまとめる

CREATE文の作成

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?