ホームページ >データベース >mysql チュートリアル >MySQL テーブル設計の実践: メンバーシップ レベル テーブルの作成とレコード テーブルのアップグレード
MySQL テーブル設計の実践: メンバーシップ レベル テーブルとアップグレード記録テーブルの作成
メンバーシップ システム アプリケーションを開発する場合、メンバーをさまざまなレベルに分割し、アップグレード履歴を記録するためにメンバーシップ レベル システムを設計する必要があることがよくあります。 。 MySQL では、合理的なテーブル設計を通じてこの機能を実現できます。この記事では、メンバーシップ レベル テーブルとアップグレード レコード テーブルを作成する方法と、対応するコード例を紹介します。
メンバーシップ レベル テーブルは、レベル名、ポイント要件、割引率など、さまざまなメンバーシップ レベルに関連する情報を保存するために使用されます。次のコードを使用して、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 つのフィールドを定義しました: id
、grade_name
、min_points
、および discount
。 id
フィールドは各レベルを一意に識別するために使用され、自動インクリメントする主キーとして設定します。 grade_name
フィールドはグレードの名前を保存するために使用され、min_points
フィールドはグレードに必要な最低ポイントを示すために使用され、discount
フィールドは次のことを示しますグレードの割引率。格納には DECIMAL 型を使用します。
アップグレード レコード テーブルは、メンバーのアップグレード履歴を保存するために使用され、メンバーがアップグレードされたレベルとアップグレードの時間を記録します。次のコードにより、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 つのフィールドを定義します。 ##id、
member_id、
old_grade_id、
new_grade_id、および
upgrade_time。
id フィールドは、各アップグレード レコードを一意に識別するために使用され、自動インクリメントされる主キーとして設定されます。
member_id フィールドはメンバーの ID を保存するために使用され、
old_grade_id フィールドはアップグレード前のグレード ID を表し、
new_grade_id フィールドはアップグレード後のグレード ID を表します。 ##upgrade_time
このフィールドはアップグレード時間を表し、DATETIME 型を使用して保存されます。
テーブルの外部キーを使用して、member_grade
テーブルの id
フィールドに関連付けていることに注意してください。メンバーの id
フィールドは、members
テーブルの id
フィールドに関連付けられます。コードを簡略化するために、ここでは members
テーブルの定義を省略していますが、実際の状況に応じて定義できます。 3. データの挿入
テーブルと 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 つの
ステートメントを使用して、member_grade
テーブルと upgrade_history を挿入します。
データをテーブルに挿入します。 member_grade
テーブルには、レベル名、最低ポイント要件、割引率を含む 4 つのメンバーシップ レベル情報を挿入しました。 upgrade_history
テーブルに、メンバー ID、アップグレード前のレベル ID、アップグレード後のレベル ID、およびアップグレード時間を含む 3 つのアップグレード レコードを挿入しました。 4. メンバーシップ レベルとアップグレード レコードのクエリ
クエリ メンバーシップ グレードと割引情報
SELECT grade_name, min_points, discount FROM 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;
上記の例を通じて、合理的な MySQL テーブル設計を通じて、メンバーシップ レベル テーブルとアップグレード レコード テーブルを実装して、メンバーシップ レベル情報とアップグレード履歴を保存できることがわかります。これらのテーブル設計は、メンバーシップ システムをより適切に管理し、対応するクエリ機能を提供するのに役立ちます。
もちろん、実際のニーズとビジネス ロジックに基づいて、テーブル構造をさらに調整および拡張する必要がある場合があります。実際のアプリケーションでは、他のテーブルを組み合わせて、より複雑なメンバーシップ レベル システムを実装することもできます。この記事で説明した例とアイデアが、MySQL で完全に機能するメンバーシップ レベル システムを設計および実装するのに役立つことを願っています。
以上がMySQL テーブル設計の実践: メンバーシップ レベル テーブルの作成とレコード テーブルのアップグレードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。