2011-02-07 20 views
1

「そのようなシステムの設計」や「どのようなデータ構造を使用するのか」という質問がある場合は、リレーショナルデータベースシステム設計?テーブル、エンティティ、それらの間の関係、外部キーとプライマリキーなどで完了しますか?データベースシステムを使った経験は豊富ですが、データ構造を使ったプロジェクト経験はないでしょうか?私はリンクリスト、バイナリツリー、バイナリ検索ツリー、スタック、キューを知っているだけです...私の今後のインターンインタビューのためには神経質です。何かアドバイス?データ構造とシステム設計の質問

答えて

1

リンクリスト、ツリー、およびスタックは、プログラム内のデータに作用するツールです。データベーステーブルとテーブルの設計と関係は、データを格納するためのツールです。 「システム」は、これらの両方をさまざまな目的で使用しますが、それらはtogethorと連携します。

「このようなシステムを設計してください」 これはより高いレベルの質問です。まず、データベーステーブルについて説明し、次にどれほど詳細があるかによってプログラムの詳細に移ります。

「このようなデータ構造にはどんなデータ構造を使用しますか?」 これはアルゴリズム設計に関する質問のように聞こえるので、ここでは木とスタックについて質問されているところです。助け

希望:P

+0

あなたの答えは良いです。 1つのこと:データベーステーブルとテーブルの設計と関係は、データの格納と共有のためのものです。単一のアプリケーションのための格納と検索だけであれば、リレーショナル・デザインの大部分は無駄になります。 –

+0

@Walter Mitty学生とコースの間のnton関係は登録アプリケーションで有用ではありませんか? – Matt

1

をインタビューでは、データ構造(多くの場合、アルゴリズムの複雑さを持つ)を使用して親しみをテストするために設計された質問は、リレーショナルデータベースではないです。システム設計についての質問には、データベース設計の部分が関与する可能性があります。

あなたが言及したデータ構造はすべて重要です。最も明らかに欠けていて非常に重要なものは、hash tables(または順序付けされていないマップ、そしてPythonのdictsやjavascriptのオブジェクト/マップなどの多くのスクリプト言語のデータ構造の基礎)です。 btreesも読んでください。これは通常、リレーショナルデータベースの実装に使用されます(バイナリ検索ツリーなどのプロパティを持ちますが、ディスクストレージに適しています)。

0

インターンインタビューでは、それはokではありません。

私は基本的なデータ構造に精通していることを期待していますが、あなたがそれらのいずれかの専門家であるとは思わないでしょう。 (とにかく、私が専門家と呼ぶものではない)私は、あなたの現在の知識をはるかに超えた質問にどのように反応するかに、より関心があります。私がvan Emde Boasツリーの理論的利点について尋ねたなら、おそらく正しい答えになるでしょう。 (私に腹を立てようとするよりも良い)

しかし実際には、リレーショナルデザインの原則は、明らかにリレーショナルではない多くの問題に有益に適用することができます。ほとんどのLotus Notesアプリケーションは、堅実なリレーショナル設計の恩恵を受けます。 Notesで宣言的に制約を実装することはできませんが、例外レポート、期間文書のクロールなど、何らかの理由でそれらを考慮する必要があります。

の大規模なC++デザインの最初の拡張例は、C++またはOOの設計上の問題と同様の関係設計上の問題でした。 (そのことは1996年に出版されました。私はその年齢ですか?はい、私はそう思います)