数据库设计 – 活动流/提要,否定正规化?
我知道这个问题的变化已经被多次询问(我已经阅读过,其中2个是:
1,2),但是我只是不能把我的头包裹在任何只是觉得正确的解决方案.
一切都被建议从许多关系,到多态关联,NoSQL解决方案,消息队列,非正规化和它们的组合. 我知道这个问题是非常情况的,所以我将简要解释一下我的: 许多活动引发许多事件. >以下,创建,喜欢,评论,编辑,删除等 >用户可以按照其他用户的活动(他们触发的事件). >需要查看过去事件的能力. >通过日期描述排序不需要对Feed进行排序或搜索. 同时,我结束了一个非规范化设置,基本上由一个由id,date,user_id,action,root_id,object_id,object,data组成的事件表组成. user_id是触发事件的人员. 然后为了获得所需的事件,我只是抓住所有的行,其中user_id是正在抓取的流被跟随的用户的id. 它的工作,但非正规化只是感觉错误.多态关联似乎也是如此.扇出似乎在两者之间,但感觉很杂乱. 随着我在这个问题上的所有搜索,并且在这里阅读了许多问题,我根本无法点击任何东西,感觉到正确的解决方案. 任何人可以提供的任何经验,洞察力或帮助都非常感激.谢谢. 解决方法我从未处理过社交活动Feed,但根据您的描述,他们与维护棘手的业务活动日志非常相似.就个人而言,我倾向于使用单独的表来管理适用的活动类型,每种类型的修订/日志表,以及每个更新中央事件日志表的引用. 后者允许构建Feed,并且看起来像您提出的解决方案:event_id,event_at,event_name,event_by,event_summary,event_type. (event_type字段是包含表或对象的名称的varchar.) 您可能不需要维护您的案例中的所有内容的历史(肯定这不适合于朋友的请求而不是销售和库存变动),而是维护某种中央事件日志表(除了其他适用的表有正确的数据在手)是,我认为,正确的方法. 您可以通过查看审核日志相关问题获得一些有趣的见解: https://stackoverflow.com/search?q=audit+log (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Microsoft SQL Server 2008 基本安装说明
- 关于sqlserver2005的jdbc连接问题
- SQLServer 数据加密解密:将 TDE 保护的数据库移到其他实例
- Sqlserver 2000以单独用户运行
- linq-to-sql – 你能在Linq2Sql类上实现一个接口吗?
- redis的hGetAll函数的性能问题(记Redis那坑人的HGETALL)
- sql-server – 在Entity Framework 4.1 Code First中手动生
- 数据库 – 使用SQLITE与VB6
- SQLSERVER 里的 DECIMAL(18,5) 是什么意思
- 清空MSSQL日志 与set recovery simple