Database design 规划和设计web应用程序结构和逻辑

Database design 规划和设计web应用程序结构和逻辑,database-design,web-applications,Database Design,Web Applications,我已经开发了一年多的网络应用程序了。这是我在学习PHP和MYSQL等时开始构建的第一件事。它已经从一个用原始PHP编写的非常简单的预算应用程序发展成为一个我每天在Codeigniter上运行的完整的个人财务跟踪器。同时,我还开发了一些其他的小型网络应用程序,因此我比第一次开始这个项目时有1年的经验,我认为我的开发开始受到影响,因为我在第一天做出了基本的设计决定 虽然代码已经被重写以使用codeigniter,但数据库结构仍然是一样的,我觉得我必须编写比需要更多的代码来解决我的DB模式的问题 我的

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

虽然代码已经被重写以使用codeigniter,但数据库结构仍然是一样的,我觉得我必须编写比需要更多的代码来解决我的DB模式的问题

我的问题是:

  • 有没有好的资源来学习如何有效地设计数据库?书籍、课程等
  • 当我开始这个项目时,我非常“按照我的代码设计”,但我觉得也许更明智的方法是在功能级别设计所有内容,以便在编写一行代码之前,您可以看到流程和逻辑。这种类型的开发是否有一个特定的名称,或者它只是一种标准实践?(我没有接受过网络开发方面的正式培训,所以我觉得我可能只是跌跌撞撞地进入了大家都知道的领域)
  • 我应该先设计逻辑和功能,然后设计数据库,还是先设计数据库,然后设计逻辑和功能
  • 1) 有没有好的资源来学习如何有效地设计数据库

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

    但在现实世界中,数据库不仅仅存储数据——它们与客户机应用程序交互,性能需要良好。这是关于这个话题的一个很好的介绍

    2)

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

    与此相反的是“敏捷”软件开发,强调变化

    事实是有,而最佳值通常介于两者之间

    3) 我应该先设计逻辑和功能,然后设计数据库,还是先设计数据库,然后设计逻辑和功能

    数据往往比代码寿命更长。因此,我将首先集中精力获得正确的数据模型。如果必须在更干净的数据和更干净的代码之间做出决定,请选择“更干净的数据”


    也就是说,试着让你的数据模型“进化”。不要走极端,比如在实际不需要的地方实施,但要做一些明智的事情,比如通过规范化避免冗余,而不是人为地限制项目数量等等。

    感谢您提供了如此深入的答案,非常有用。我会让它打开一段时间,然后再接受,看看是否有其他人插手进来。