database - 如何优雅地设计表示 ADDRESS 的数据库模式?

标签 database database-design database-schema

<分区>

我所说的地址仅指正常地址,如国家、州、城市、地区、街道、建筑物,地址可以在其他表(如人员)中有效引用,以便我们可以选择同一城市的人员等等?谢谢。

最佳答案

根据我的经验,您需要国家、州、城市、 zip 、地址。

只有前三/四项方便过滤用户。枚举字段非常适合前两者。接下来的两个最好使用 API 进行验证——这将使您免于维护有效值列表的麻烦。

我还没有遇到任何系统(虽然我假设邮局需要它,连同地理定位)需要将地址部分分块到单独的数据片段中以进行更精确的过滤——另外,每个用户后者有自己的进入方式。

请记住,有些国家/地区没有州;其他人没有邮政编码;并且邮政编码格式因国家/地区而异。

另外请记住,即使一个用户在您的系统中可以有多个地址,您最不想做的就是将多个用户绑定(bind)到同一个 address_id。它们通常更适合作为用户(或他们的公司)的详细信息,或者作为后者的 1-n 相关详细信息;从来没有。否则,UI 问题会迅速蔓延,并且总会有人错误地编辑用户 B 的地址,因为后者恰好与用户 A 共享了该地址。

关于database - 如何优雅地设计表示 ADDRESS 的数据库模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6105713/

相关文章:

php - PDO mysql : How to know if insert was successful

mysql - 2 个客户创建并配置了主从

api - 用于从各种第三方 API 获取和转换数据的后端解决方案

c++ - 数据库表-数据结构设计c++

仅从当前图表进行 MySQL Workbench 正向工程

sql - 什么时候引用完整性不合适?

sql - 查询以按日期列表返回匹配或最近的先前记录

php - 将表与子查询结果连接起来

database - 数据库可变长度文本字段应该是 2 的幂吗?

python - bool 标志字段的模式设计(数据库架构)