\r\n\r\n
ソフトウェアプロジェクトの開発において、最も重要かつ基本的で本質的な側面の1つが、適切に構造化されたデータベーススキーマです。これは、家を建てるときに、基礎工事がきちんとできていないと、質の高い家が建つ可能性が大きく減ってしまうのと同じことです。
ここでは、構造化されたデータベース・スキーマを作成するためのポイントを紹介します。
まず、お好きなテキストエディタを開いてください。データベーススキーマを作成するのに必要なのは、プレーンテキストファイルだけです。データベースは、それぞれがカラムからなるいくつかのテーブルから構成されており、CREATE TABLE構文は、単一のテーブルを作成するために使用されます。以下は基本的な例です。
CREATE TABLE users (id INT NOT NULL,is_active TINY INT NOT NULL,full_name VAR CHAR(100) NOT NULL,email VARCHAR(100) NOT NULL);ご覧の通り、これによって4つのカラムからなるUSERSというデータベース・テーブルが作成されます。これは、CREATE TABLEで始まり、データベース・テーブルの名前が続き、テーブルのカラムが括弧の中にカンマで区切られている、かなり単純なSQL文であるべきです。
上に示したように、テーブルにはカンマで区切られた列がある。各列の定義は、3つの同じ部分から構成されている。
COL_NAME TYPE [OPTIONS]列の名前、列のタイプ、オプションのパラメータの順で指定します。オプションのパラメータについては後で説明しますが、ここではカラムのタイプに焦点を当てます。
どう考えても、上記のカラムタイプは、うまく構築されたmySQLデータベーススキーマを書くために必要なものです。
以下は、CREATE TABLE文の別の例です。
CREATE TABLE users (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,username VARCHAR(100) NOT NULL UNIQUE,status ENUM('active','inactive') NOT NULL DEFAULT 'active',balance DECIMAL(8,2) NOT NULL DEFAULT 0,date_of_birth DATETIME,created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP);上記は少し怖く感じるかもしれませんが、心配いりません、簡単です。分解すると、上記の文章で起こったことは次のとおりです。
上記は、後ほど例に挙げるべき、よく構造化されたデータベーステーブルの例である。
mySQLのようなリレーショナルデータベースを使用する最大の利点は、外部キー制約とカスケード接続を非常に強力にサポートしていることです。これは、2つのテーブルをカラムで結んで親子関係を作り、親の行を削除すると、必要な子の行も自動的に削除されることを意味します。
一例として
CREATE TABLE users (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,username VARCHAR(100) NOT NULL UNIQUE,full_name VARCHAR(100) NOT NULL,created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP) engine=InnoDB;CREATE TABLE orders (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,userid INT NOT NULL,amount DECIMAL(8,2) NOT NULL,product_name VARCHAR(200) NOT NULL,FOREIGN KEY (userid) REFERENCES users (id) ON DELETE CASCADE) engine=InnoDB;外部キー節が最後の行であることに気づくでしょう。この行は、このテーブルが、usersテーブルのidカラムである親行とuseridカラムでリンクされた子行を含むことを単に示しています。つまり、users テーブルから行が削除されるたびに、mySQL は orders テーブルから対応するすべての行を自動的に削除し、データベースの構造的整合性を確保するのです。
InnoDBは現在ではmySQLのデフォルトのテーブルタイプであるが、常にそうであったわけではないので、カスケードはInnoDBテーブルにのみ適用されるので、念のため追加しておくべきである。
これで、信頼性が高く、構造化されたmySQLデータベーススキーマを構築するための道筋が整ったことになります。以上の知識を活用すれば、性能と構造的な完全性を兼ね備えた、よく整理されたスキーマを書くことができるようになります。
スキーマを作成した後は、基本的なSQLコマンドを使用してスキーマの使用方法を確認してください。