代码之家  ›  专栏  ›  技术社区  ›  thesunneversets

MySQL/CakePHP数据库设计问题

  •  2
  • thesunneversets  · 技术社区  · 14 年前

    我们的房地产应用程序有一个表Events,它在历史上通过Event.Homes\u id列链接到Homes表。

    最近,我们第一次添加了一个事件类型,它不是连接到家庭,而是连接到房地产经纪人。问题:现在向Events表添加realtor\u id列是一种好的做法吗?在我看来,有些东西反对为每个记录设置两个列,home\u id和realtor\u id,其中一个对于任何给定的记录总是为空。我的老板说它效率高,而且避免了创建新表的开销。这种情况有什么是非?

    上述问题的一个推论是:我们不愿意创建新表的部分原因是我们正在使用CakePHP,因此通过SQL连接对多个链接表进行绝对控制变得更加困难(将Cake的recursive属性设置为maximum会降低应用程序的爬行速度。)使用Cake是否会影响数据库设计考虑?还是我们只是做错了蛋糕?

    3 回复  |  直到 14 年前
        1
  •  2
  •   Travis Leleu    14 年前

    一想到 有两列,home\u id和 每个记录的房地产经纪人id,其中一个 对于任何 记录在案。我老板说这是 高效且避免了 正在创建新表。有什么问题

    嗯,你说得对,它的效率可能比最优的要低。但是,添加另一列(INT,不小于)在50%的时间内为null不会影响数据库的整体效率。

    我认为这是可以接受的,虽然你可能不喜欢它的美学。嘿——没人喜欢黑客。它增加了“技术债务”。但谷歌搜索这个词,你会看到很多人都在说 拥抱 技术债务,因为它让你继续前进,而不是试图集中在完美的解决方案(这将逃脱你,尽管尽了最大的努力)。

    这是一个商业决策——你的模式和代码库的美学是否值得你付出代价(你的每小时费率*#小时来“正确”修复它)?在这种情况下,我想说可能不是。

        2
  •  2
  •   Kalium    14 年前

    我的老板说它效率高,而且避免了创建新表的开销。

    我觉得这很可疑。我想你需要一个不同的设计。

    具体来说,我会考虑让房屋和房地产经纪人拥有活动。通过重新构造它,可以避免两个id中的一个有意义的问题。如果你真的需要的话,我会代表房地产经纪人/房屋参加活动,反之则代表多个属于关系。

        3
  •  1
  •   Leo    14 年前

    “我们使用的是CakePHP,因此很难获得绝对控制权”——为什么?

    “(将Cake的recursive属性设置为maximum会将应用程序的速度降低到爬网速度。)”—然后 不要使用递归 ! 可控制的行为做得更好,你可以 你想从多深的地方获取数据。