1

我有一个带有表的数据库,其中一列是“project_stmt”,它存储文本数据。我已将数据类型设置为 varchar(1000) 但有时使用项目语句的输入文本超过 100K 字符等非常大,在这种情况下数据不会存储到数据库中,

一种解决方案是使用 BLOB 数据类型,但在这种情况下,我浪费了很多空间,因为 80% 的“project_stmt”用户输入将低于 500 个字符.....所以我想存储“project_stmt”的用户输入文本到第二个表,例如分配数据链接,,,,我该怎么做

CREATE TABLE projects (user_id int(11),
                    project_id int(11) NOT NULL AUTO_INCREMENT,
                    project_title varchar(25) NOT NULL,
                    project_stmt varchar(1000) NOT NULL,
                    PRIMARY KEY (`project_id`),
                    FOREIGN KEY (`user_id`) REFERENCES `user_info` (`user_id`)
                    );
4

2 回答 2

0

创建一个新表。

CREATE TABLE projects_blob (project_blob_id int(11) NOT NULL AUTO_INCREMENT,
                    project_id int(11),
                    project_stmt blob NOT NULL,
                    PRIMARY KEY (`project_blob_id`),
                    FOREIGN KEY (`project_id`) REFERENCES `projects` (`project_id`)
                    );

插入新条目时,检查 project_stmt 长度,如果 > 1000,则在 blob 表中进行插入。选择 project_stmt 时,使用此表进行左连接,而不是使用 projects.project_stmt

COALESCE(projects_blob.project_stmt, projects.project_stmt) AS project_stmt

这应该够了吧

于 2014-09-26T09:38:21.537 回答
0

您可以选择数据类型“文本”,因为您不知道项目声明的输入大小。或者您可以使用“max”(例如 max='1000')标签来限制输入字段中的用户。

希望这能解决您的问题。

于 2014-09-26T09:36:55.153 回答