我已经建立了一个网络应用程序超过一年了。这是我开始构建的第一件事,因为我学习了PHP和MYSQL等。它已经从一个非常简单的使用原始PHP编码的预算应用程序发展成为我每天在Codeigniter上运行的完整个人财务跟踪器。我同时构建了几个其他小型网络应用程序,因此我比我刚开始这个项目时的经验长1年,我认为我的开发工作因基础设计而开始受到影响我在第1天做出的决定。
尽管代码已被重写以与codeigniter一起使用,但数据库结构仍然相同,我觉得我必须编写更多的代码来解决我的数据库架构问题。
我的问题是:
答案 0 :(得分:3)
1)是否有任何好的资源来学习如何有效地设计数据库?
了解实体关系建模。 ERwin Methods Guide是一个良好的开端。
但在现实世界中,数据库不只是存储数据 - 它们与客户端应用程序交互,性能需要良好。 Use The Index Like!是对该主题的精彩介绍。
2)......
理想情况下,您有一组固定的需求,然后根据它们设计模型,然后根据模型编写代码。不幸的是,不断变化的要求是生活中的事实,这种“瀑布模型”在需求变化时是脆弱的。
另一方面是“敏捷”软件开发,强调变革。
事实是有no sliver bullet,最佳通常介于两者之间。
3)我应该设计我的逻辑和功能,然后是我的数据库,还是从数据库开始,然后是逻辑和函数?
数据往往比代码更长寿。因此,我将专注于首先获得数据模型。如果您必须在清洁数据和清洁代码之间做出决定,请选择更清洁的数据。
话虽如此,试着让你的数据模型“可演化”。不要走极端,例如在实际不需要的地方实施EAV,而是做一些明智的事情,例如通过规范化来避免冗余,picking natural vs. surrogate keys sensibly,不要人为地限制物品的数量等...... / p>