繁体   English   中英

sql数据库/ php中的模式值

[英]Pattern Values in sql database/php

我正在研究这个小小的注册系统,我有这个问题,如果我想在我的系统中注册学生,年/ lvl的值应该只增加,例如,一旦注册的Grade1将是2级而不是减少到准备也不到目前为止,我的数据输入是插入varchars的平坦。 我将不胜感激任何帮助我如何进行进展模式以及我的数据库应该如何。 谢谢。

我不建议您使用varchars,你真正的意思是数字。 它让一些东西变得更容易哦。

mysql> create table studentLevels(id int(3) primary key auto_increment, name varchar(100));
Query OK, 0 rows affected (0.02 sec)

mysql> desc studentLevels;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(3)       | NO   | PRI | NULL    | auto_increment |
| name  | varchar(100) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> create table studentEnrolled (studentID int(3),subjectID int(3), grade int(3));
Query OK, 0 rows affected (0.00 sec)

mysql> desc studentEnrolled;
+-----------+--------+------+-----+---------+-------+
| Field     | Type   | Null | Key | Default | Extra |
+-----------+--------+------+-----+---------+-------+
| studentID | int(3) | YES  |     | NULL    |       |
| subjectID | int(3) | YES  |     | NULL    |       |
| grade     | int(3) | YES  |     | NULL    |       |
+-----------+--------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> create table subjects (id int(3), subGrade int(3));
Query OK, 0 rows affected (0.05 sec)

mysql> desc subjects;
+----------+--------+------+-----+---------+-------+
| Field    | Type   | Null | Key | Default | Extra |
+----------+--------+------+-----+---------+-------+
| id       | int(3) | YES  |     | NULL    |       |
| subGrade | int(3) | YES  |     | NULL    |       |
+----------+--------+------+-----+---------+-------+
2 rows in set (0.00 sec)

现在,通过这种结构,您可以很好地识别您的学生,您可以根据需要使用主键进行大量操作(将其链接到其他表,添加您以后不知道的功能 - 以及数据被标准化)。 你有一个整洁的表格来定义学生注册的内容 - 链接回学生。 最后,你有另一个简洁的简洁表,其中包含主题信息。

查看用于查看学生所在位置的grade列,您可以使用以下某个选项:

学生完成课程后,您可以像这样更新成绩:

update 
    studentEnrolled a, 
    subjects b 
set 
    a.grade=b.subGrade 
where 
    a.subjectID=b.id 
    and a.studentID=:ID

以上将使用您的应用程序中的绑定参数,代码将简单地将学生成绩更新为刚刚传递的主题。

如果您希望学生能够返回并选择成绩较低的课程,但又不希望他们的“成绩”下降,您可以轻松修改上述内容:

update 
    studentEnrolled a, 
    subjects b 
set 
    a.grade=b.subGrade 
where 
    a.subjectID=b.id 
    and a.grade<subGrade 
    and a.studentID=:ID

此更新现在只会修改学生获得“成绩”的记录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM