我有两个实体组。餐馆和用户。餐厅的评级(1-5)。评估fromeach用户应该是可以检索的。
Resturant(id,name,.....,total_number_of_votes,total_voting_points) 用户(id,name ......)
评分(id,restaurant_id,user_id,rating_value)
我是否需要存储平均值,以便每次都不需要计算?哪个表是存储avg_rating,total_no_of_votes,total_voting_points的最佳位置?
答案 0 :(得分:2)
好吧,如果你将平均值存储在某个地方;它只会在您上次计算时准确无误。 (即您有5条评论;然后将平均值存储在某处。您还会获得5条新评论,然后您保存的平均值不正确)。
我认为这种逻辑非常适合中间层。计算平均值不应该是非常耗费资源的,并且实际上不应该影响性能。
如果你真的想将它存储在数据库中;我可能会将它们存储在自己的表中,并通过触发器更新这些值。但是,这可能比在中间层计算资源更加耗费资源。
答案 1 :(得分:0)
某些数据库(例如PostGreSQL)允许您将数组存储为行的一部分。 e.g。
my_features = ['bedrooms', 'bathrooms', ...]
train, test = train_test_split(h1[my_features], test_size = 0.5, random_state=0)
因此,您可以将最后5个评级与餐厅保持在同一行。当您获得新评级时,将剩余的旧评级洗牌,并在结尾添加新评级,然后计算平均值。