为轮询添加数据库模式的效率

问题描述 投票:0回答:0

创建数据库模式的新手,并制定了一个我想做的(在 mysql 中)用于创建和投票的民意调查。我最初的想法在这个帖子中得到了很好的解决,但是我还有一个可能有助于提高性能的因素,我想知道是否值得付出努力。

这个想法是为电影创建民意调查。这是我开始的地方,非常简单:

table user:
id INT
username VARCHAR
password VARCHAR

table poll:
id INT
title VARCHAR
user_id INT (foreign key)

table options:
id INT
content VARCHAR
votes INT
poll_id INT (foreign key)

table votes:
id INT
user_id INT (foreign key)
option_id INT (foreign key)

(选项的投票字段只是为了通过搜索投票表来消除额外的数据库调用以计算总票数)

好的,事情是这样的:假设这是一个关于电影投票的应用程序(这是你在这个定义的群体中最喜欢的,诸如此类),很可能会重复使用从投票到投票的选项。例如,您可能会在多项民意调查中找到教父。我的目的是联系 iMDB API 以获取任何给定电影的 iMDB 页面、维基百科页面和 YouTube 预告片的链接(如果存在)。因此,如果 Jaws 在 100 个民意调查中,我宁愿第一次获取所有这些数据,然后供将来使用。

我正在考虑添加...

table stored_options
id INT
title VARCHAR
year INT
imdb_id VARCHAR
wiki_link VARCHAR
youtube_link VARCHAR

...然后向表选项添加一个字段

stored_id INT (foreign key)
以将选项链接到它们存储的信息。并不完美,因为搜索正确记录的最佳方式是什么?一个民意调查发布者可能会参考教父第二部分和另一个教父2.

我想到的另一个选择是丰富选项表...

table options:
id INT
content VARCHAR
year INT
imdb_id VARCHAR
(etc)
votes INT
poll_id INT (foreign key)

...然后让 stored_options 完全相同,并以某种方式使这些存储的选项以某种方式在界面中对用户可用。然后克隆一个存储的选项,并根据需要将其插入到选项中。

我觉得有点不知所措,正在寻找一些关于我是否正朝着正确方向前进的指导。谢谢!

mysql schema
© www.soinside.com 2019 - 2024. All rights reserved.