我正在建立一个系统来记录用户的操作,例如购买的商品,添加的朋友,以及其他人。例如,当用户购买某些产品时,您的个人资料中应显示以下消息:
Foo购买了产品A,B,C,D和F.
我可以将整个字符串保存在数据库中,但该网站将使用多种语言,这将使每种语言的记录保持不变。我的想法是使用一个带有所采取操作模板的字符串并将其传递给sprintf
函数,但是,产品数量可能会改变,因此参数的数量也会改变。在这种情况下,我该怎么办?
编辑#1:我的问题与数据库架构无关,我使用的架构是:Databases: Making a Log of actions, how to handle various references?,问题是如何使字符串与sprintf可以根据需要接收尽可能多的参数。
这样的事情:"%s bought the products [magic here]"
答案 0 :(得分:2)
为每个操作提供唯一的代码。将操作存储在名为log
的表中的许多字段中:
user action products
-----------------------------------
Foo BUY A|B|C|D
根据需要将BUY
映射到应用程序中的人类可读描述。
如果需要,您可以将各个产品分开,以实现完全规范化......但如果您不再需要它们,并且它们的表示形式是简洁的ID(其中没有|
!)那么令牌化会很好。