首页 > 解决方案 > JSON:向 MySQL 添加新的 json 数据

问题描述

我编写了一个 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 个详细信息。

谢谢你。

标签: javaweb-services

解决方案


如果你想让学生有更多的细节,那么你应该实现一个多对一连接(见参考

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)
)

PS:

  • 我建议您将data_log_test表重命名为,student因为它存储学生
  • 我建议您将studentID字段重命名studentid
  • 另外我建议您遵循常见的命名约定,例如表名和列不应该named_like_this这样studentID但是student_id(看看Snake case

推荐阅读