mySQLデータベーススキーマを作成するためのビギナーズガイド

mySQLデータベーススキーマを作成するためのビギナーズガイド

ソフトウェアプロジェクトを開発する場合、最も重要で基本的かつ本質的な側面の1つは、適切に構造化されたデータベーススキーマです。これは、家を建てるときに基礎が適切に敷設されていることを確認する必要があるのと同じです。そうしないと、高品質の家を建てる可能性が大幅に低下します。





想像以上に簡単に、うまく設計されたデータベーススキーマを作成するために使用されるさまざまな側面を学びましょう。





hotmailアカウントを閉じる方法

CREATETABLE構文

まず、お気に入りのテキストエディタを開きます。データベーススキーマの作成には、プレーンテキストファイルしか必要ありません。データベースは複数のテーブルで構成され、各テーブルは列で構成され、CREATETABLE構文を使用して単一のテーブルが作成されます。基本的な例は次のとおりです。






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つの列で構成されています。これは、で始まるかなり単純なSQLステートメントである必要があります CREATE TABLE 、その後にデータベーステーブルの名前が続き、括弧内にテーブルの列がコンマで区切られています。

正しい列タイプを使用する

上に示したように、テーブルを構成する列はコンマで区切られます。各列の定義は、次の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
);

上記は少し気が遠くなるように見えるかもしれませんが、心配する必要はありません、それは非常に簡単です。分解すると、上記のステートメントで何が起こっているかがわかります。





  • テーブルの速度とパフォーマンスを向上させるために、可能なすべての列で常にNOTNULLを使用する必要があります。これは単に、行が挿入されたときに列を空/ nullのままにできないことを指定します。
  • 速度とパフォーマンスの向上に役立つため、常に列サイズをできるだけ現実的に小さくするようにしてください。
  • NS id columnは整数であり、テーブルの主キーでもあり、一意であることを意味し、レコードが挿入されるたびに1ずつ増加します。これは通常、作成するすべてのテーブルで使用する必要があるため、テーブル内の任意の1行を簡単に参照できます。
  • NS 状態 列はENUMであり、値が「アクティブ」または「非アクティブ」である必要があります。値が指定されていない場合、新しい行は「アクティブ」のステータスで始まります。
  • NS 残高 列は、新しい行ごとに0から始まり、小数点以下2桁でフォーマットされた量です。
  • NS 生年月日 列は単なるDATEですが、作成時に生年月日がわからない場合があるため、null値も使用できます。
  • 最後に、 created_at 列はTIMESTAMPであり、デフォルトでは行が挿入された現在の時刻になります。

上記は、適切に構造化されたデータベーステーブルの例であり、今後の例として使用する必要があります。

次のようなリレーショナルデータベースを使用する最大の利点の1つ 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;

最後の行としてFOREIGNKEY句があります。この行は、このテーブルに、によってリンクされている子行が含まれていることを示しています。 ユーザーID 親行への列、つまり id の列 ユーザー テーブル。これが意味するのは、行がから削除されるときはいつでも ユーザー テーブル、mySQLは自動的にすべての対応する行をから削除します 注文 データベース内の構造的整合性を確保するのに役立つテーブル。

また、 engine = InnoDB 上記のステートメントの最後に。 InnoDBがデフォルトのmySQLテーブルタイプになりましたが、常にそうであるとは限りませんでした。カスケードはInnoDBテーブルでのみ機能するため、これは安全のために追加する必要があります。

ドライブウィンドウをワイプする方法10

自信を持ってデザイン

これで、堅固で適切に構造化されたmySQLデータベーススキーマの設計に向けて順調に進んでいます。上記の知識を使用して、パフォーマンスと構造の整合性の両方を提供する、適切に編成されたスキーマを作成できるようになりました。

スキーマを配置したら、これらでスキーマを使用する方法を知っていることを確認してください 重要なSQLコマンド

共有 共有 つぶやき Eメール SQL結合を使用して複数のデータベーステーブルを一度にクエリする方法

SQL結合を使用してクエリを合理化し、時間を節約し、SQLパワーユーザーのように感じさせる方法を学びます。

次を読む
関連トピック 著者について マットディザック(18の記事が公開されました) MattDizakのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください