在这种情况下,我有三个实体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
个人资料。
问题是,我现在需要为投票BookVotes
,CommentVotes
和ReviewVotes
添加三个表。以及报告UserProfileReports
,BookReports
,ReviewReports
,CommentReports
的四个不同表格。
Entities
和另一个表EntityTypes
,其中EntityTypes
包含诸如“ Book,Review,Comment”之类的数据。并且相同的主键将位于Entity
和Review
或Entity
和Book
中,依此类推。这样,我将解决投票问题,但不会解决报告问题,因为用户可以报告作为User
实体的用户个人资料。将User
实体添加到上述三个实体的列表中并从Entities
“基本”表中“派生”它也没有任何意义。Entities
也是有意义的,因为从概念上来说,书,评论和注释是三个完全不同的实体。>
因此,我的问题是,应该还是不应该使用“基本”表解决方案,如果可以,那么我应该如何解决报告问题?
答案 0 :(得分:1)
我不会接受单个“基本”表的想法。由于一次投票只能涉及一本书,评论或评论,而不能涉及多个项目,因此将它们放在单独的表格中对我来说更有意义。报告也一样。
具有很多小表的数据库往往比只有几个大表的数据库具有更好的性能,因此,除非有建模方面的理由来合并实体,否则我不会这么做。