mysql - postgresql 中的 ids 数组与多行

标签 mysql postgresql

我来自老派的 mysql,对 postgresql 可以做数组感到惊讶。

过去,假设您有 UserFruit 表。每个用户可以拥有多个水果。为了存储每个用户拥有的水果,我们需要创建第三个表来存储用户和水果 ID。

但是 PostgreSQL 似乎可以在 User 中有一列 fruits 来存储 Fruit.id 数组。

我的问题是,哪个更好?在性能和 future 可能的扩展方面。

最佳答案

这取决于您想如何处理数据。但是,对于您给出的示例,在大多数情况下,联结表是更好的方法。说:

create table UserFruits (
    UserFruitId serial primary key,
    UserId int references users(UserId),
    FruitId int references fruits(FruitId)
);
为什么?因为你可以显式声明外键关系,数据库会在输入数据时验证数据。此外,您可能希望在联结表中包含其他信息,例如添加水果的日期/时间或价格。

如果您有其他类型的列表(例如与其他表无关,而只是列表),那么使用数组会很有意义。从性能角度来看,这取决于您想要对列表执行的操作。但对于许多用途来说,数组速度更快(如果这是一个问题的话)。

关于mysql - postgresql 中的 ids 数组与多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45653220/

相关文章:

MySQL查询数据库的时间段尚未分配

mysql - 通过datagrid View 删除数据mySQL Vb.net

node.js - Sequelize Typescript : Type 'FavoriteEntity[]' is not assignable to type 'FavoriteEntity | null'

sql - 从不同表的列更新表

ruby-on-rails - rake 数据库 :migrate fails in db:structure:dump with no error output

java - Mybatis分组查询超时

c++ - MATLAB 中的 mysql.cpp 编译错误

php - mysql分页以显示其中包含特定行的页面

postgresql - 如何在 postgres 中执行全局异常处理程序?

sql - 选择 postgreSQL 中可用的最准确的数据?