1

私は1年以上ウェブアプリを構築してきました。PHPやMYSQLなどを学び、最初に構築を開始しました。これは、生のPHPでコーディングされた非常にシンプルな予算作成アプリから、Codeigniterで毎日実行する完全なパーソナルファイナンストラッカーに成長しました。その間に他にもいくつかの小さなWebアプリを作成しました。その結果、このプロジェクトを最初に開始したときよりも1年経験があり、基本的な設計の結果として開発が苦しみ始めていると思います。 1日目に行った決定。

codeigniterで動作するようにコードが書き直されましたが、データベース構造は同じであり、DBスキーマの問題を回避するために必要以上のコードを記述しなければならないと感じています。

私の質問は次のとおりです。

  1. データベースを効果的に設計する方法を学ぶための良いリソースはありますか?本、コースなど。
  2. このプロジェクトを始めたとき、私は非常に「コーディングしたとおりに設計」しましたが、おそらくより賢明な方法は、1行のコードを記述する前に、フローとロジックが何であるかを確認できるように、すべてを関数レベルで設計することだと思います。 。このタイプの開発には特定の名前がありますか、それとも単なる標準的な方法ですか?(私はWeb開発の正式なトレーニングを受けていないので、誰もがすでに知っていることに遭遇しているだけかもしれないと感じています)
  3. ロジックと関数を設計してからデータベースを設計する必要がありますか、それともデータベースから始めてロジックと関数を設計する必要がありますか?
4

1 に答える 1

3

1)データベースを効果的に設計する方法を学ぶための良いリソースはありますか?

実体関連モデリングについて学びます。ERwinメソッドガイドは良いスタートです。

しかし、現実の世界では、データベースはデータを保存するだけでなく、クライアントアプリケーションと相互作用するため、パフォーマンスを向上させる必要があります。のようにインデックスを使用してください!トピックに関する素晴らしい紹介です。

2)..。

理想的には、要件の固定セットがあり、それらに基づいてモデルを設計し、モデルに基づいてコードを記述します。残念ながら、要件の変更は現実のものであり、この「ウォーターフォールモデル」は、要件の変更に直面しても脆弱です。

スペクトルの反対側には、変化を強調する「アジャイル」ソフトウェア開発があります。

真実は、スライバーの弾丸はなく、最適なものは通常その中間にあるということです。

3)ロジックと関数を設計してからデータベースを設計する必要がありますか、それともデータベースから始めてロジックと関数を設計する必要がありますか?

データはコードよりも長持ちする傾向があります。そのため、最初にデータモデルを正しく取得することに集中します。よりクリーンなデータとよりクリーンなコードのどちらかを決定する必要がある場合は、よりクリーンなデータを選択してください。

そうは言っても、データモデルを「進化可能」にするようにしてください。EAVを実際には必要とされない場所に実装するなどの極端なことはしないでください。ただし、正規化による冗長性の回避、自然キーと代理キーの選択など、アイテムの数を人為的に制限するのではなく、賢明なことを行ってください。

于 2012-07-23T14:43:27.357 に答える