我目前正在尝试设计一个数据库,但我不太确定处理我的对象之一的动态大小数组字段的最佳方法。我的第一个想法是使用对象中的列来存储整数数组。然而,我读得越多,我就越认为这不是最好的选择。具体示例,我有一个播放器对象,它存储 0 到多个项目,这些项目由整数表示。表示这一点的最佳方式是什么?
如果该值集合是原子,则将它们存储在一起。意思是,如果您始终关心整个组,如果您从不搜索嵌套值并且从不按嵌套值排序,那么它们应该作为单个字段值存储在一起。
如果不是原子的,它们应该存储在一个单独的表中,每个值带来一行,每个值分配另一个表上记录的父ID(外键),该表“拥有”它们作为一个组。
例如,来自科学仪器的一组读数仅作为分析集合一起使用,应该一起存储在一个字段中。相比之下,经常需要查询单个号码的客户电话号码列表可能应该分解为相关子表中每行的单个电话号码。
有关更多信息,请搜索术语“数据库规范化”。
某些数据库支持数组作为数据类型。例如,Postgres允许您将列定义为一维数组,甚至是二维数组。
如果您的数据库不支持数组作为列定义类型,那么您可能有三种选择: