ホームページ >データベース >mysql チュートリアル >MySQL テーブル設計の実践: メンバーシップ レベル テーブルの作成とレコード テーブルのアップグレード

MySQL テーブル設計の実践: メンバーシップ レベル テーブルの作成とレコード テーブルのアップグレード

WBOY
WBOYオリジナル
2023-07-02 16:03:102939ブラウズ

MySQL テーブル設計の実践: メンバーシップ レベル テーブルとアップグレード記録テーブルの作成

メンバーシップ システム アプリケーションを開発する場合、メンバーをさまざまなレベルに分割し、アップグレード履歴を記録するためにメンバーシップ レベル システムを設計する必要があることがよくあります。 。 MySQL では、合理的なテーブル設計を通じてこの機能を実現できます。この記事では、メンバーシップ レベル テーブルとアップグレード レコード テーブルを作成する方法と、対応するコード例を紹介します。

1. メンバーシップ レベル テーブルを作成する

メンバーシップ レベル テーブルは、レベル名、ポイント要件、割引率など、さまざまなメンバーシップ レベルに関連する情報を保存するために使用されます。次のコードを使用して、member_grade という名前のテーブルを作成できます:

CREATE TABLE member_grade (
  id INT(11) NOT NULL AUTO_INCREMENT,
  grade_name VARCHAR(50) NOT NULL,
  min_points INT(11) NOT NULL,
  discount DECIMAL(4,2) NOT NULL,
  PRIMARY KEY (id)
);

上記のコードでは、テーブル名として member_grade を使用し、4 つのフィールドを定義しました: idgrade_namemin_points、および discountid フィールドは各レベルを一意に識別するために使用され、自動インクリメントする主キーとして設定します。 grade_name フィールドはグレードの名前を保存するために使用され、min_points フィールドはグレードに必要な最低ポイントを示すために使用され、discount フィールドは次のことを示しますグレードの割引率。格納には DECIMAL 型を使用します。

2. アップグレード レコード テーブルの作成

アップグレード レコード テーブルは、メンバーのアップグレード履歴を保存するために使用され、メンバーがアップグレードされたレベルとアップグレードの時間を記録します。次のコードにより、upgrade_history という名前のテーブルを作成できます:

CREATE TABLE upgrade_history (
  id INT(11) NOT NULL AUTO_INCREMENT,
  member_id INT(11) NOT NULL,
  old_grade_id INT(11) NOT NULL,
  new_grade_id INT(11) NOT NULL,
  upgrade_time DATETIME NOT NULL,
  PRIMARY KEY (id),
  FOREIGN KEY (member_id) REFERENCES members(id),
  FOREIGN KEY (old_grade_id) REFERENCES member_grade(id),
  FOREIGN KEY (new_grade_id) REFERENCES member_grade(id)
);

上記のコードでは、upgrade_history という名前のテーブルを作成し、次の 5 つのフィールドを定義します。 ##idmember_idold_grade_idnew_grade_id、および upgrade_timeid フィールドは、各アップグレード レコードを一意に識別するために使用され、自動インクリメントされる主キーとして設定されます。 member_id フィールドはメンバーの ID を保存するために使用され、old_grade_id フィールドはアップグレード前のグレード ID を表し、new_grade_id フィールドはアップグレード後のグレード ID を表します。 ##upgrade_timeこのフィールドはアップグレード時間を表し、DATETIME 型を使用して保存されます。

upgrade_history

テーブルの外部キーを使用して、member_grade テーブルの id フィールドに関連付けていることに注意してください。メンバーの id フィールドは、members テーブルの id フィールドに関連付けられます。コードを簡略化するために、ここでは members テーブルの定義を省略していますが、実際の状況に応じて定義できます。 3. データの挿入

次に、後続の操作と問い合わせのために、サンプル データを

member_grade

テーブルと upgrade_history テーブルに挿入します。以下は、サンプル データを挿入するコードです。 <pre class='brush:mysql;toolbar:false;'>INSERT INTO member_grade (grade_name, min_points, discount) VALUES ('普通会员', 0, 1.00), ('银卡会员', 1000, 0.95), ('金卡会员', 5000, 0.90), ('钻石会员', 10000, 0.80); INSERT INTO upgrade_history (member_id, old_grade_id, new_grade_id, upgrade_time) VALUES (1, 1, 2, NOW()), (2, 1, 3, NOW()), (3, 2, 4, NOW());</pre> 上記のコードでは、2 つの

INSERT INTO

ステートメントを使用して、member_grade テーブルと upgrade_history を挿入します。 データをテーブルに挿入します。 member_grade テーブルには、レベル名、最低ポイント要件、割引率を含む 4 つのメンバーシップ レベル情報を挿入しました。 upgrade_history テーブルに、メンバー ID、アップグレード前のレベル ID、アップグレード後のレベル ID、およびアップグレード時間を含む 3 つのアップグレード レコードを挿入しました。 4. メンバーシップ レベルとアップグレード レコードのクエリ

上記のテーブル設計とデータ挿入を通じて、いくつかのクエリ操作を実行して、メンバーシップ レベルとアップグレード レコードに関する関連情報を取得できます。一般的なクエリの例をいくつか示します。

クエリ メンバーシップ グレードと割引情報

SELECT grade_name, min_points, discount FROM member_grade;

上記のクエリ ステートメントは、

member_grade

テーブル内のすべてのメンバーシップ グレードのグレード名を返します。 , 最低ポイント要件と割引率。 ユーザーのアップグレード レコードをクエリする

SELECT 
  u.member_id,
  m.username,
  old_grade.grade_name AS old_grade,
  new_grade.grade_name AS new_grade,
  u.upgrade_time
FROM upgrade_history u
LEFT JOIN member_grade old_grade ON u.old_grade_id = old_grade.id
LEFT JOIN member_grade new_grade ON u.new_grade_id = new_grade.id
LEFT JOIN members m ON u.member_id = m.id
WHERE u.member_id = 1;

上記のクエリ ステートメントは、ユーザー名、アップグレード前レベル、アップグレード後を含む、メンバーシップ ID 1 のユーザーのアップグレード レコードを返します。レベルとアップグレード時間。

上記の例を通じて、合理的な MySQL テーブル設計を通じて、メンバーシップ レベル テーブルとアップグレード レコード テーブルを実装して、メンバーシップ レベル情報とアップグレード履歴を保存できることがわかります。これらのテーブル設計は、メンバーシップ システムをより適切に管理し、対応するクエリ機能を提供するのに役立ちます。

もちろん、実際のニーズとビジネス ロジックに基づいて、テーブル構造をさらに調整および拡張する必要がある場合があります。実際のアプリケーションでは、他のテーブルを組み合わせて、より複雑なメンバーシップ レベル システムを実装することもできます。この記事で説明した例とアイデアが、MySQL で完全に機能するメンバーシップ レベル システムを設計および実装するのに役立つことを願っています。

以上がMySQL テーブル設計の実践: メンバーシップ レベル テーブルの作成とレコード テーブルのアップグレードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。