我正在开发一个CRM应用程序,该应用程序存储与我们合作的公司有关的一些数据。例如:CEO的名称和总部的实际地址。我经常需要查找位于特定城市的公司,然后按街道名称对搜索结果进行排序。
我知道适当的解决方案很可能类似于整数类型的地址列,该地址列将指向地址表,该地址表本身将包含其他列,如州,城市,街道,房屋编号,办公室编号,所有这些都将本身可以是指向相关表(城市,州,街道)的整数,也可以是最后一个数据(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解决方案。
答案 0 :(得分:0)
听你的第一个命题是书本解决方案的正确,但是它确实需要在SQL和关系数据库中感到自在,就像计算机科学中的一切一样,这都是效率问题,规模有多大桌子会吗?请记住,在SQL中,即使您在SELECT
中发出一些列,引擎也会始终绘制所有列,如果您的数据类型更重(字符占用更多的内存字节等),那么表显然会变得更重更重。如果您的使用仅通过id(主键)吸引用户,那么无论查询多大,它都不会真正变慢。
所有这些都是扩展性的问题,以及在构建数据时将如何处理这些数据,就像您的第一个建议一样,您计划未来,但现在却会浪费时间。
答案 1 :(得分:0)