postgres数据库中多个值的最佳类型?

时间:2011-03-25 02:39:40

标签: database postgresql schema

你好 我有一个包含数千个城市的postgres数据库。我想为每个(每个城市多达1000个)分配一个未指定数量的字母数字代码。最有效的方式是什么?感谢

2 个答案:

答案 0 :(得分:1)

根据您的问题,您可以创建一个城市表,通过它的声音已经拥有该表,并创建一个代码表并创建一个city_code表。在city_code表上创建一个返回city的外键,从city_code创建一个外键到代码表。确保在外键上有索引以获得性能。

对于数据类型,您可以在代码表列上创建适用于您的内容。如果您不知道可以使用TEXT的长度,并且如果您在某些时候需要将其约束为固定大小,则可以在TEXT列上设置检查约束。对于你所要求的事情,重要的是规范化。这是通过创建city_code和代码表来完成的。没有正当理由不要去标准化。在大多数情况下,通常很难找到合理的理由。

答案 1 :(得分:1)

如果每个代码对应一个城市,则有两种可能性:

  • 执行此操作的标准方法是使用带有serial主键的城市名称表,然后是将字母数字代码与序列号相关联的表(当然,使用适当的外键约束)
  • 如果没有其他内容指的是城市名称且不存在用户输入错误的风险,您还可以创建一个包含字母数字代码列和相应城市的单个表格。

如果代码可以映射到多个城市,则标准方法是使用城市名称表和字母数字代码表,每个代码表都有serial个主键,然后是第三个表映射主键的表表到另一个主键(当然有两个外键)。如果字母数字代码足够短,您可以用int或bigint(即4到8个字节)对它们进行编码,则可以使用该编码来存储它们,而不是使用单独的映射表。