「フォトアルバムアプリケーションの設計方法を説明する」、「この特定のWebサイトのこの特定の機能を設計する方法を説明する」などのインタビューの質問を収集しましたブラックジャックの)。次に、このものが何百万ある場合はどうなりますか?何を変えますか?
これは、データベーススキーマまたはクラス定義の束(またはその両方)を想定しているようです。私は学校でデータベースについて学んだことがありますが、実際にアプリケーションを設計したことがなく、どこから始めればよいか、思いついた設計が「良い」かどうか、スケーラブルにするために何を変更できるかがわかりません。
これらのシステムを設計するとき、一般的なアプローチまたは思考プロセスはありますか?そして、私が回避しようとする必要がある設計で多くのように思われる一般的な問題/問題?誰かが私にこれらの1つ(または好ましくはすべて、それぞれのニーズを比較しながら)を見て、説明することができますか?
1)どのエンティティが必要かをどのように思い付きますか?2)すべての関係をどのように決定しますか?3)パフォーマンスの最適化を設計にどのように組み込みますか?4)クラスまたはデータベースを使用してこれを行いますか?違いがありますか(つまり、実際にデータベーステーブルに変換できないクラスがあるでしょうか?)
私が質問している主な理由は、「コーディングインタビューをクラックする」ことを行っていたためであり、私の答えは著者のものとは完全に異なっていたためです。
私の試み: 写真共有アプリを使えば、クラスとテーブルが必ずあります:写真とユーザー。
次に、スキーマを作成しようとしている場合、写真の各人が写真にリンクされていると仮定すると、写真とユーザーをリンクするテーブルがあると思います(このテーブルは必要ですか?そうでない場合でも、それはまだ一般的な習慣ですか?多対多のリレーションシップ用に別のテーブルを作成するかどうか)。
しかし、オブジェクト指向のアプローチをとろうとしている場合は、代わりに、すべての作業を実行し、他の2つのテーブル/クラスからのすべての情報を保持するalbumというクラスを用意します。これは私が本で気づいた1つのことです-クラスの束があり、基本的にすべての情報を持ち、他のクラスを接続する1つのクラス-これは一般的ですか?たとえば、上記の私の例では、これは適用されるように見えますか?
現時点では、大規模システムの優れたアーキテクチャがどのように見えるかを知る方法がわからないため、いくつかの一般的なルール/ガイドラインに従うことを望んでいます。