【发布时间】:2018-01-25 05:37:29
【问题描述】:
我希望就如何解决我必须为使用节点 js 和 SQL 后端构建的审查网站构建数据库获得一些建议。对于这个网站,我们希望对不同用户的某些帖子进行 10 条评论,并获得每个帖子的平均值。唯一的问题是我们希望它保持匿名,因此没有人可以进入表格并编辑或查看结果。数据库的当前架构如下:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(30) NOT NULL,
email TEXT UNIQUE,
password TEXT NOT NULL
admin BOOLEAN
);
CREATE TABLE posts (
id SERIAL PRIMARY KEY,
title VARCHAR(250) NOT NULL,
date DATE NOT NULL,
avg_review INTEGER
)
因此,我想从网站上的提交表单中将数据添加到表中以收集评论数据,以便可以在上面的帖子表中输入以获取 avg_review ,即特定帖子的平均评论数据。我的麻烦是让这个匿名,并使每个用户的投票独一无二。 更新: 我最初的想法是使用以下内容:
CREATE TABLE review (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
post_id INTEGER REFERENCES posts(id),
review_value INTEGER
);
这将填充帖子表中的平均评论数据。但是我不确定如何保持匿名。
我考虑过分成两张表
CREATE TABLE review (
id SERIAL PRIMARY KEY,
post_id INTEGER REFERENCES posts(id),
);
CREATE TABLE votecheck (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
post_id INTEGER REFERENCES posts(id),
);
然后,这将记录投票而不查看是谁做的,并记录用户是否已经为帖子投票,以便稍后检查唯一性。
我想知道是否有更好的方法来做这件事,因为我觉得按照上次发布的方式做,从长远来看,它不允许编辑值和未来的校对。提前道歉,因为我是 SQL 数据库的初学者。任何有关如何更好地处理此问题的建议表示赞赏。访问级别会更好吗?
【问题讨论】:
标签: sql database postgresql schema create-table