我编写了一个Java程序来保存有关学生访问Internet信息的登录信息,并将该信息保存到数据库中。
我的桌子是这样的:
mysql> desc data_log_test;
+-------------+-------------+------+-----+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+-------------------+-------+
| studentID | varchar(40) | NO | PRI | NULL | |
| details | json | NO | | NULL | |
| date_insert | timestamp | NO | | CURRENT_TIMESTAMP | |
+-------------+-------------+------+-----+-------------------+-------+
将存储在详细信息中的信息应为:
{
"time_login": 1,
"ipInt": 167772160,
"urlAccess": "https://google.com",
"duration": 30
}
此信息将不时更新。
我的问题 - 是否可以在表中仅添加详细信息?
我想要特定的学生ID,它可以有1个以上的详细信息。
谢谢。
如果您希望学生了解更多详细信息,那么您应该实现 ManyToOne 连接(请参阅参考资料)
CREATE TABLE student_detail (
ID varchar(40),
studentID varchar(40),
detail json,
INDEX studentID_idx (studentID),
FOREIGN KEY (studentID)
REFERENCES data_log_test(studentID)
ON DELETE CASCADE
PRIMARY KEY (ID)
)
附注:
- 我建议您将
data_log_test
表重命名为student
,因为它存储学生 - 我建议您将
studentID
student
字段重命名为id
- 此外,我建议您遵循常见的命名约定,例如表名和列应该
named_like_this
,这样就不是studentID
而是student_id
(看看Snake案例)