【发布时间】:2018-08-21 15:02:23
【问题描述】:
我有这种情况,我有三个实体 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 所做的投票。还有报告,用户应该能够报告虚假的Books、不准确的Reviews、仇恨和非法的Comments 和虚假的User 个人资料。
问题是,我现在需要为投票添加三个表格BookVotes、CommentVotes 和ReviewVotes。报告有四个不同的表格UserProfileReports、BookReports、ReviewReports、CommentReports。
现在,我考虑添加一个可以说是
Entities 的基表和另一个表EntityTypes,其中EntityTypes 包含诸如“书籍、评论、评论”之类的数据。并且相同的主键将在Entity 和Review 或Entity 和Book 等等。这样我将解决投票问题,但不是报告,因为用户可以报告一个User 实体的用户配置文件。将User 实体添加到上述三个实体的列表中并从Entities“基础”表中“派生”它是没有任何意义的。老实说,我认为使用一个“基本”表
Entities 也没有任何意义,因为从概念上讲,书、评论和评论是三个完全不同的实体。所以,我的问题是,我应该或不应该使用“基本”表解决方案,如果是,我应该如何解决报告问题?
【问题讨论】:
-
基础实体自然地引入类和子类。这会导致类表继承。
-
@WalterMitty 换句话说,如果实体在继承关系中在概念上不相关,我们不应该使用基础实体,对吧?
-
这不是我想说的。但如果有意义的话,你可以这样看。
标签: sql-server database-design