MySQL数据库架构 - 一般问题

时间:2012-02-22 22:33:51

标签: mysql database generics schema

请注意我在数据库设计方面是一个菜鸟,因为我从来没有这样做过。

我为使用Java创建的在线游戏设置了一个网站。当一个玩家退出游戏时,我会在一个名为“highscores”的数据库中名为“highscores”的表中添加一行(或者如果它已经存在则更新一行)......

我的网站上有一个高分页面,它使用php从highscores表中提取数据并将其组织成一个html表,以便玩家可以看到他们的分数,一切都很好。我也通过安装fluxBB(一个论坛系统)在我的网站上建立了论坛,并根据自己的喜好对其进行了修改。

所以在我的PHPMyAdmin中,我总共有5个数据库: information_schema performance_schema mysql highscores 论坛。 我安装了phpmyadmin时添加了前三个数据库,但我没有触及它们。我在安装论坛时创建的论坛数据库;它请求一个数据库来创建表,所以我创建了一个新的数据库来放入所有表。

所以我有一些问题......

  1. 我的数据库是否设置了典型网站的运作方式?如果没有,一个典型的网站将如何与高分和高分?论坛是否设置了自己的数据库?他们的网站有一个数据库,然后是他们游戏的一个数据库吗?

  2. 如果我想添加有关服务器的统计信息,例如“已创建x个帐户数量”或“x个玩家当前在线数量”,我将在哪里存储此信息?我在考虑将highscores数据库重命名为“game”(或我的游戏名称),然后在里面将是“highscores”表和“server_statistics”表。这样好吗?但是“server_statistics”表只有一行保存统计信息......这是正常的吗?

  3. 如果我想在我的网站上添加一个民意调查,我会创建一个名为“民意调查”的新数据库吗?或者我应该有一个名为“网站”的数据库,我会把所有与网站相关的数据放入?但是我有一个“论坛”数据库,那我该怎么做呢?

  4. 网站如何正常发布新闻?如果文章存储在数据库中,他们如何发布新闻以使其显示在主页上?那么会有一个“新闻”数据库吗?

  5. 很难在网上找到通用问题...我试过搜索但是请不要只是将我链接到一篇文章,因为它可能不符合我的情况。

    提前致谢。

2 个答案:

答案 0 :(得分:0)

好吧,因为我们讨论的是一个相对较小的数据库,保存有关网站和游戏的信息,所以最好使用websitegame数据库并在表格之间拆分不同的信息

你认为你没有在这里指出的是你如何保持高分?这些是链接到用户表,论坛用户还是只是高分表中的名称字段?

  1. 由于您使用的是外部论坛系统,我会按原样保留该数据库,只需按照上面的建议创建第二个数据库,以供我的游戏和我的网站使用。

  2. 大多数在线用户的统计数据和帐户数量都不会保存在数据库中,因为这会对DBMS创建不必要的冗余调用,这不是最佳选择。这些很可能是动态创建的,甚至可以使用cron作业更好地创建,并创建一个缓存的统计信息,即使该数字只有几分钟,也会向用户显示。

  3. 再次拥有一个website数据库,然后根据需要在website db中创建其他表,并按原样保留forums数据库。

    < / LI>
  4. 您将看到的大多数网站都有一个中央数据库,其中包含许多表格。 usersnewscommentsreviews

  5. 新闻表架构可以采用以下形式:

    id             int   auto_increment & primary key
    title          varchar(*)
    content        text or big varchar according to your needs
    posted_on      datetime or timestamp
    posted_by      int key representing the authors id
    

    一般情况下,如果您刚开始使用数据库并且有兴趣了解有关最佳实践的更多信息,我首先会阅读一些有关该主题的书籍/文章,这些文章/文章将反过来导致更专业的主题,如数据库关系,规范化和最佳做法。

    除此之外,您会发现通过检查一些在线可用的开源项目(如joomla,wordpress等)来查看其数据库的其他结构以及可以轻松完成的其他结构非常有趣。当你开始环顾四周时,它会变得更容易。

答案 1 :(得分:0)

让我尝试按顺序执行此操作:

  1. 没有一个典型的网站,有软件包被设计为使用某些模式,这就是他们使用的。设置根据需要而有所不同,可能是1个包含多个表的数据库,也可能是多个数据库。
  2. 您需要在某处监控您的用户登录和关闭以及某些帐户的开始日期。如果您出于某种原因分离论坛和高分榜,我建议您也将用户管理分开。
  3. 取决于您的实施。如果您正在使用其他人的产品,您可能已经为您定义了数据库,或者根本没有在您的网站上显示的数据库以及要存储在其他地方的数据。
  4. 我甚至不确定你的意思。当存储新闻时,它们可以存储在数据库中,在这种情况下,为文章检索文本并格式化以供显示,或者它可以是服务器上的文件并且基于存储在数据库和脚本中的ID和链接信息。只需检索并显示它。
  5. 通常,有关于数据库规范化的最佳实践,您应该查看您的站点。但首先我建议检查你的论坛和游戏之间的关系。如果他们彼此不可分割,即如果一个人玩游戏他们参与了forume,反之亦然,那么这些数据库实际上可能更好。