如何在数据库中存储地址
How to store address in database
我正在开发一个 CRM 应用程序,用于存储与我们合作的公司的一些数据。例如:首席执行官的姓名和总部的实际地址。我经常需要查找位于特定城市的公司,然后按街道名称对搜索结果进行排序。
我知道正确的解决方案很可能是整数类型的地址列,它将指向地址 table,它本身将包含其他列,如州、城市、街道、housing_number, office_number 所有这些本身要么是指向相关 tables(城市、州、街道)的整数,要么是最终数据(housing_number、office_number).
问题不仅仅在于我更愿意table处理一两个链接的tables,而不是在 3、4 之间使用困难的 JOIN(比如我之前假设的设计)甚至更多 tables,而且我真的不明白不做这样的事情的意义:
| 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和关系数据库中感觉舒适table,就像计算机科学中的一切一样,这都是效率问题,table 有多大?请记住,在 SQL 中,引擎总是绘制所有列,即使您在 SELECT
中发出一些列,如果您的数据类型更重(占用更多内存字节的字符等),那么显然table会越来越重。如果您的用途只是通过 id(主键)吸引用户,那么无论查询有多大,您的查询都不会真正变慢。
这完全是一个缩放问题,以及在构建数据时您将如何处理这些数据,就像您为未来计划的第一个建议,但您牺牲了现在的时间。
类似数据库应用程序的实际架构,可能用作样板文件:
我正在开发一个 CRM 应用程序,用于存储与我们合作的公司的一些数据。例如:首席执行官的姓名和总部的实际地址。我经常需要查找位于特定城市的公司,然后按街道名称对搜索结果进行排序。
我知道正确的解决方案很可能是整数类型的地址列,它将指向地址 table,它本身将包含其他列,如州、城市、街道、housing_number, office_number 所有这些本身要么是指向相关 tables(城市、州、街道)的整数,要么是最终数据(housing_number、office_number).
问题不仅仅在于我更愿意table处理一两个链接的tables,而不是在 3、4 之间使用困难的 JOIN(比如我之前假设的设计)甚至更多 tables,而且我真的不明白不做这样的事情的意义:
| 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和关系数据库中感觉舒适table,就像计算机科学中的一切一样,这都是效率问题,table 有多大?请记住,在 SQL 中,引擎总是绘制所有列,即使您在 SELECT
中发出一些列,如果您的数据类型更重(占用更多内存字节的字符等),那么显然table会越来越重。如果您的用途只是通过 id(主键)吸引用户,那么无论查询有多大,您的查询都不会真正变慢。
这完全是一个缩放问题,以及在构建数据时您将如何处理这些数据,就像您为未来计划的第一个建议,但您牺牲了现在的时间。
类似数据库应用程序的实际架构,可能用作样板文件: