【问题标题】:MySQL DB structure, need clarificationMySQL DB结构,需要说明
【发布时间】:2012-03-15 03:50:22
【问题描述】:

我正在设计一个网站,您可以在其中上传带有描述等的游戏,并存储他们的评分。我是唯一可以提供评级的人,所以我不需要第二个数据库。

但是,会有无限轮的比赛,所以我想将 Round # 存储在数据库的列中。另一个要求是每一轮都有自己的信息,所以我将制作第二张表,其中包含 Round_Number,然后是其他字段,如描述、截止日期等。

这是我目前的数据库架构想法:

Entries ( Comp #, Entry # AutoInc, Password, 
    Entry Date, Author Contact, Description, Screenshot, Website )
Competitions ( Comp #, Theme, Entries, Start Date, Finish Date, Prize )

因此,参赛者可以离开参加 Comp # 上的比赛,以获取有关其比赛的更多信息。这些看起来最有效吗?没有帐户系统(或用户表),每个条目只有自己的密码用于编辑。

【问题讨论】:

  • 一个参赛作品可以有多于一场比赛吗?我认为是的。一场比赛可以有多个参赛作品吗?我假设没有。如果我的假设是正确的,我会从 Entries 表中删除 Comp # 并将 Competitions 表上的 Entries 更改为 Entry。
  • 糟糕,我应该提到,条目是条目的数量。每个比赛可以有多个参赛作品,但每个参赛作品只能用于一场比赛。我会跟踪参赛作品的数量,这样以后当我想跟踪我的比赛的受欢迎程度时就不必进行计数了。
  • 哦,好吧...所以“条目”是回合。如果是这样的话,我觉得这个结构很好。

标签: php mysql database schema


【解决方案1】:

我会进一步考虑这一点。对于不同的参赛作品和比赛,您可能会有不同的屏幕截图。您不妨定义一个关系模式并添加用户帐户以进行身份​​验证。定义三个表:

CREATE TABLE USERS_T ( account_id number, username varchar, password data_type, author varchar, .... )

CREATE TABLE COMPETITIONS_T ( comp_id number, description varchar, theme varchar, #entries number- not needed, just count by id in ENTRIES_T table start_date date, finish_date date, prize varchar, ... )

CREATE TABLE ENTRIES_T ( account_id number, comp_id number, entry_date date, descr varchar, screenshot blob, website varchar, ... )

每场比赛可以有多个参赛作品,但每个参赛作品只能用于一场比赛。

在 ENTRIES_T 表上添加主键:PRIMARY KEY (account_id, comp_id)

您甚至可以更进一步,定义主题表、cmets 表等。我想您会明白的。希望这可以帮助。祝你好运!

【讨论】:

  • 将屏幕存储为 blob 是个好主意吗?我将如何输出它们?将 URL 存储到屏幕截图有什么好处?
  • 这完全是您的判断,我只是将其用作示例。我会说,如果你有可用的空间,就让它成为一个 blob。我总是看到带有外部图像的网站被引用,并且它们在整个地方留下了巨大的 X,外部链接最终失效。如果你有资源,你可以自己提供数据,看起来更干净。
  • 这是真的。我只是想知道接受他们上传的图像并将它们作为文件或 blob 存储在本地是否有好处。这些文件更容易服务器,我肯定知道,但我猜 blob 可能更安全?
  • 是的,文件系统在某些情况下同样足够或更好。将图像存储在文件系统上肯定会减轻数据库的负载,性能因平台而异,有些比其他更有利。无论哪种方式,如果从同一服务器加载,如果从同一服务器加载,带宽差异将是微不足道的。您是直接连接到数据库还是使用 SOA?您使用什么技术来服务您的网站? PHP、JSP、Servlet、Spring 等。
  • PHP 与 MySQL。我总是希望我的图像有一点安全性,以防我希望某些只对某些用户可见。所以我可能会将它们存储在我的数据库中。
猜你喜欢
  • 1970-01-01
  • 2014-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多