1

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

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

我的问题是:

  1. 有没有什么好的资源来学习如何有效地设计数据库?书籍、课程等
  2. 回到我开始这个项目的时候,我非常“像我编码一样设计”,但我觉得也许更明智的方法是在功能级别设计所有东西,这样你就可以在编写一行代码之前看到流程和逻辑是什么. 这种类型的开发是否有一个特定的名称,或者它只是标准做法?(我没有接受过网络开发方面的正式培训,所以我觉得我可能只是偶然发现了每个人都已经知道的东西)
  3. 我应该设计我的逻辑和功能然后我的数据库还是从数据库开始然后逻辑和功能?
4

1 回答 1

3

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

了解实体关系建模。ERwin 方法指南是一个好的开始。

但在现实世界中,数据库不只是存储数据——它们与客户端应用程序交互并且性能需要良好。使用索引喜欢!是关于这个话题的一个很好的介绍。

2) ...

理想情况下,您将有一组固定的需求,然后基于它们设计一个模型,然后基于该模型编写代码。不幸的是,不断变化的需求是不争的事实,而这种“瀑布模型”在面对不断变化的需求时是脆弱的。

在光谱的另一端是“敏捷”软件开发,强调变化。

事实是没有灵丹妙药,最佳值通常介于两者之间。

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

数据往往比代码寿命更长。所以我首先会专注于让数据模型正确。如果您必须在更清洁的数据和更清洁的代码之间做出决定,请选择更清洁的数据。

话虽如此,请尝试使您的数据模型“可进化”。不要走极端,例如在实际上不需要的地方实施EAV ,而是做一些明智的事情,例如通过规范化避免冗余,明智地选择自然键与代理键,而不是人为地限制项目的数量等......

于 2012-07-23T14:43:27.357 回答