好的,所以这个问题不是关于编码过程,但更像是一个很好的和干净的方式来编码这个活动列表,我计划构建…
此活动列表将包含页面上的所有活动。
基本上在页面上的所有动作中,它会调用一个函数insertActivity($stuff)
来插入关于那个的活动例如,你刚刚做了某事。
现在我想知道编码的方式,我应该怎么做?
我应该有消息"你刚刚做了什么"在行db或我应该有数字在我的php文件中我定义的数字1代表"你刚刚做了什么"?
与消息不存储在db将帮助我编辑所有活动消息的消息以后,例如,如果消息应该更改为"你刚刚吃了东西"。
我应该像我之前说的那样在动作保存之前/之后调用函数,将此动作记录到活动列表中,或者任何其他更好的方式来做到这一点吗?
我所想到的只是insertActivity()应该只是插入活动到数据库,通过输入($stuff)它得到。
那是…一个不可能的问题。它不是不可能的,因为它很难回答;它不是不可能的,因为它不可能给出一个好答案;它是不可能的,因为有很多很多不同的好答案,没有"正确"的答案。
关于有两个表有很多要说的,一个表只是用于描述,另一个表有一个外键,将引用描述ID。检索值非常简单,如:
SELECT -- your other columns can go here.
(SELECT DESCRIPTION FROM DESCRIPTIONS DE
WHERE DE.ID = DID.DESCRIPTION_ID LIMIT 1) as ACTIVITY
-- I always add a LIMIT in a sub-query...
-- your other columns can go here.
FROM DID_THINGS DID WHERE USER_ID = 1;
MySQL使这种类型的结构更容易一些,如果有一个合理的有限数量的活动(这些是事先知道的)—您应该查看ENUM类型。然而,对于ENUM,这成为修改站点的最烦人的方式。就我个人而言,我喜欢第二个表选项,我经常使用它。如果我想拥有它,以便管理员可以添加诸如"您观看了某些内容"之类的内容,我可以简单地通过web表单公开它,并将数据库的宝贵密钥隐藏在没有人知道它们的地方,包括我。
另一种常见的方法是简单地使用关联数组(或散列,或其他)。这样做的好处是,它可能不涉及数据库连接,它非常简单,测试和调试非常容易和明显。由于这些原因(以及其他原因),在国际化脚本中使用这种方法是非常常见的。问题是,为了向其中一个数组添加内容,您需要实际地去修改文件,然后将文件重新部署到站点的所有版本。这通常是非常简单的事情,但这是一个额外的步骤。允许用户向列表中添加数据是非常困难的(尽管并非完全不可能),而一旦输入数据,编辑数据就更麻烦了。
只存储一个动作的id是个好主意。您还可以创建"actions"表,在其中存储所有可能的操作。
这样可以节省一些磁盘空间,使解决方案更加灵活。
您应该在操作完成后记录操作。这样您就可以验证操作是否成功。
这个问题很笼统,所以很难给出更具体的答案。
看情况
- 将有数百万行?
- 你关心磁盘空间吗?
- 用户有机会看到日志吗?
你应该看看这些依赖关系并考虑一下。