Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 即使一个表有一对一的关系,也可以拆分它的数据吗?_Mysql_Database Design - Fatal编程技术网

Mysql 即使一个表有一对一的关系,也可以拆分它的数据吗?

Mysql 即使一个表有一对一的关系,也可以拆分它的数据吗?,mysql,database-design,Mysql,Database Design,我们使用商品网站,卖家上传商品,买家在我们的网站上注册手机号码后可以看到他们的联系方式。买方获取卖方详细信息的每个此类潜在客户/交易都存储在Leads表中,如下所示: LeadId | CustomerId LeadId: Primary, Auto-increment key of this table. CustomerId: Foreign key of CustomerTable. 现在我们要跟踪哪个线索来自哪个来源。为此,我们需要几个跟踪参数,如:sourceId、activiti

我们使用商品网站,卖家上传商品,买家在我们的网站上注册手机号码后可以看到他们的联系方式。买方获取卖方详细信息的每个此类潜在客户/交易都存储在Leads表中,如下所示:

LeadId | CustomerId
LeadId: Primary, Auto-increment key of this table.

CustomerId: Foreign key of CustomerTable.
现在我们要跟踪哪个线索来自哪个来源。为此,我们需要几个跟踪参数,如:
sourceId、activitid、platformId..
和其他几个”

虽然lead和这些跟踪参数有一对一的关系,但将它们放在一起是否有意义,或者我们应该为这些参数设置单独的表格: 示例:包含所有这些跟踪参数的LeadTracking表

注意:这是一个过于简化的示例。我们实际上有几个Lead和LeadTracking列

我们可以将它们保存在单独的表中吗?我们应该如何决定何时拆分这些表?

从逻辑上讲,跟踪列可能都位于leads表中(根据您对它们的描述,它们是1-1)

您可以使用一个或两个表来实现数据结构;这是一个实现决策

你为什么要这样做?以下是一些原因:

  • 如果很多潜在客户都没有跟踪信息,为什么还要有很多空栏呢?这样的栏既会让用户感到困惑,也会占用数据页上的额外空间
  • 如果跟踪列特别宽(或很多),那么额外的空间可能会影响不使用它们的查询的性能
  • 如果跟踪列经常更新,那么将它们放在单独的表中有助于防止锁定减慢查询速度
  • 如果跟踪列可能正在更改,但leads列是稳定的,那么您可能希望将这些列隔离到更可能更改的表中
  • 如果跟踪列具有不同的安全性要求,则在表基础上指定安全性比在列基础上指定安全性更容易
毫无疑问,还有其他原因。当我学习这个过程时,它被称为“垂直分区”,因为表按列(垂直)而不是按行(水平)来“拆分”原始数据。

从逻辑上讲,跟踪列可能都在leads表中(根据您对它们的描述,它们是1-1)

您可以使用一个或两个表来实现数据结构;这是一个实现决策

你为什么要这样做?以下是一些原因:

  • 如果很多潜在客户都没有跟踪信息,为什么还要有很多空栏呢?这样的栏既会让用户感到困惑,也会占用数据页上的额外空间
  • 如果跟踪列特别宽(或很多),那么额外的空间可能会影响不使用它们的查询的性能
  • 如果跟踪列经常更新,那么将它们放在单独的表中有助于防止锁定减慢查询速度
  • 如果跟踪列可能正在更改,但leads列是稳定的,那么您可能希望将这些列隔离到更可能更改的表中
  • 如果跟踪列具有不同的安全性要求,则在表基础上指定安全性比在列基础上指定安全性更容易

毫无疑问,还有其他原因。当我学习这个过程时,它被称为“垂直分区”,因为表按列(垂直)而不是按行(水平)来“拆分”原始数据.

你创建了一个网站,人们可以上传他们的整个汽车?太棒了!你创建了一个网站,人们可以上传他们的整个汽车?太棒了!