我正在使用mysql和sqlite创建一个日志系统,目标是最大限度地优化。这导致了一个表结构的畸形,它由于其重复的组而打破了第一个范式。我的意思是:
此系统中的日志格式类似于:
{1} used tool {2} on a {3} created by {4}
每个 {X}
替换为相关信息,以便在客户端上创建信息日志。这允许将日志翻译成不同的语言。我最初的想法是打破第一个范式,使用重复组来存储这些替换。
下面是一个处理和替换日志的示例,它将显示给客户端:
Jeff used tool remover on an entity created by Steven
替换占位符的信息存储在 replacement_X_...
上面屏幕截图中显示的列。
优点:据我所知,这应该比使用单独的表来存储需要连接甚至多个选择的替换要快。
优点:这种结构对搜索功能很友好
优点:这种结构允许快速插入,有很多!
缺点:在我上面的例子中,替换的数量最多是6个,而不是一个可变的数量
缺点:打破了第一个标准形式,使用重复组,通常非常难看,很难进行和处理查询
在这种情况下,打破第一范式是否合理?或者有没有更好的方法来实现这一点,既不会影响性能,也适合mysql和sqlite?
暂无答案!
目前还没有任何答案,快来回答吧!