スキーマとテーブル設計
SQL が遅い、整合性が崩れる、改修が辛いといった問題の多くは設計段階で決まります。Oracle 固有機能に入る前に、設計の土台を固めます。
スキーマ設計
機能単位でスキーマを分けると管理しやすくなります。監査テーブルやバッチ作業用テーブルも早い段階で分離方針を決めます。
PK/FK 設計
CREATE TABLE departments (
department_id NUMBER(10) PRIMARY KEY,
department_name VARCHAR2(100) NOT NULL
);
CREATE TABLE employees (
employee_id NUMBER(10) PRIMARY KEY,
department_id NUMBER(10) NOT NULL,
employee_name VARCHAR2(120) NOT NULL,
CONSTRAINT fk_emp_dept FOREIGN KEY (department_id)
REFERENCES departments (department_id)
);
データ型
| 型 | 用途 | 注意点 |
|---|---|---|
NUMBER(p,s) | 金額・数量 | 桁数不足を避ける |
VARCHAR2(n) | 可変長文字列 | バイト数と文字数を意識 |
DATE | 日時 | 時刻を含む |
インデックス基本
CREATE INDEX idx_emp_department_id ON employees (department_id);
CREATE INDEX idx_orders_created_at ON orders (created_at);
インデックスは「検索速度向上」と「更新コスト増加」のトレードオフです。用途を決めてから追加します。