Database design 动态通知系统-除了我,其他人觉得这很奇怪吗?
我有一个通知系统的结构,我相信它是相当动态的,尽管我担心我的解决方案可能会打破数据库设计的一些基本规则 通知Database design 动态通知系统-除了我,其他人觉得这很奇怪吗?,database-design,notifications,normalization,Database Design,Notifications,Normalization,我有一个通知系统的结构,我相信它是相当动态的,尽管我担心我的解决方案可能会打破数据库设计的一些基本规则 通知 id notification_type_id data created_at user_id notification_id is_read 用户通知 id notification_type_id data created_at user_id notification_id is_read 我质疑的部分是notifications表中的数据列,它保存构建消息所需的相关数据(
id
notification_type_id
data
created_at
user_id
notification_id
is_read
用户通知
id
notification_type_id
data
created_at
user_id
notification_id
is_read
我质疑的部分是notifications表中的数据列,它保存构建消息所需的相关数据(json格式)。例如,如果通知是针对在帖子上添加的新评论,那么数据将包含帖子的id以及对帖子发表评论以生成必要消息的用户的id
示例:{post\u id:123,user\u id:456}
将生成一条消息“Dumbo回答了您的问题……要花多少钱?”
让一列保存对其他记录的多个引用的想法让我大错特错,但它看起来确实是一个非常动态的选择。如果不是这样的话,我唯一能想到的另一个选择是先生成消息,然后将其存储在数据库中,这对我来说太静态了,因为所有参与的人都会收到相同的消息。是的,如果需要一个规范化的数据库,这看起来很奇怪。如果实体
A
与实体B
存在依赖关系,则必须在A
中输入外键。两个依赖项-相同数量的键我在不同的结构中看到了您案例中的问题,
通知
实体取决于一些通知类型
。这意味着您在数据库中获得了继承。有一些策略允许您为自己的需求创建适当的体系结构。试着比较一下希望我正确理解了这个问题。关系模型允许任意复杂类型。但是如果一个复杂类型有一些内部结构,那么
- dbms忽略它,或者
- dbms(不是用户)提供了操作它的函数李>