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 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.
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
作为表名,并定义了四个字段: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
的表,并定义了五个字段: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类型来存储。
需要注意的是,我们在upgrade_history
表中使用了外键关联到member_grade
表的id
字段,并且还应该将会员的id
字段与members
表中的id
字段进行关联。为了简化代码,这里省略了members
表的定义,您可以根据实际情况进行定义。
接下来,我们将向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和升级时间。
通过以上的表设计和数据插入,我们可以进行一些查询操作,以便获取会员等级及升级记录的相关信息。以下是一些常见的查询示例:
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éeupgrade_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!