规划和设计Web应用程序结构和逻辑

时间:2012-07-20 14:23:38

标签: database-design web-applications

我已经建立了一个网络应用程序超过一年了。这是我开始构建的第一件事,因为我学习了PHP和MYSQL等。它已经从一个非常简单的使用原始PHP编码的预算应用程序发展成为我每天在Codeigniter上运行的完整个人财务跟踪器。我同时构建了几个其他小型网络应用程序,因此我比我刚开始这个项目时的经验长1年,我认为我的开发工作因基础设计而开始受到影响我在第1天做出的决定。

尽管代码已被重写以与codeigniter一起使用,但数据库结构仍然相同,我觉得我必须编写更多的代码来解决我的数据库架构问题。

我的问题是:

  1. 有没有什么好的资源可以学习如何有效地设计数据库?书籍,课程等。
  2. 当我开始这个项目时,我非常“按照我编码的方式设计”但我觉得也许更合理的方法是在功能级别设计所有内容,以便在编写单个内容之前可以看到流程和逻辑是什么代码行。这种类型的开发是否有特定的名称,还是仅仅是标准做法? (我没有正式的网络开发培训,所以我觉得我可能只是陷入了每个人都知道的事情)。
  3. 我应该设计我的逻辑和功能,然后设计我的数据库,还是从数据库开始,然后是逻辑和函数?

1 个答案:

答案 0 :(得分:3)

  

1)是否有任何好的资源来学习如何有效地设计数据库?

了解实体关系建模。 ERwin Methods Guide是一个良好的开端。

但在现实世界中,数据库不只是存储数据 - 它们与客户端应用程序交互,性能需要良好。 Use The Index Like!是对该主题的精彩介绍。

  

2)......

理想情况下,您有一组固定的需求,然后根据它们设计模型,然后根据模型编写代码。不幸的是,不断变化的要求是生活中的事实,这种“瀑布模型”在需求变化时是脆弱的。

另一方面是“敏捷”软件开发,强调变革。

事实是有no sliver bullet,最佳通常介于两者之间。

  

3)我应该设计我的逻辑和功能,然后是我的数据库,还是从数据库开始,然后是逻辑和函数?

数据往往比代码更长寿。因此,我将专注于首先获得数据模型。如果您必须在清洁数据和清洁代码之间做出决定,请选择更清洁的数据。

话虽如此,试着让你的数据模型“可演化”。不要走极端,例如在实际不需要的地方实施EAV,而是做一些明智的事情,例如通过规范化来避免冗余,picking natural vs. surrogate keys sensibly,不要人为地限制物品的数量等...... / p>