请注意我在数据库设计方面是一个菜鸟,因为我从来没有这样做过。
我为使用Java创建的在线游戏设置了一个网站。当一个玩家退出游戏时,我会在一个名为“highscores”的数据库中名为“highscores”的表中添加一行(或者如果它已经存在则更新一行)......
我的网站上有一个高分页面,它使用php从highscores表中提取数据并将其组织成一个html表,以便玩家可以看到他们的分数,一切都很好。我也通过安装fluxBB(一个论坛系统)在我的网站上建立了论坛,并根据自己的喜好对其进行了修改。
所以在我的PHPMyAdmin中,我总共有5个数据库: information_schema , performance_schema , mysql , highscores 和论坛。 我安装了phpmyadmin时添加了前三个数据库,但我没有触及它们。我在安装论坛时创建的论坛数据库;它请求一个数据库来创建表,所以我创建了一个新的数据库来放入所有表。
所以我有一些问题......
我的数据库是否设置了典型网站的运作方式?如果没有,一个典型的网站将如何与高分和高分?论坛是否设置了自己的数据库?他们的网站有一个数据库,然后是他们游戏的一个数据库吗?
如果我想添加有关服务器的统计信息,例如“已创建x个帐户数量”或“x个玩家当前在线数量”,我将在哪里存储此信息?我在考虑将highscores数据库重命名为“game”(或我的游戏名称),然后在里面将是“highscores”表和“server_statistics”表。这样好吗?但是“server_statistics”表只有一行保存统计信息......这是正常的吗?
如果我想在我的网站上添加一个民意调查,我会创建一个名为“民意调查”的新数据库吗?或者我应该有一个名为“网站”的数据库,我会把所有与网站相关的数据放入?但是我有一个“论坛”数据库,那我该怎么做呢?
网站如何正常发布新闻?如果文章存储在数据库中,他们如何发布新闻以使其显示在主页上?那么会有一个“新闻”数据库吗?
很难在网上找到通用问题...我试过搜索但是请不要只是将我链接到一篇文章,因为它可能不符合我的情况。
提前致谢。
答案 0 :(得分:0)
好吧,因为我们讨论的是一个相对较小的数据库,保存有关网站和游戏的信息,所以最好使用website
或game
数据库并在表格之间拆分不同的信息
你认为你没有在这里指出的是你如何保持高分?这些是链接到用户表,论坛用户还是只是高分表中的名称字段?
由于您使用的是外部论坛系统,我会按原样保留该数据库,只需按照上面的建议创建第二个数据库,以供我的游戏和我的网站使用。
大多数在线用户的统计数据和帐户数量都不会保存在数据库中,因为这会对DBMS
创建不必要的冗余调用,这不是最佳选择。这些很可能是动态创建的,甚至可以使用cron作业更好地创建,并创建一个缓存的统计信息,即使该数字只有几分钟,也会向用户显示。
再次拥有一个website
数据库,然后根据需要在website
db中创建其他表,并按原样保留forums
数据库。
您将看到的大多数网站都有一个中央数据库,其中包含许多表格。 users
,news
,comments
,reviews
等
新闻表架构可以采用以下形式:
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)
让我尝试按顺序执行此操作:
通常,有关于数据库规范化的最佳实践,您应该查看您的站点。但首先我建议检查你的论坛和游戏之间的关系。如果他们彼此不可分割,即如果一个人玩游戏他们参与了forume,反之亦然,那么这些数据库实际上可能更好。