Maison  >  Article  >  base de données  >  Pratique de conception de table MySQL : créer une table de niveau d'adhésion et mettre à niveau la table d'enregistrement

Pratique de conception de table MySQL : créer une table de niveau d'adhésion et mettre à niveau la table d'enregistrement

WBOY
WBOYoriginal
2023-07-02 16:03:102919parcourir

Pratique de conception de tables MySQL : créer une table de niveaux d'adhésion et une table d'enregistrement de mise à niveau

Lors du développement d'applications de système d'adhésion, nous devons souvent concevoir un système de niveaux d'adhésion pour diviser les membres en différents niveaux et enregistrer leur historique de mise à niveau. Dans MySQL, nous pouvons réaliser cette fonction grâce à une conception de table raisonnable. Cet article vous expliquera comment créer une table de niveaux d'adhésion et une table d'enregistrement de mise à niveau, et fournira des exemples de code correspondants.

1. Créer un tableau des niveaux d'adhésion

Le tableau des niveaux d'adhésion est utilisé pour stocker des informations relatives aux différents niveaux d'adhésion, telles que les noms des niveaux, les exigences en matière de points, les taux de remise, etc. Nous pouvons créer une table nommée member_grade via le code suivant : 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作为表名,并定义了四个字段:idgrade_namemin_pointsdiscountid字段用于唯一标识每个等级,我们设置其为自增主键。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的表,并定义了五个字段:idmember_idold_grade_idnew_grade_idupgrade_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表中插入一些示例数据,以便后续的操作和查询。以下是插入示例数据的代码:

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());

上面的代码中,我们使用了两个INSERT INTO语句,分别向member_grade表和upgrade_history表中插入数据。在member_grade表中,我们插入了四条会员等级的信息,包括等级名称、最低积分要求和折扣比例。在upgrade_history表中,我们插入了三条升级记录,包括会员ID、升级前的等级ID、升级后的等级ID和升级时间。

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;

Dans le code ci-dessus, nous avons utilisé member_grade comme nom de table et défini quatre champs : id , grade_name, min_points et remise. Le champ id est utilisé pour identifier de manière unique chaque niveau, et nous le définissons comme une clé primaire à incrémentation automatique. Le champ grade_name est utilisé pour stocker le nom de la note, le champ min_points est utilisé pour indiquer le minimum de points requis pour la note, et la remise code> indique le nombre de points requis pour la note Taux de remise, stocké en type DECIMAL. <h3></h3>2. Créez un tableau d'enregistrement de mise à niveau<p></p>Le tableau d'enregistrement de mise à niveau est utilisé pour stocker l'historique de mise à niveau du membre, enregistrant le niveau vers lequel le membre a été mis à niveau et l'heure de la mise à niveau. Nous pouvons créer une table nommée <code>upgrade_history par le code suivant :

rrreee

Dans le code ci-dessus, nous créons une table nommée upgrade_history et définissons cinq champs : id, <code>member_id, old_grade_id, new_grade_id et upgrade_time. Le champ id est utilisé pour identifier de manière unique chaque enregistrement de mise à niveau, et nous le définissons comme une clé primaire à incrémentation automatique. Le champ member_id est utilisé pour stocker l'ID du membre, le champ old_grade_id représente l'ID de note avant la mise à niveau, le champ new_grade_id représente l'ID de note après upgrade, upgrade_time représente l'heure de mise à niveau et est stocké en utilisant le type DATETIME.

Il est à noter que nous utilisons une clé étrangère dans la table upgrade_history pour l'associer au champ id de la table member_grade, et le membre doit également l'être. Le champ id est associé au champ id dans la table members. Afin de simplifier le code, la définition de la table members est omise ici. Vous pouvez la définir en fonction de la situation réelle. 🎜🎜3. Insérer des données🎜🎜Ensuite, nous insérerons quelques exemples de données dans la table member_grade et la table upgrade_history pour les opérations et requêtes ultérieures. Voici le code pour insérer des exemples de données : 🎜rrreee🎜Dans le code ci-dessus, nous utilisons deux instructions INSERT INTO, respectivement pour la table member_grade et upgrade_history<.>Insérer des données dans le tableau. Dans la table <code>member_grade, nous avons inséré quatre informations sur le niveau d'adhésion, notamment le nom du niveau, le minimum de points requis et le taux de remise. Dans la table upgrade_history, nous avons inséré trois enregistrements de mise à niveau, dont l'ID de membre, l'ID de niveau avant la mise à niveau, l'ID de niveau après la mise à niveau et l'heure de la mise à niveau. 🎜🎜4. Interroger le niveau d'adhésion et les enregistrements de mise à niveau🎜🎜Grâce à la conception du tableau et à l'insertion de données ci-dessus, nous pouvons effectuer certaines opérations de requête pour obtenir des informations pertinentes sur les niveaux d'adhésion et les enregistrements de mise à niveau. Voici quelques exemples de requêtes courants : 🎜🎜Requête du niveau d'adhésion et des informations sur les réductions🎜rrreee🎜L'instruction de requête ci-dessus renverra les noms de niveau, les exigences minimales de points et les taux de réduction de tous les niveaux d'adhésion dans la table member_grade. . 🎜🎜Interroger l'enregistrement de mise à niveau d'un utilisateur🎜rrreee🎜L'instruction de requête ci-dessus renverra l'enregistrement de mise à niveau de l'utilisateur avec l'ID de membre 1, y compris le nom d'utilisateur, le niveau avant la mise à niveau, le niveau après la mise à niveau et l'heure de la mise à niveau. 🎜🎜Grâce à l'exemple ci-dessus, nous pouvons voir que grâce à une conception raisonnable de table MySQL, nous pouvons implémenter une table de niveau d'adhésion et mettre à niveau une table d'enregistrement pour stocker les informations sur le niveau d'adhésion et l'historique des mises à niveau. Ces conceptions de tables peuvent nous aider à mieux gérer le système d'adhésion et à fournir les fonctions de requête correspondantes. 🎜🎜Bien sûr, en fonction des besoins réels et de la logique métier, vous devrez peut-être ajuster et étendre davantage la structure du tableau. Dans des applications pratiques, vous pouvez également combiner d’autres tables pour implémenter un système de niveaux d’adhésion plus complexe. J'espère que les exemples et les idées fournis dans cet article pourront vous aider à concevoir et à mettre en œuvre un système de niveaux d'adhésion entièrement fonctionnel dans MySQL. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn