我正在尝试实现类似于 Facebook 的行为(好吧,最类似于 YouTube)。
在我的表我有不同Products,每个Product可以喜欢或不喜欢的一个Customer。我不想让用户评价(假设在 1 到 5 星之间),所以简单的喜欢或不喜欢就足够了。
代表它的最佳方式是什么?
我考虑了三个基本表格(在 旁边Customers):
Products (身份证,姓名,...)
ProductLikes (Id、CustomerId、ProductId、CreatedOn)
ProductDislikes (Id、CustomerId、ProductId、CreatedOn)
但这意味着有两个数据几乎完全相同的表。
另一个想法是具有以下内容:
Products (身份证,姓名,...)
ProductLikes (Id、CustomerId、ProductId、IsLike、CreatedOn)
但这意味着我以后不能提供第三种状态,如果我决定这样做的话。
我的最后一个想法:
Products (身份证,姓名,...)
ProductRatings (Id、ProductId、CustomerId、评级、CreatedOn)
其中“喜欢”的评分为 5.0,“不喜欢”的评分为 1.0。
我会在你的第二个和第三个选项之间选择一个变体:
Products (Id, Name, ...)
ProductVotes (Id, CustomerId, ProductId, Vote, CreatedOn)
Run Code Online (Sandbox Code Playgroud)
该列Vote应被限制为仅允许值Like,Dislike或者,如果您愿意,1并且-1- 后者具有更简单的可能性来执行sum()喜欢和不喜欢的操作以获得整体投票。