我在MySQL中创建了一张表,希望存储一个名字、一个姓氏和一个双精度浮点数组成的向量,但问题是:如何在MySQL中创建一个向量列呢?我的向量包含130个元素。
我在MySQL中创建了一张表,希望存储一个名字、一个姓氏和一个双精度浮点数组成的向量,但问题是:如何在MySQL中创建一个向量列呢?我的向量包含130个元素。
你可以用两种方式进行操作。
一种简单的方法是创建一个LONGBLOB或LONGTEXT字段,将向量的序列化版本存储在其中。
但从数据库建模的角度来看,这是一种相当丑陋的解决方案,因为DBMS无法执行搜索或对这些向量的内容进行索引。
正确的方法是在1对多关系中使用两个表。
也就是说,你需要一个名为table_A
的表,其结构如下:
CREATE TABLE table_A ( -- records
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name TEXT,
surname TEXT,
PRIMARY KEY (id)
);
还有一个名为table_B
的表格,其中包含向量中的值以及与它们在table_A
中相应记录的关联:
CREATE TABLE table_B ( -- vector values
parent INT UNSIGNED NOT NULL,
id INT UNSIGNED NOT NULL, -- for indexing, in case the order of the vector elements matter
value TEXT,
PRIMARY KEY (parent, id),
FOREIGN KEY (parent) REFERENCES table_A (id) ON DELETE CASCADE ON UPDATE CASCADE
);
工作示例:http://sqlfiddle.com/#!2/79521/2
使用此格式,您可以允许DBMS执行搜索并管理向量的值。
[24, 12, 54, 39, ...]