MySQL数据库架构。。创建一个属性表,这些属性对于不同的表是通用的,以便将来更容易编辑

MySQL数据库架构。。创建一个属性表,这些属性对于不同的表是通用的,以便将来更容易编辑,mysql,database-design,Mysql,Database Design,我是DB设计的新手。我目前正在设计一个具有 客户表: 姓名|电话|电子邮件|密码|地址|一|地址|二|城市|街道|邮政|国家 出口表: 姓名|电话|地址|一|地址|二|城市|街道|邮政|国家 科目表: 姓名|电话|地址|一|地址|二|城市|街道|邮政|国家 将地址1、地址2、城市、街道、邮政和国家分开到一个名为“地址表”的新表中是一个好主意吗。尽管他们的关系是一对一的,就像下面提到的 地址表: 地址一|地址二|城市|街道|邮政|国家 我之所以希望将其拆分为一个新表,是因为在代码级别,我希望创建一

我是DB设计的新手。我目前正在设计一个具有

客户表:

姓名|电话|电子邮件|密码|地址|一|地址|二|城市|街道|邮政|国家

出口表:

姓名|电话|地址|一|地址|二|城市|街道|邮政|国家

科目表:

姓名|电话|地址|一|地址|二|城市|街道|邮政|国家

将地址1、地址2、城市、街道、邮政和国家分开到一个名为“地址表”的新表中是一个好主意吗。尽管他们的关系是一对一的,就像下面提到的

地址表:

地址一|地址二|城市|街道|邮政|国家


我之所以希望将其拆分为一个新表,是因为在代码级别,我希望创建一个模型,并拥有特定于地址表的方法。因此,将来当地址模型的任何属性发生更改时,我可以单独更改此表,它将更改提到的所有三个表Customer、Outlet和Account。而不是添加单个字段。

从性能角度看-不,这不是最好的主意

尽管它只会在相当大的数量和/或非常苛刻的响应时间要求下弹出

从体系结构的角度来看,尤其是当地址可以被超过1个引用实体重用,和/或以任何方式单独处理时——是的,这是有意义的(这似乎或多或少是您的情况)


基本上,您已经在问题中回答了自己的问题。:-)

你会怎么处理这个地址?你能简单地把字段转移到信封里吗?如果仅此而已,它可以是一列,其中包含新行

或者你会在某个国家寻找销售点吗

一方面,布局架构中需要的列很重要。另一方面,考虑将应用于模式的查询非常重要

无论如何,1:1很少是个好主意


如果您这样做,您的地址表需要一个
自动递增主键

我需要搜索某个国家/地区的门店。该地址将用于计算lat long,检查客户和门店的距离,将与城市或州有关的所有门店分组。我计划对模式中的所有表使用UUID;从长远来看,他们有几个问题。根据所有行检查一个客户的lat/lng距离会很慢。你希望有多少行?无论如何,这是另一个问题的主题。是的,我同意。这是另一个话题。我预计会有几十万行。我正在考虑在服务器端进行lat/long计算。因此,假设客户从一个门店订购,我将检索客户和门店,两者都有一个子地址表。然后使用它们计算横向/纵向。这样就不需要针对所有行检查一个客户的lat/long,对吗?谢谢Yuri。我还从性能角度考虑,每次创建查询时都会有一个连接。然后我意识到从你的观点来看,我需要检查表的使用频率与表数据的更改频率。复制数据是有意义的,因为表的使用频率将高于数据的更改。再次感谢。