Rumah > Artikel > pangkalan data > Amalan reka bentuk jadual MySQL: Buat jadual tahap keahlian dan naik taraf jadual rekod
Amalan reka bentuk jadual MySQL: Cipta jadual peringkat keahlian dan tingkatkan jadual rekod
Apabila membangunkan aplikasi sistem keahlian, kami selalunya perlu mereka bentuk sistem peringkat keahlian untuk membahagikan ahli kepada tahap yang berbeza dan merekodkan sejarah naik taraf mereka. Dalam MySQL, kita boleh mencapai fungsi ini melalui reka bentuk jadual yang munasabah. Artikel ini akan memperkenalkan anda kepada cara membuat jadual tahap keahlian dan jadual rekod naik taraf serta memberikan contoh kod yang sepadan.
Jadual tahap keahlian digunakan untuk menyimpan maklumat yang berkaitan dengan tahap keahlian yang berbeza, seperti nama tahap, keperluan mata, nisbah diskaun, dsb. Kita boleh mencipta jadual bernama gred_ahli
melalui kod berikut: 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;Dalam kod di atas, kami menggunakan
gred_ahli
sebagai nama jadual dan mentakrifkan empat medan : id
, gred_name
, min_points
dan diskaun
. Medan id
digunakan untuk mengenal pasti secara unik setiap peringkat dan kami menetapkannya sebagai kunci utama yang meningkat secara automatik. Medan gred_name
digunakan untuk menyimpan nama gred, medan min_points
digunakan untuk menunjukkan mata minimum yang diperlukan untuk gred dan diskaun kod> medan menunjukkan bilangan mata yang diperlukan untuk nisbah Diskaun, disimpan menggunakan jenis DECIMAL. <h3></h3>2. Buat jadual rekod naik taraf<p></p>Jadual rekod naik taraf digunakan untuk menyimpan sejarah naik taraf ahli, merekodkan tahap mana ahli telah dinaik taraf dan masa naik taraf. Kita boleh mencipta jadual bernama <code>upgrade_history
dengan kod berikut: rrreee
Dalam kod di atas, kami mencipta jadual bernamaupgrade_history
dan mentakrifkan lima medan: id, <code>id_ahli
, old_grade_id
, new_grade_id
dan upgrade_time
. Medan id
digunakan untuk mengenal pasti secara unik setiap rekod naik taraf dan kami menetapkannya sebagai kunci utama peningkatan automatik. Medan member_id
digunakan untuk menyimpan ID ahli, medan old_grade_id
mewakili ID gred sebelum naik taraf, medan new_grade_id
mewakili ID gred selepas naik taraf, upgrade_time
mewakili masa naik taraf dan disimpan menggunakan jenis DATETIME. Perlu diambil perhatian bahawa kami menggunakan kunci asing dalam jadual upgrade_history
untuk mengaitkannya dengan medan id
pada jadual gred_ahli
dan ahli juga harus Medan id
dikaitkan dengan medan id
dalam jadual ahli
. Untuk memudahkan kod, takrifan jadual ahli
ditinggalkan di sini Anda boleh mentakrifkannya mengikut situasi sebenar. 🎜🎜3 Sisipkan data🎜🎜Seterusnya, kami akan memasukkan beberapa data sampel ke dalam jadual gred_ahli
dan jadual upgrade_history
untuk operasi dan pertanyaan seterusnya. Berikut ialah kod untuk memasukkan data sampel: 🎜rrreee🎜Dalam kod di atas, kami menggunakan dua penyata INSERT INTO
, masing-masing pada jadual gred_ahli
dan upgrade_historyMasukkan data ke dalam jadual. Dalam jadual <code>gred_ahli
, kami memasukkan empat maklumat tahap keahlian, termasuk nama tahap, keperluan mata minimum dan nisbah diskaun. Dalam jadual upgrade_history
, kami memasukkan tiga rekod peningkatan, termasuk ID ahli, ID tahap sebelum naik taraf, ID tahap selepas naik taraf dan masa naik taraf. 🎜🎜4. Tahap keahlian pertanyaan dan rekod peningkatan🎜🎜Melalui reka bentuk jadual di atas dan sisipan data, kami boleh melakukan beberapa operasi pertanyaan untuk mendapatkan maklumat yang berkaitan tentang tahap keahlian dan rekod peningkatan. Berikut ialah beberapa contoh pertanyaan biasa: 🎜🎜Tahap keahlian pertanyaan dan maklumat diskaun🎜rrreee🎜Pernyataan pertanyaan di atas akan mengembalikan nama peringkat, keperluan mata minimum dan nisbah diskaun semua peringkat keahlian dalam jadual gred_ahli
. 🎜🎜Soal rekod naik taraf pengguna🎜rrreee🎜Pernyataan pertanyaan di atas akan mengembalikan rekod naik taraf pengguna dengan ID ahli 1, termasuk nama pengguna, tahap sebelum naik taraf, tahap selepas naik taraf dan masa naik taraf. 🎜🎜Melalui contoh di atas, kita dapat melihat bahawa melalui reka bentuk jadual MySQL yang munasabah, kita boleh melaksanakan jadual tahap keahlian dan jadual rekod naik taraf untuk menyimpan maklumat tahap keahlian dan sejarah naik taraf. Reka bentuk jadual ini boleh membantu kami mengurus sistem keahlian dengan lebih baik dan menyediakan fungsi pertanyaan yang sepadan. 🎜🎜Sudah tentu, berdasarkan keperluan sebenar dan logik perniagaan, anda mungkin perlu melaraskan dan mengembangkan lagi struktur jadual. Dalam aplikasi praktikal, anda juga boleh menggabungkan jadual lain untuk melaksanakan sistem tahap keahlian yang lebih kompleks. Saya harap contoh dan idea yang disediakan dalam artikel ini dapat membantu anda mereka bentuk dan melaksanakan sistem tahap keahlian berfungsi sepenuhnya dalam MySQL. 🎜Atas ialah kandungan terperinci Amalan reka bentuk jadual MySQL: Buat jadual tahap keahlian dan naik taraf jadual rekod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!