mysql - 具有多个多对多关系的数据库的高效设计

标签 mysql sql database database-design

我几乎正在构建我的第一个 SQL 数据库,但不确定我是否正在以有效的方式处理事情。我的数据具有以下结构:我有一堆图像,我从每个图像中提取多个特征。一个特征由一个包含一个或多个 float 的向量组成。所以我有图像、特征、向量索引和数据值。

我目前的想法是拥有一个由{image_id,feature_id,vector_index,data_value}组成的表。我猜主键是 {image_id, feature_id, vector_index}。

在我看来,我有多个多对多关系,即多个索引可以对应于单个特征,多个特征可以对应于单个索引,多个图像可以对应于同一特征,多个特征可以对应于相同的图像等。从我的互联网搜索来看,我似乎应该制作链接表以使事情变得更有效率,但我不知道如何做到这一点。任何帮助将不胜感激。

更新:

回顾一下:我有 data_values,它们是 float 。每个数据值都具有属性 image_idfeature_idvector_index。元组 {image_id, feature_id, vector_index} 唯一标识单个 data_value

任何一对属性之间都存在多对多关系: image_id:feature_id, image_id :vector_indexvector_index:feature_id

典型查询:检索与 image_idfeature_id 子集对应的所有数据值。我可能永远不会根据 vector_index 进行过滤。对于我的应用程序,我需要将查询的 data_value 获取到二维矩阵中,其中每行对应于特定的 image_id,每列对应于特定的 { feature_id, vector_index} 元组。

当前计划:摆脱vector_index。相反,使用 JSON 等将每个特征向量转换为单个字符串。使用下表构建数据库:

images: {image_id (PK), image_name}  
features: {feature_id (PK), feature_name}  
data_values: {data_id (PK), image_id (FK), feature_id (FK), data_vector}

最佳答案

有一个表image和一个表feature,并将它们连接到一个具有两列的表image_feature,其中一列是想象另一个是功能的主键。

关于mysql - 具有多个多对多关系的数据库的高效设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27883809/

相关文章:

java - LocalDateTime 删除毫秒

mysql - 性能:mysql 和连接

mysql - 如何模拟MongoDB查询条件中的子查询

javascript - 将 Excel 文件转换为 JSON : design of JSON code check

php - 同一字段上具有两个条件的 Sql 内连接

java - spring中的hibernate不保存mysql数据库

database - 如何从 png 图像创建 TFRecords 文件

与 phpmyadmin 相比,php mysqli 返回不同的行数

mysql - 将同一个月的所有总金额合并并求和?

javascript - (Oracle) 将 us7ascii 转换为 Snowflake?