我正在尝试设计一个MySQL数据库来存储用户的邮政编码首选项,以提供特定的服务。例如,作为水管工的用户A愿意前往x,y和z邮政编码提供服务。
我一直在考虑实现此问题的各种方式,而可伸缩性非常重要。另外,我想在邮政编码和城市名称之间建立映射。

一种设计方法是创建一个巨大的表,每列代表一个邮政编码,并且每一行将存储一个带有邮政编码首选项的用户条目。但是当我添加邮政编码并说成千上万的用户时,这将如何扩展?我认为它的伸缩性不好,但是实现起来很简单。

另一种方法是通过具有一个主表和一堆辅助表来使其具有层次结构。辅助表用于说县的邮政编码,而主表则充当辅助表的密钥。我认为这样做可以更好地扩展,因为可以分配表,但是由于用户可以存储在多个表中,因此可能会有一些冗余。

无论如何,我将不胜感激任何可以帮助我解决问题的想法,想法或替代设计。问题实际上归结为,我应该如何设计它,为什么?

更新:
我有一个包含用户信息的单独表。我正在尝试为用户的邮政编码首选项设计表。

最佳答案

我建议对您当前的方法进行一些改进。

使用支持地理空间数据索引的数据库,例如PostgreSQL和Postgis。然后,除了邮政编码之外,还要存储邮政编码的坐标。

因此,当问您的水管工他想提供哪个邮政编码时,您将能够提取附近的邮政编码。同样,当用户查询数据库时,您将可以在附近区域拉水管工。

关于mysql - 如何为基于邮政编码的服务设计MySQL数据库?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6149156/

10-13 03:07