2011-12-19 44 views
1

好吧,所以我是新的复杂的数据库结构进入页面。我有一个基本的人表和几个类别。学生,老师,家长和mods。对于父母,学生和老师/ mods,还有一张表格。它基本上是一所学校的网站。如何在页面中构建数据库调用?

现在例如一个资料页面,其中学生的信息显示给家长。像谁是老师,主题,出席,家庭作业等信息。这将查询很多表。那么我在这里最好的选择是什么?我打算以网络应用程序的方式进行操作。我在想,也许我可以将JSON数据转换为带有ajax的页面,并让javascript执行繁重的计算工作。所有表格只会被查询一次。

那么这样做甚至可以吗?或者当我把脚挖得太深时,我会面临一些隐藏的问题吗?也许我可以更深层次地完成一个巨大的JSON,并将整个数据库发送给用户,然后将其缓存在浏览器中。我不必支持真正的旧浏览器:)

此外,还需要考虑每次出勤和标记/结果等事情。有没有办法缓存每个学生的结果?像父母查看学生的结果,它会计算一次,然后在服务器上以某种方式缓存x天。

编辑:

另一个非JSON的方法我能想到的是传统的方式。我在服务器端用php做所有的事情。这意味着我不必担心浏览器兼容性。也许我可以在开始时调用所有需要的表并将其存储为数组。这样一张表只能被调用一次。

EDIT 2

我读的地方约战地3 battlelog网站。它也是以同样的方式。所有数据都从JSON服务器拉出,然后在客户端计算。如果这有助于我的观点。

+0

总是有隐藏的问题。总有多种方式可以做到这一点。从一些东西开始学习。我建议你从简单的PHP和MySQL开始,或者如果你真的想花太多的JSON,只用couchdb和javascript做。 – hakre 2011-12-19 21:06:55

+0

@hakre我在想JASON,因为JavaScript是我非常喜欢的东西。但不幸的是,我不认为我可以使用除mysql以外的其他任何东西,因为那只是我知道的数据库,而且这是生产代码。 – Achshar 2011-12-19 21:10:24

+0

“Jason”是来自所有那些“周五13日”电影的人:)。您正在考虑“JavaScript对象表示法”或“JSON”。 – paulsm4 2011-12-19 21:19:11

回答

1

可能搬走一些误解,但是这是一个多回答一个冗长的评论:

你的数据库有表和fiels。这是完全有效的。数据库服务器的工作是存储数据并处理查询。你自己的代码永远不会比连接数据库的代码更好。因为数据库服务器已针对该任务进行了优化。

所以我认为查询所有数据并通过JSON将其放入您的webapp的想法是一个坏主意。如果需要特定数据,请联系您的服务器,服务器将构建相关的SQL查询,将其引导至数据库服务器,将结果返回,将结果转换为JSON并将其发送回浏览器。

+0

谢谢!但是计算结果等事情呢?由于每个问题添加了标记,因此在查看班级平均数时通常需要大量计算。因此,不要每次查询都要先查询数据库以获得结果,然后让每个学生完成每个课程,然后通过获取所需的问题和学生数据,然后使用JavaScript进行多级计算并将标记加入学生来更好地完成,因为JS通常会更快,更高效,因为每个用户都会承担自己的负载,而不是单个服务器来完成所有这些任务。 – Achshar 2011-12-19 21:35:11

+0

MySQL也具有聚合函数,并且可以进行算术计算。我想知道这是不是很快,因为这可以减少您需要在服务器和浏览器之间传输的数据量。服务器端计算可能比通过线路传输整个数据更快。但可能不会。那么如果你关心速度并尝试一下,你需要找出两种方案中的哪一种更快。你永远不会提前知道。 – hakre 2011-12-19 21:38:42

+0

嗯seieng这样做的JavaScript方式仍然需要浏览器兼容thingy,我想我应该做它的服务器端。你如何看待在页面开始时需要的每个表的调用并将其存储在一个变量中,然后我可以在整个页面中多次使用它,而无需再次调用表。传统方法处理需要来自一个表的信息但取决于来自另一个表的数据的情况的传统方式是什么?在循环中调用db调用是错误的..对吗? – Achshar 2011-12-19 21:46:42

0

AJAX(Asynchronus Javascript和XML)仅允许您在页面的主要部分绘制完成后即时获取数据。所有的事情都是平等的,你可能会更容易将其设计为标准(获取数据然后绘制页面)布局。如果您正确设计应用程序,则可以在页面呈现前或页面呈现过程中收集执行单个组件(出席,教师,成绩等)的调用。通过使用AJAX路线,存在明显的安全隐患(URL黑客攻击),而且我个人设计非AJAX,因为当事情开始变得更加奇怪时,它不那么流行。

+0

我同意你的意见,但在这种情况下,服务器是非常平均的低带宽。 (低预算)所以我必须明智地使用这些资源,这样它就不会在当天结束时将网站拉下来。 对于非Ajax方法,您如何看待在页面开始时需要调用每个表并将其存储在一个变量中,然后我可以在整个页面中多次使用它。 – Achshar 2011-12-19 21:41:44

+0

@Achshar你或许可以脱离SQL视图来做一些预处理,而服务器层可以做更多事情。如果你真的担心吞吐量,我会首先剖析我的代码,以确保我不会执行大量不必要的循环,并且还会首先寻找最大的钉子。这实际上取决于您需要查询的数据量与您期望的访问者数量与访问者的计算级别之间的关系。通过卸载PoS计算机上的数据计算,它不会对他们做任何事情,因为PoS计算机本应在10​​年前退役 – Hasteur 2011-12-19 21:55:03

+0

。我将加入这些语句,并且一次仍然使用php留在服务器端。这似乎是答案。谢谢! – Achshar 2011-12-19 21:57:55

相关问题