我正在深入修改一些我没有编写的旧日志记录代码,并想知道您对此有何看法。这是一个用 PHP 和 MySQL 编写的事件记录器,它记录如下消息:
Sarah added a user, slick101
Mike deleted a user, slick101
Bob edited a service, Payment
分解成这样:
Sarah [user_id] added a user [message], slick101 [reference_id, reference_table_name]
变成这样的表:
log
---
id
user_id
reference_id
reference_table_name
message
请注意,上述示例消息中的“Bob”和“Payment”是其他表的 ID,而不是实际名称。需要连接才能获取名称。
看起来“reference_table_name”是为了在正确的表中找到正确的名称,因为只存储了reference_id。如果我能以某种方式加入存储在 reference_table_name 中的表名,这可能会很好,如下所示:
select * from log l
join {{reference_table_name}} r on r.id = l.reference_id
我想我明白了他在这个表格布局中的用途——拥有用于统计的 id 而不是将整个消息存储在单个列中(这将需要文本解析)要好得多。现在我想知道..
有没有更好的方法或者是否有可能以某种方式进行虚构加入?
干杯