多くの製品で使用できる再利用可能なデータベースを作成するにはどうすればよいでしょうか?
たとえば、学校用に設計されたデータベースがある場合、大学に提供するために簡単に変更できますか?
一度のコーディングで多くの顧客にソリューションを提供する製品として使用できるデータベースを作成する方法とは?
ありがとう
多くの製品で使用できる再利用可能なデータベースを作成するにはどうすればよいでしょうか?
たとえば、学校用に設計されたデータベースがある場合、大学に提供するために簡単に変更できますか?
一度のコーディングで多くの顧客にソリューションを提供する製品として使用できるデータベースを作成する方法とは?
ありがとう
通常、人々がこれを行う場合、同じ業界に複数のクライアントがいます。したがって、e コマースの Web 開発者であれば、同じ製品、注文、注文の詳細タイプのテーブル シナリオに何度も出くわすことになります。これが発生すると、初期データベースを簡単に構築できます。
これには簡単な特効薬はありません。データベース設計を十分に一般的なものに保つ必要がありますが、過度に一般化することは通常、メンテナンスの悪夢やその他の厄介な落とし穴につながるため、避けるようにしてください。
経験を積むと、一般化されたものと専門化されたものの完璧なバランスを理解できるようになります。これが、理解可能で再利用可能なコード/データベース設計の鍵です。
ステップ 1 では、さまざまな潜在的なクライアントと話をして、彼らのニーズ、現在使用しているもの、現在の製品で何ができるようになりたいかを調べます。今必要だと思う時間の 10 倍の時間を費やしてください。考えられる GUI を紙に描き、インタビューした人にその絵を見て提案をしてもらいます。可能であれば、業界の何人かをビジネス アナリストとして雇って、このステップを支援してもらいます。法的要件について質問します。法令順守の問題が多い業界もあれば、そうでない業界もあります。たとえば、医療の世界に何らかの形で関連するものはすべて、HIPPA 要件を調査して完全に理解する必要があります。
データベース構造と GUI を設計し、実際のユーザーにそれを試してもらいます。彼らの発言に基づいてリファクタリングします (ユーザーが実際の GUI に直面するまでは考えられない、要求を収集する際に省略している事柄の数は驚くべきものです)。
すべての潜在的な顧客に共通する必要があるものと、カスタマイズが必要な場所について考えてください。ここでは、インタビューを参考にしてください。カスタマイズの処理方法を決定します。または、許可する場合でも。これは、業界とその慣行がどれほど標準的であるかに大きく依存する場合があります.
これがボックス ソフトウェアの場合、多くの場合、デザインには、ユーザーがフォームやレポートに追加できるカスタマイズ可能なフィールドを含むテーブルが含まれます。
Web ベースのソリューションでは、多くの場合、カスタマイズを必要とする各ユーザーは、カスタム情報が保存されている独自のデータベース (およびカスタマイズできないもののための中央標準データベース) を持ち、プログラマーはクライアントからの要求に基づいて変更を行います。このルートを使用する場合、2 番目のクライアントに対して同様のカスタマイズを 2 度目に行う場合は、これをソフトウェアの新しい機能として誰でも利用できるようにするためにリファクタリングが必要かどうかを検討してください。クライアントがより少ない費用で標準レポートを入手できる場合、1 つまたは 2 つのフィールドだけが異なる 17 のカスタム出席レポートを作成する必要はありません。
Web モデルでは、一連のモジュールを作成し、カスタム ソリューションに追加するモジュールをクライアントに選んでもらうこともできます。彼らは、選択したモジュールの数と複雑さに基づいて支払います。したがって、標準レポートのうち 3 つだけを必要とするクライアントは、27 個すべてを必要とするクライアントよりも支払う金額が少なくなります。新しいカスタマイズが提案されたとき、その提案がすぐに他のレポートに適用されないように思われる場合、クライアントは開発費を支払いますが、モジュールは他の方も購入できるようにしています。他の人がそれを購入した場合、変更を要求した元のクライアントは、開発費が支払われるまでお金の一部を受け取る可能性があります. また、何かをカスタム モジュールとして残し、この作業に対してはるかに高い代償を支払うことを要求することもできます。そうでないクライアントもいます。他の顧客と同じ場所にある同じサーバーにデータを保存したくありません。言うまでもなく、私たちはそのようなことをするために莫大なプレミアムを請求します.
カスタマイズには費用がかかり、より多くのプログラマーが必要になる可能性があります。カスタマイズの道に進む前に、非常によく検討してください。それはソフトウェア ソリューションを販売するものになる可能性がありますが、十分に拡張することはできません。顧客が 10 人いる場合は悪くありませんが、数百人になると、すぐに制御不能になる可能性があります。標準スイートから後でカスタマイズを追加するよりも、一度提供したカスタマイズを取り消すのははるかに困難です。多くの場合、カスタマイズの必要性は、企業レポートの編成においてより多くなります。人々が必要な情報を選択して選択し、独自のカスタム レポートを保存できるレポート インターフェイスを作成できれば、全面的なカスタマイズを必要とせずに、業界のほとんどのカスタマイズ ニーズに対応できる可能性があります。
保存するデータの種類について時間をかけて考え、拡張可能にするためにデータを抽象化し、それに応じてデータベースを構築します。コードからのように完全に再利用できるかどうかはわかりませんが、事前に計画すれば、再利用可能なデータベース構造 (個々のコンポーネントを変更する必要があります) を構築できます。
それはあなたのニーズに依存します。たとえば、製品ベースのビジネス用の多くのデータベースでは、次のような形式が使用されています。
あなたの状況では、あなたが持っているかもしれません
この一般的なテーブル形式は、多くのアプリケーションで再利用できます。
すべてはデザインにあります。多くの場合 (ほとんどではないにしても)、データベースは個々の機関向けにある程度のカスタマイズが必要になります。しかし、一般化されたデータベースは基本的なレベルの機能を提供できます。多くの基本的なニーズを満たすのに十分な一般的なものを設計することは可能です。しかし問題は、設計の一般性が非常に複雑になる傾向があることです。たとえば、多数の潜在的なユーザー ニーズに対応するようにデータベースをデータ駆動型に設計できます。ただし、通常は、機関の個々のニーズに合わせてスキーマをカスタマイズすることをお勧めします。
再利用可能な状況を考慮した設計には、重大なトレードオフが伴います。通常、時間と複雑さが伴います。つまり、再利用できないものを設計する方が簡単です。そして通常、一般的なデザインを作成してそれを使用するために必要な追加の時間は、努力する価値がありません。
データベース設計の一般性と特異性の適切なバランスを見つけて、それを中心に構築するアプリケーションがターゲット市場で十分な問題を解決し、すべての人がその市場を購入するようにします。
各顧客はすべての機能を使用しますか?それとも、1 つのサイズですべてに適合する製品を構築しようとしていますか? 特定のアプリケーションに合わせてデータベースを計画および変更するために費やす追加の時間は、将来的に報われることが常にわかっています。すべての可能性を説明しようとするデータベース構造よりも、簡潔なデータベース構造で作業する方がはるかに簡単です。
類似した既存のデータベースまたはテンプレートがある場合、通常、このようなデータベース モデリング ツールを使用してそれを変更し、SQL 生成機能 (ロード/保存の下) を使用して実際のデータベースを作成します。
私が最近見つけた、多くの時間を節約したもう 1 つのトリックは、データベースの生成に使用される SQL をスクリプトとして保存することです。新しいデータベースをセットアップする場合は、ソース コードを編集してからページを読み込みます。たとえば、新しい顧客テーブルを生成したい場合は、http://localhost/load.php?generate=customerをロードします。
それが役に立てば幸い!
このようなアプリケーションでは、要件を満たすためにかなり複雑なデータ モデルが必要になります。さまざまな種類の学校にはさまざまな要件があります。大学ではコースの追加または削除が許可される場合がありますが、小学校では通常許可されません。大学では教室ごとにコースをスケジュールする必要がありますが、小学校では学生を学年ごとに分類し、利用可能なスペースと教師に基づいて学年を教室に分割する必要があります。
設計では、解決が期待されるすべての要件を考慮に入れ、それらを実装する必要があります。プログラムを一般化すればするほど、顧客を満足させることが難しくなります。質問は「コードを一度書く」と言います。すべての学校のニーズを解決する単一のプログラムを作成したい場合、何百もの機能が必要になります。場合によっては、別の学校とは反対の機能を必要とする学校もあります。たとえば、教科または教室ごとに 1 人の教師を強制する必要がある学校もあれば、複数の教師を必要とする学校もあります。満たす必要のある要件が増えるほど、アプリケーションはより複雑になります。
業界では、大規模なアプリケーションは拡張できるように作成される傾向があります。機能のコア セットが提供されますが、アプリケーションは特定の顧客向けに変更およびカスタマイズされることを意図しています。これにより、すべてのニーズを予測する必要がないため、開発が容易になります。実際、多くのニーズを予測する必要はありません。それらのニーズを持つ顧客が現れるまでは。しかし、「カスタマイズ」では、一度だけコードを書くわけではありません。
最も重要なステップは、後で拡張できるほど柔軟でありながら、開発が不可能なほど柔軟ではないデータ モデルを考え出すことです。通常、最も難しいのは、関係のカーディナリティを正しくすることです。たとえば、クラスには 1 人の教師がいるとします。その後、クラスに 2 人の教師が必要になると、多くのコードを書き直し、多くのデータを修正する必要があります。この種の変更は煩わしく、時間がかかります。ただし、最終的には、十分なプログラマーの時間があれば、いつでも間違いを修正できます。
私ができる最善のアドバイスは、最小公分母に合わせて構築することです....
だから....教育施設向けのプロジェクトとしてコーディングしてください:-)