Database connection 评级系统数据库结构

Database connection 评级系统数据库结构,database-connection,relational-database,rating,rating-system,Database Connection,Relational Database,Rating,Rating System,我有两个实体组。餐馆和用户。用户可以对餐厅进行评级(1-5)。每个用户的评级都应该是可检索的 餐厅(id、姓名、总票数、总投票点数) 用户(id、名称……) 评级(id、餐厅id、用户id、评级值) 我是否需要存储平均值,以便不必每次都计算它?哪个表格是存储平均评分、总投票数、总投票点数的最佳位置?如果将平均值存储在某个地方;它将仅在您上次计算时准确。(即,您有5条评论;然后将平均值存储在某个位置。您又获得5条新评论,然后您保存的平均值不正确) 我的观点是,这种逻辑非常适合中间层。计算平均值不应

我有两个实体组。餐馆和用户。用户可以对餐厅进行评级(1-5)。每个用户的评级都应该是可检索的

餐厅(id、姓名、总票数、总投票点数) 用户(id、名称……)

评级(id、餐厅id、用户id、评级值)


我是否需要存储平均值,以便不必每次都计算它?哪个表格是存储平均评分、总投票数、总投票点数的最佳位置?

如果将平均值存储在某个地方;它将仅在您上次计算时准确。(即,您有5条评论;然后将平均值存储在某个位置。您又获得5条新评论,然后您保存的平均值不正确)

我的观点是,这种逻辑非常适合中间层。计算平均值不应该占用大量资源,也不应该影响性能


如果您真的想将其存储在数据库中;我可能会将它们存储在它们自己的表中,并通过触发器更新这些值。但是,这可能比在中间层计算更占用资源。

某些数据库(例如PostGreSQL)允许您将数组存储为行的一部分。e、 g

create table restaurants (
    ...,
    ratings integer[],
    ...
);
例如,你可以将最后5个评级与餐厅保持在同一行。当你得到一个新的评分时,将旧的评分向左移动,并在末尾添加新的评分,然后计算平均值