我正在尝试为我正在处理的小项目设计数据库。最后,我想把它变成一个网络应用程序,但是现在我不介意只是离线试验数据。但是,我陷入了一个十字路口。
基本概念是10个字段的用户输入值,与数据库中的内容进行比较,每个项目具有加权值。我知道如果我要对它进行编码,我可以为每个字段使用查找表,将值相加,并将结果显示给最终用户。
另一个例子是必须得到两点之间的距离,每个点存储在一行中,X值得到它自己的列以及Y值。
现在,如果我将数据存储在数据库中,我是否应该尝试在查询中执行所有操作(我认为这会涉及临时表等),或者只是使用简单查询,并操纵应用程序代码中返回的行?
现在,我正在考虑使用后者(操作应用程序中的数据),只使用查询来减少我必须排序的数据量。你们会建议什么?
编辑:现在我正在使用Microsoft Access来完成基础知识并尝试获得良好的设计。 IIRC凭借我在Oracle和MySQL方面的经验,您可以在批处理过程中一起运行命令并返回一个结果。但不确定你是否可以使用Access。
答案 0 :(得分:2)
如果您正在使用数据库,我强烈建议您使用SQL来完成所有操作。与命令式编程语言相比,SQL对于这种工作更有能力和强大。
当然,它确实意味着您可以将数据视为“集合”并以声明式方式编程。但是现在花时间熟悉SQL并使用SQL操作数据将在很长一段时间内节省大量时间。不仅适用于此项目,也适用于未来的项目。我还建议在代码中使用存储过程而不是查询,因为存储过程提供了一个漂亮的抽象层,允许您的表设计随时间变化而不会影响系统的其余部分。
使用和使用数据库的一个重要部分是理解数据建模,规范化等。像其他一切一样,这将是一种努力,但从长远来看,它会得到回报。
如果你有更好的数据库,比如MSSQL Express,我可以问你为什么要使用Access?从MSSQL Express到MSSQL或SQL Azure的迁移路径甚至是非常无缝的,您今天所做的和体验(在此项目中)完全转换为MSSQL Server / SQL Azure以用于未来项目以及此项目是否超出您的预期。 / p>
我不理解您关于运行批处理并获得一个结果的最后陈述,但如果您可以在Oracle和MySQL中执行此操作,那么您也可以在MSSQL Express中执行此操作。
答案 1 :(得分:0)
Shiv说什么,还有......
一个好的DBMS在其中有相当多的可靠工程。有两个组件经过特别精心设计,即查询优化器和事务控制器。如果您采用DBMS作为一个愚蠢的表检索工具的视图,您很可能最终在应用程序内部发明自己的优化器和事务控制器。在移动到支持多个并发用户的环境之前,您不需要事务控制器。
除非你的工程才能非凡,否则你可能最终会得到一个家用啤酒数据管理系统,它不如一个好的DBMS好。
SQL的学习曲线很陡峭。您需要了解如何对来自多个表的连接,投影和限制数据的查询进行短语。您需要了解如何在事务上下文中处理更新。
您需要学习简单而有效的表格设计和索引设计。这包括但不限于数据标准化和数据建模。而且你需要一个具有良好优化和良好事务控制的DBMS。
学习曲线陡峭。但是从顶部来看是值得攀登的。