【问题标题】:Should I use multiple databases for single project我应该为单个项目使用多个数据库吗
【发布时间】:2017-12-04 15:26:32
【问题描述】:

我正在开发一个为在线购物网站提供优惠券的网站。 它为印度的购物网站提供折扣券。 但现在客户也想为美国商店提供优惠券。 但是为印度用户提供的优惠对美国用户没有用处,反之亦然。

因此会有两个版本的网站。一个是针对印度用户的,另一个是针对美国用户的。

但是,如果来自印度的用户搜索在印度不可用但在美国可用的优惠。然后它应该会出现在搜索结果中。

现在我正在考虑为美国用户创建一个新数据库,其架构与当前用户(印度用户)的数据库完全相同。

但我想从专家那里得到建议。

【问题讨论】:

  • 是的,这是一种完全可以接受的方法。您也可以只复制已有的表并将 _usa 添加到名称或类似名称中。唯一让我感动的是,如果美国有优惠,应该向印度用户显示,这可能有助于您在同一个数据库中复制表,这样您就可以进行连接等。
  • 您的问题主要是基于意见的..
  • FWIW,我不会这样做。只需一个数据库;印度用户和美国用户通常看到不同的东西并不重要。
  • 也许这回答了一些Working with Databases in Multi module app的问题

标签: mysql database database-design


【解决方案1】:

从长远来看,您可能希望添加更多国家/地区,因此我会通过添加国家表之类的东西来做到这一点,例如针对 offerid 国家/地区 id 的 offer_valid,这将使单个优惠对一个或多个国家/地区有效。 创建多个数据库会使维护工作变得忙碌。

【讨论】:

    【解决方案2】:

    为此创建一个单独的数据库或单独的表(通过将 _usa 添加到表名)没有意义。因为同样可以通过创建一个映射表来实现,该映射表将优惠/优惠券映射到国家/地区它是有效的并且更具可扩展性。

    这是我的建议:

    国家:身份证、姓名

    优惠券:id、姓名、折扣

    coupon_country_mapping:id、country_id、coupon_id、is_active

    【讨论】:

    • 我可以为单个表执行此操作,但总共有 54 个表,如品牌、商店、广告横幅等。所有这些表都存储不同国家/地区独有的数据。例如:某些品牌在印度将在美国不可用,反之亦然。同样,印度也会有一些购物商店(如 Flipkart),但在美国没有。因此为每个表创建一个映射表并不是一件容易的事。
    • 在实体之间存在多对多关系(如CouponCountry)之前,您不需要创建映射表。在其他情况下,您只需在表中添加属性country_id 即可指定该条目有效的国家/地区。
    • 我想为每个表添加 country_id。但是后来我必须更改许多代码行以适应 country_id 列。
    • 这是一次性的工作,但具有很大的可扩展性.. 明天如果您需要添加一个新国家,这将是一项更简单的任务,然后再次创建一个新数据库
    • 1.代码重复 2. 维护开销:假设您要在表中添加新表或新字段,您必须在两个数据库中都这样做。必须复制任何代码更改(查询等)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2018-08-03
    • 2011-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    相关资源
    最近更新 更多