2011-02-08 57 views
1

我正在努力为我正在开发的一个小项目设计一个数据库。最终,我想把它变成一个网络应用程序,但现在我不介意在离线状态下尝试数据。但是,我被困在十字路口。与数据库鬼混,网上开发

基本概念是10个字段的用户输入值,与数据库中的内容进行比较,每个项目具有加权值。我知道,如果我要编码它,我可以为每个字段使用查找表,将这些值相加,并将结果显示给最终用户。

另一个例子是必须得到两点之间的距离,每个点存储在一行中,X值得到自己的列以及Y值。现在,如果我将数据存储在数据库中,我是否应该尝试在查询中执行所有操作(我认为这会涉及临时表等),或者只是使用简单的查询,并操作应用程序代码中返回的行?

现在,我正在考虑去应用后者(在应用程序中操纵数据),并且只是使用查询来减少我必须排序的数据量。你们会建议什么?

编辑:现在,我正在使用Microsoft Access来获得基础知识,并尝试获得一个好的设计。 IIRC凭借我在Oracle和MySQL方面的经验,可以在批处理过程中一起运行命令并返回一个结果。但不知道你是否可以用Access来做到这一点。

回答

2

如果您使用的是数据库,我强烈建议使用SQL来完成所有操作。与命令式编程语言相比,SQL对于这类工作更有能力且更强大。

当然,这确实意味着您在将数据视为“集合”并以声明式样式进行编程时感到很舒服。但现在花时间去熟悉SQL并使用SQL来操作数据将会从长远来看付出很大的努力。不仅对于这个项目而且对于未来的项目。我还建议在代码中的查询中使用存储过程,因为存储过程提供了一个美丽的抽象层,允许您的表设计随时间变化而不会影响系统的其他部分。

使用和使用数据库的很大一部分是理解数据建模,规范化等。像所有其他事情一样,这将是一种努力,但从长远来看,它将会得到回报。

请问你为什么在使用Access的时候有一个更好的数据库可用,比如MSSQL Express?从MSSQL Express到MSSQL或SQL Azure的迁移路径甚至是非常无缝的,您今天(在此项目中)所做和所经历的一切都完全转化为未来项目的MSSQL Server/SQL Azure,以及此项目超出您的预期。

我不明白您最后一次关于运行批处理过程并获得一个结果的说法,但是如果您可以在Oracle和MySQL中执行此操作,那么您也可以在MSSQL Express中执行此操作。

+0

我在我的电脑上进行基本测试的Access,以及没有SQL Express的VS2008。我不想把自己锁定在一个特定的数据库中,或者用这个项目编程语言。我倾向于Asp.Net,但我宁愿在做任何其他事情之前让核心概念与后端一起工作。 – 2011-02-08 08:18:39

+1

@Jeffery所以你在说什么是Access不会将你绑定到特定的数据库?或者MSSQL将您与特定的编程语言联系起来?我要说的是,核心概念更容易在更主流的数据库引擎中获得和实现,因此如果需要的话,您可以迁移到其他数据库。数据库与编程语言无关,我不相信我甚至提到了编程语言(因为你没有) – 2011-02-08 08:28:35

0

希夫说什么,也...

一个好的DBMS有不少在其扎实的工程中。有两个组件是特别精心设计的,即查询优化器和事务控制器。如果您采用使用DBMS作为一种愚蠢的表格检索工具的观点,您很可能最终会在应用程序内部发明自己的优化器和事务控制器。在您转移到支持多个并发用户的环境之前,您不需要事务控制器。

除非您的工程技术人员非凡,否则您可能会得到一个家庭酿造数据管理系统,这个系统的性能不如一个好的数据库管理系统。

SQL的学习曲线非常陡峭。您需要了解如何使用查询来加入,投影和限制多个表中的数据。您需要了解如何处理事务上下文中的更新。

您需要学习简单而健全的表格设计和索引设计。这包括但不限于数据标准化和数据建模。而且你需要一个具有良好优化器和良好事务控制的DBMS。

学习曲线陡峭。但从顶部看来值得攀登。