如果可能的话,我喜欢到处都有明确的数据。例如,我将创建单独的等级(5、6、7、8 等)和等级 ID(A、B、C 等)字段。这有很多好处。例如:
- 查询所有五年级班级不会像那样导致范围查询
SELECT * FROM table WHERE grade LIKE "5%";
。
- 同样的事情:您可以轻松查询所有“B”类而无需完全扫描(假设您有正确的索引)
另一件事是课程每年都在增加。5B变成6B然后是7B。所以这使得很难找到你正在寻找的课程。我会在现场创建一个开始。发现 2006 年开始的“B”类很容易和明确(再次明确的东西:))
我的建议是:
CREATE TABLE school_class (
id smallint unsigned NOT NULL AUTO_INCREMENT,
start_in smallint unsigned NOT NULL,
grade tinyint unsigned NOT NULL,
grade_id CHAR(1),
PRIMARY KEY (id)
) ENGINE=InnoDB;
CREATE TABLE student (
id mediumint unsigned NOT NULL AUTO_INCREMENT,
class_id smallint unsigned NOT NULL,
name VARCHAR(255),
PRIMARY KEY (id),
FOREIGN KEY (class_id) references school_class(id)
) ENGINE=InnoDB;