Rumah  >  Artikel  >  pangkalan data  >  Amalan reka bentuk jadual MySQL: Buat jadual tahap keahlian dan naik taraf jadual rekod

Amalan reka bentuk jadual MySQL: Buat jadual tahap keahlian dan naik taraf jadual rekod

WBOY
WBOYasal
2023-07-02 16:03:102913semak imbas

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.

1. Buat jadual tahap keahlian

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作为表名,并定义了四个字段: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;

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 bernama upgrade_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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn