我需要为在线零售店建立一个附属系统。其数据库 (MySQL) 应为其附属机构提供:
- 时间间隔过滤
- 带有视图、点击及其推荐的附属链接
- 客户和订单(只是计数)
- 产品和产品类别
- 点击率、收益等 - 有些可以通过 PHP 脚本汇总
所以我基本上有两个选择:
- 将所有内容存储在一个表中(以键值对形式)并从该表中提取所有数据
- 在所有东西上制作表格
有人可以解释一下我应该怎么做,两种变体的优缺点是什么?我了解其中涉及一些性能考虑因素,但我没有任何数据可以支持它。
我需要为在线零售店建立一个附属系统。其数据库 (MySQL) 应为其附属机构提供:
所以我基本上有两个选择:
有人可以解释一下我应该怎么做,两种变体的优缺点是什么?我了解其中涉及一些性能考虑因素,但我没有任何数据可以支持它。
如果您希望您的关联公司数据是历史数据,以便他们可以看到它随着时间的推移如何变化,那么单独的表格会更好。
如果您决定永远不想提供它,而只是及时给他们一个快照,那么将其添加到表格中会更好。
就个人而言,我会使用附属 ID 引用的单独表格,这样他们就可以查看他们的信息如何随时间变化的图表。
现在,如果您存储数据,例如,每周存储一个新行,那么您将无法让他们查看每天的变化,或者比您存储的数据更小的其他时间间隔,并且更难根据产品进行过滤,以防他们改变营销方式并希望看到效果。
因此,我会选择选项 3,即按需提取数据,因此用户可以根据需要对其进行过滤,但是,您也可以采用标准方法,每周执行和运行一次,如果这是合理的时间片。
我会将这些结果缓存在 NoSQL 数据库中,主要是因为它可以更快地检索,因为您可以获取 javascript 并将其直接发送给用户。
如果您必须按需提取数据,那么还要将其缓存在 NoSQL 数据库中,因为在您转到实际数据库之前,您首先要查看那里是否可以满足请求。
您还可以允许会员设置他们自己的选择标准,并且每天只执行这些自定义标准,这样他们就不会仅仅为了获取他们的信息而访问真实的数据库。
这是关键,限制会员需要访问真实数据库,将他们的信息放在其他地方,除非您必须访问该数据库,以减少可能影响客户的会员的任何影响。
将所有内容存储在一个表中(以键值对形式)
此方法使用 MySQL 作为键值存储。在这种情况下,您没有明确定义的架构。这是一个优势,因为更改数据模式非常容易。这也是一个缺点,因为您不会注意到数据何时丢失或不一致。
在所有东西上制作表格
这迫使您考虑数据结构,但将所有数据放入表中可能会很麻烦。
我建议你试着做桌子。在项目开始时考虑数据结构是一件好事,制作表格会迫使您正确地构建数据。如果这真的不适合你,你总是可以使用一个表或一些 NoSQL 解决方案。