【问题标题】:How to store address in database如何在数据库中存储地址
【发布时间】:2019-01-18 12:23:47
【问题描述】:

我正在开发一个 CRM 应用程序,用于存储与我们合作的公司的一些数据。例如:CEO 姓名和其总部的实际地址。我经常需要查找位于特定城市的公司,然后按街道名称对搜索结果进行排序。

我知道正确的解决方案很可能是整数类型的地址列,它将指向地址表,地址表本身将包含其他列,如 state、city、street、housing_number、office_number 所有这些都将它本身可以是指向相关表(城市、州、街道)的整数,也可以是最终的数据(房屋编号、办公室编号)。

问题不仅在于我更喜欢​​使用一两个链接表之类的东西,而不是在 3、4(就像我之前设想的设计)甚至更多表中使用困难的 JOIN,而是而且我真的不明白不做这样的事情的意义:

| id  |      name       |  ceo_name   |    city     |     street       | house  | office |
|-----|-----------------|-------------|-------------|------------------|--------|--------|
|  1  | Company Name 1  | CEO Name 1  | New-York    | 5th Ave          |    22  |     12 |
|  2  | Company Name 2  | CEO Name 2  | New-York    | 44th St.         |    42  |     88 |
|  3  | Company Name 3  | CEO Name 3  | Boston      | Irish Lane       |     2  |     14 |
|  4  | Company Name 4  | CEO Name 4  | Washington  | Tahoe boulevard  |    54  |     19 |

如果我实施这样的解决方案,我会遇到什么问题?我有所有的原子,所以如果需要增加,我可以稍后再实施 3-NF 解决方案。

【问题讨论】:

    标签: sql database-design street-address


    【解决方案1】:

    听听你的第一个命题是正确的书本解决方案,但它确实需要对 SQL 和关系数据库感到自在,就像计算机科学中的一切一样,这都是效率问题,多大桌子会是什么?请记住,在 SQL 中,即使您在 SELECT 中发出一些列,引擎也会始终绘制所有列,如果您将拥有更重的数据类型(占用更多内存字节的字符等),那么显然该表将变得越来越重.如果您的使用仅通过 id(主键)来绘制用户,那么无论查询有多大,您的查询都不会真正变慢。

    这完全是一个扩展问题,以及在构建数据时您将如何处理这些数据,就像您为未来计划的第一个建议一样,但您现在牺牲了时间。

    【讨论】:

    • 好吧,这个数据库中几乎不会有几千行。更有可能是 1500 - 2000 行,其中城市和街道是 utf8_general_ci VARCHAR(40) 字符串。而且我对 SQL 不是很满意,现在我在 PHP + MySQL 中对其进行原型设计只是为了看看事情进展如何,但最终产品将在某个框架中,并将使用某种 ORM,如 ActiveRecord。
    • 如果最大大小为 1500-2000 并且考虑到您将索引您将在其上绘制数据的字段,那么按照您的建议进行操作是没有问题的,但这并不是面向未来的全部。
    【解决方案2】:

    类似数据库应用程序的实际架构,可能用作样板:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 2014-06-21
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 2011-12-29
      相关资源
      最近更新 更多