SQL Server 2005 でのデータベースとスキーマ: 基礎から理解する
SQL Server におけるデータベースとスキーマの違い
データベース は、テーブル、ビュー、インデックス、ストアドプロシージャなど、関連するデータの集合体です。 簡単に言えば、データを整理して格納するためのファイルボックスのようなものです。
スキーマ は、データベース内のオブジェクトの論理的な構造を定義するものです。 テーブルの構成(列名、データ型、制約など)や、テーブル間の関連性などを定義します。
例え で説明すると、データベースは図書館、スキーマは書架と蔵書整理システムと言えます。
主な違い
項目 | データベース | スキーマ |
---|---|---|
役割 | データの格納 | データの構造定義 |
構成要素 | テーブル、ビュー、インデックスなど | テーブルの構成、テーブル間の関連性など |
スコープ | インスタンス全体 | データベース内 |
変更頻度 | 比較的低い | 比較的高頻度 |
スキーマの利点
- データベースの構造を明確に定義し、理解を容易にする
- データの整合性を保つ
- オブジェクトへのアクセスを制御する
- データベースの変更を管理する
SQL Server 2005 では、データベースごとにデフォルトスキーマが作成されます。
スキーマを使いこなす
スキーマを使いこなすことで、データベースの設計、管理、運用を効率化することができます。
- SQL Server 2005 では、スキーマはデータベースオブジェクトの論理的なグループ化を提供する機能として導入されました。
- SQL Server 2008 以降では、スキーマはより多くの機能を提供するようになり、データベース設計において重要な役割を果たすようになりました。
USE Northwind
-- Customers テーブルのスキーマ
CREATE TABLE Customers (
CustomerID int NOT NULL IDENTITY(1,1),
CompanyName nvarchar(40) NOT NULL,
ContactName nvarchar(40) NULL,
ContactTitle nvarchar(30) NULL,
Address nvarchar(60) NULL,
City nvarchar(15) NULL,
Region nvarchar(15) NULL,
PostalCode nvarchar(10) NULL,
Country nvarchar(15) NULL,
Phone nvarchar(24) NULL,
Fax nvarchar(24) NULL,
PRIMARY KEY (CustomerID)
);
-- Orders テーブルのスキーマ
CREATE TABLE Orders (
OrderID int NOT NULL IDENTITY(1,1),
CustomerID int NOT NULL,
EmployeeID int NULL,
OrderDate datetime NULL,
RequiredDate datetime NULL,
ShippedDate datetime NULL,
ShipVia int NULL,
Freight decimal(18,2) NULL,
ShipName nvarchar(40) NULL,
ShipAddress nvarchar(60) NULL,
ShipCity nvarchar(15) NULL,
ShipRegion nvarchar(15) NULL,
ShipPostalCode nvarchar(10) NULL,
ShipCountry nvarchar(15) NULL,
PRIMARY KEY (OrderID),
FOREIGN KEY (CustomerID) REFERENCES Customers (CustomerID)
);
このコードを実行すると、Northwind
データベースに Customers
と Orders
という 2 つのテーブルが作成されます。
テーブルのスキーマ
-
Customers
テーブル:CustomerID
: 主キーCompanyName
: 会社名ContactName
: 担当者名...
: 以下省略
-
Orders
テーブル:OrderID
: 主キーCustomerID
: 顧客 ID (Customers テーブルのCustomerID
と関連付け)EmployeeID
: 担当社員 ID
以下のクエリを実行することで、データベースのスキーマを確認できます。
SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME IN ('Customers', 'Orders');
このクエリを実行すると、Customers
と Orders
テーブルに関する情報が表示されます。
テーブルの構造を変更する場合は、ALTER TABLE ステートメントを使用します。
ALTER TABLE Customers
ADD COLUMN EmailAddress nvarchar(100) NULL;
このコードは、Customers
テーブルに EmailAddress
という新しい列を追加します。
DROP TABLE Customers;
データベースとスキーマを理解するための他の方法
- データベース設計の基礎 (第3版) - 吉田 真希 著
- SQL Server 2019 データベース管理者のための教科書 - マイクロソフト社 編著
オンラインチュートリアル
ビデオチュートリアル
- データベース管理ツール: SQL Server Management Studio (SSMS) を使用して、データベースとスキーマを視覚的に管理することができます。
sql-server database sql-server-2005