【发布时间】:2017-09-07 15:38:58
【问题描述】:
我必须将 DOI 存储在 MySQL 数据库中。 handbook 说:
DOI 号的长度没有限制。
到目前为止,我当前数据中 DOI 的最大长度为 78 个字符。为了不浪费存储空间和安全起见,您会推荐哪种字段长度?一般来说:
考虑到空间和事务的效率,您如何处理不知道必须存储在数据库中的输入数据的最大长度的问题?
编辑
这两个(简化的)表document 和topic 具有一对多关系:
CREATE TABLE document
(
ID int(11) NOT NULL,
DOI ??? NOT NULL,
PRIMARY KEY (ID)
);
CREATE TABLE topic
(
ID int(11) NOT NULL,
DocID int(11) NOT NULL,
Name varchar(255) NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (DocID) REFERENCES Document(ID), UNIQUE(DocID)
);
我必须运行以下(简化的)统计查询,返回每个文档引用的主题类别的总值(如果有任何引用):
SELECT COUNT(topic.Name) AS number, document.DOI
FROM document LEFT OUTER JOIN topic
ON document.ID = topic.DocID
GROUP BY document.DOI;
使用的字符集是utf_8_general_ci。
【问题讨论】:
-
此 DOI 号是否有唯一约束? MySQL 服务器会在严格模式下运行吗? FWIW,我认为如果您真的必须容纳例如 65KB 的名称,那么您将不得不忍受某种程度的低效率。
-
DOI 号没有唯一性限制,MySQL 服务器以严格模式运行。
标签: mysql database database-design doi