0

我有一个用 cakephp 编写的带有 mysql 数据库的站点。在我的网站中,我想跟踪每个用户的活动,例如(比如这个网站)如果用户插入一个产品,我想将此活动放入我的数据库中。我有 2 种方法:1)一个名为活动的表,其中包含: - id - user_id - 标题 - 文本 - 类型(活动类型:评论,帖子编辑)

2)更多由活动区分的表 - 表activity_comment - 表activity_post - 表activity_badges

问题是当我进入用户的页面活动时,我可以有不同类型的活动,但我不知道哪种解决方案更好,因为评论有标题和评论,帖子只有文字,徽章的表有一个外部ID(例如)ecc ...请帮助我

4

1 回答 1

2

我对 CakePHP 不熟悉,但从纯粹的数据库角度来看,您的数据模型应该类似于:

在此处输入图像描述

在此处输入图像描述符号表示类别(又名继承、子类、子类型、泛化层次结构等)。查看ERwin 方法指南中的“子类型关系”以获取更多信息。

通常有 3 种策略来实现该类别:

  1. 单个表中的所有类型。这需要大量的 NULL 并且需要 CHECK 来确保单独的子类型不会被不恰当地“混合”。
  2. 单独表中的所有具体类型(不包括基础,在您的情况下为 ACTIVITY),这意味着公共字段和关系必须在所有子表中重复。
  3. 单独表中的所有类型(包括基础)。此实现需要更多的 JOINing,但灵活且干净。它应该是您的默认设置,除非有强烈的反对理由。
于 2012-07-12T23:28:33.057 回答