SQLite データベース設計のベストプラクティス: テーブルと列
SQLite テーブルと列名の要件
テーブル名
- 英数字、アンダースコア(_)、ドル記号()で構成される必要があります。∗空白文字は使用できません。∗大文字と小文字は区別されます。∗予約語は使用できません。(例:SELECT,CREATE,TABLEなど)∗∗列名∗∗∗英数字、アンダースコア()​、ドル記号() で構成される必要があります。
- 空白文字は使用できません。
- 大文字と小文字は区別されます。
- 予約語は使用できません。 (例: SELECT, CREATE, TABLE など)
- テーブル内に既に存在する列名と重複することはできません。
- 先頭に数字を使用することは避けてください。 (推奨)
- テーブル名は最大64文字まで、列名は最大128文字までにすることができます。
- 特殊文字を使用する場合は、クォート(
) で囲む必要があります。 (例:
column name with spaces`) - 列にはデータ型を指定する必要があります。 (例: INTEGER, TEXT, REAL, BLOB など)
- プライマリキー列を指定することはできますが、必須ではありません。
命名規則
- わかりやすく、一貫性のある命名規則を使用することが重要です。
- 一般的な慣習としては、スネークケース (例: customer_id, order_date) またはキャメルケース (例: CustomerId, OrderDate) を使用します。
- 長い名前は避け、略語を使用する場合は明確に定義します。
例
CREATE TABLE customers (
customer_id INTEGER PRIMARY KEY AUTOINCREMENT,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
この例では、customers
という名前のテーブルを作成し、5 つの列を定義しています。
customer_id
は、主キーであり、自動的にインクリメントされる整数です。first_name
とlast_name
は、必須のテキストフィールドです。email
は、必須でユニークなテキストフィールドです。created_at
は、デフォルト値が現在時刻の DATETIME フィールドです。
SQLite テーブルと列名の要件を理解することは、データベースを効果的に設計および管理するために重要です。 上記のガイドラインに従って、わかりやすく、一貫性のある名前を付けるようにしてください。
テーブルの作成
CREATE TABLE customers (
customer_id INTEGER PRIMARY KEY AUTOINCREMENT,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
データの挿入
INSERT INTO customers (first_name, last_name, email)
VALUES ('John', 'Doe', '[email protected]');
INSERT INTO customers (first_name, last_name, email)
VALUES ('Jane', 'Smith', '[email protected]');
このコードは、customers
テーブルに 2 件のレコードを挿入します。
SELECT * FROM customers;
UPDATE customers
SET email = '[email protected]'
WHERE customer_id = 1;
このコードは、customer_id
が 1 のレコードの email
アドレスを [email protected]
に更新します。
DELETE FROM customers
WHERE customer_id = 2;
このコードは、customer_id
が 2 のレコードを customers
テーブルから削除します。
説明
CREATE TABLE
ステートメントは、新しいテーブルを作成するために使用されます。INSERT INTO
ステートメントは、テーブルにレコードを挿入するために使用されます。
このサンプルコードは、基本的な操作を理解するための出発点として役立ちます。 SQLite には、さらに多くの高度な機能が用意されています。 詳細については、SQLite のドキュメントを参照してください。
大文字と小文字の組み合わせ
列名を定義する際に、大文字と小文字を組み合わせることができます。 これにより、可読性が向上し、コードをより読みやすくすることができます。
CREATE TABLE customers (
customer_id INTEGER PRIMARY KEY AUTOINCREMENT,
firstName TEXT NOT NULL,
lastName TEXT NOT NULL,
emailAddress TEXT UNIQUE NOT NULL,
createdAt DATETIME DEFAULT CURRENT_TIMESTAMP
);
アンダースコア(_)の使用
列名にスペースを含める場合は、アンダースコア(_)を使用して単語を区切ることができます。
CREATE TABLE customer_orders (
order_id INTEGER PRIMARY KEY AUTOINCREMENT,
customer_id INTEGER NOT NULL,
order_date DATETIME NOT NULL,
total_amount REAL NOT NULL,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
略語の使用
長い列名は避け、略語を使用して簡潔にすることができます。 ただし、略語を使用する場合は、明確に定義し、ドキュメント化することが重要です。
CREATE TABLE cust (
cust_id INTEGER PRIMARY KEY AUTOINCREMENT,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
コメントの使用
列の目的を明確にするために、コメントを使用することができます。
CREATE TABLE customers (
customer_id INTEGER PRIMARY KEY AUTOINCREMENT, -- 主キーのカスタマーID
first_name TEXT NOT NULL, -- 顧客のファーストネーム
last_name TEXT NOT NULL, -- 顧客のラストネーム
email TEXT UNIQUE NOT NULL, -- 顧客の電子メールアドレス (ユニーク)
created_at DATETIME DEFAULT CURRENT_TIMESTAMP -- レコード作成日時 (デフォルト: 現在時刻)
);
命名規則の選択
使用する命名規則は、プロジェクトの要件と好みによって異なります。 重要なのは、わかりやすく、一貫性のある規則を選択し、それをドキュメント化することです。
その他のヒント
- 既存のデータベーススキーマとの互換性を考慮する必要があります。
- 将来の変更を容易にするために、柔軟性を考慮した命名規則を選択してください。
- 標準的な命名規則に従うように努めてください。
sqlite