sql-server - 为三个不同的实体添加一个基础实体
问题描述
我有这种情况,我有三个实体Book, Review, comment
并有以下表格:
- 图书
(Id, ReviewCounts)
- 图书翻译
(BookId, LanguageId, IsDefault, Title, Description)
- 评论
(Id, BookId, CommentCounts)
- 审阅翻译
(ReviewId, LanguageId, IsDefault, Content)
- 注释
(Id, ReviewId, Content)
现在,我想在设计中添加另外两个实体,Vote
并且Report
. 投票实体代表用户对前三个实体的投票Book, Comment, Review
。和报告,用户应该能够报告虚假Book
的、不准确Review
的、仇恨和非法Comment
的以及虚假的User
个人资料。
问题是,我现在需要为 vote 添加三个表BookVotes
,CommentVotes
和ReviewVotes
。UserProfileReports
以及报告的四个不同的表格BookReports
,,,,。
ReviewReports
CommentReports
现在,我考虑添加一个基表,可以这么说,称为
Entities
,和另一个表EntityTypes
,其中EntityTypes
包含诸如“Book,Review,Comment”之类的数据。并且相同的主键将在Entity
and Review
orEntity
等Book
等。这样我将解决投票问题,但不是报告,因为用户可以报告作为User
实体的用户配置文件。User
将实体添加到上述三个实体的列表中并从Entities
“基本”表中“派生”它是没有任何意义的。老实说,我认为使用一个“基本”表也没有
Entities
任何意义,因为从概念上讲,书、评论和评论是三个完全不同的实体。所以,我的问题是,我应该或不应该使用“基本”表解决方案,如果是,我应该如何解决报告问题?
解决方案
我不会采用单一的“基础”表的想法。由于单次投票只能针对一本书、一条评论或一条评论,而不能针对多个项目,因此将它们放在单独的表格中对我来说更有意义。报告也一样。
有很多小表的数据库往往比只有几个大表的数据库性能更好,所以除非有建模原因来组合实体,否则我不会这样做。
推荐阅读
- reactjs - React-tsx-以Zip格式下载多个图像文件
- jquery - Jquery 仅将当前选定的值添加到输入
- ruby - 给定一个 HTML 字符串,查找浮动 < > 的最佳方法是什么
- vscode-settings - 使用自定义键盘快捷键导航 vscode 智能感知
- python - PyQt5 功能问题
- html - 页面调整大小时有很多空白
- javascript - 如何从 Google 日历上的一个事件创建连锁事件?
- sql - 为什么这个 pg 查询这么慢?我怎样才能让它更快?
- vuejs2 - 在 nuxt 布局中使用多个 v-app 时是否有任何问题
- asp.net-core - 从角度 7 传递到我的 Asp.net 核心 WebApi 控制器的参数全部为空