mysql - 如何在 CakePHP 中创建具有多个 hasMany 关联的 mysql 表?

标签 mysql cakephp database-design uuid polymorphic-associations

我正在定义一个全新的数据库。我现在遇到了一个问题 我会形容为“平常”但仍然找不到好的 来自网络的信息。那么问题来了:

我的数据库中有很多表(我将其描述为指南),例如:

  • 技能
  • 地点
  • 事件
  • 等等...

现在,对于所有这些指南类型,我想添加一个评论功能,并且 其他类似功能,如附加图像和视频。我有很多指南类型,所以我放弃了为每一种指南提供单独的评论图像和视频表的想法。我需要为他们每个人准备一张 table 。

问题是,实现这一目标的最佳方法是什么?我听说过和阅读过 3 种解决方案,但我对它们都不熟悉。

  1. 我读过有关使用 UUID 可以解决此问题的信息,但我不太熟悉它们的工作原理。如果这是正确的方法,有人可以详细说明吗? Something about UUIDs I read but not quite understood it .

  2. 我读到的另一件事是创建一个包含关联链接的分层模型“树表”。更多信息,请访问 Managing Hierarchical Data in MySQL .

  3. 我还阅读了有关在 MySQL 中以类似分层模型的方式创建对象表和使用对象继承等程序的内容。

UUID 听起来很简单,所以我很感激能提供帮助。

我对如何使用它们一无所知。但这就是我认为它的工作原理 - 至少你会明白我在这里试图实现的目标以及我对它们的误解/误解:

  • 我会创建一个新表:Guides,它可以有 UUID 字段。
  • 然后将所有这些指南类型(技能等)链接到指南表(指南作为 parent ,另一个作为 child )
  • Parent 和 Child 都有 UUID 字段,在创建指南时,Parent 和 Child 获得相同的 UUID,因此可以链接它们。 Child 也有自己的 Id 字段。
  • 然后使用指向 Guide 的 UUID 字段加上单独的评论 id int 字段将评论链接到 Guides。

请告诉我这是正确的方法还是完全是垃圾,如果是这样,我应该怎么做?

最佳答案

您是否考虑过使用普通的 hasMany 关系和条件? Read about it here .

class Skill extends AppModel {
  var $hasMany = array(
    'Comment' => array(
      'className'     => 'Comment',
        'conditions'    => array('Comment.type' => 1), // 1 for skills, 2 for places etc. or something like that.
      )
    );  
}

关于mysql - 如何在 CakePHP 中创建具有多个 hasMany 关联的 mysql 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4729075/

相关文章:

mysql - 联合 MySQL 查询

php - Laravel 中的计数函数机制

unit-testing - 如何访问 CakePHP 2 测试用例中的夹具数据?

php - Left Join 标记表

sql - 在数据库中存储大量时间序列的有效方法是什么?

php - 从 php 更新 sql 表中的字段

php - Yii - 手动设置模型的表名

php - cakephp 什么时候太多了?

cakephp - Cakephp 1.3 和 PHP 5.3.2 的时区和更多问题

sql - 数据库 - 表之间的关系