3

このmysql dbがあり、db内のすべてのテーブルが互いに関連しており、主キー、外部キーなどがすべて設定されているとしましょう。データベースの設計だけで、どのクエリがアプリケーションに使用されるかを予測することは可能ですか? データベースはアプリケーションの機能を決定するので、設計から、アプリケーションで使用されるクエリを予測できますよね?

可能であれば、可能なクエリを生成するための戦略または自動化された方法はありますか?

4

4 に答える 4

6

私はSQLとExcelを使用してデータを分析することをテーマにした本を書き、データベースの操作に長年費やしてきました。

はい、データベース構造から、テーブルがどのように結合されるかを理解できます。ユーザーが必要としている、より難しい、そして一般的にはよりビジネスに関連するものを理解するつもりはありません。ここではいくつかの例を示します。

プライマリテーブルが電話であるデータベースと、関連する情報を作成できます。このデータベースから、一度にアクティブなコールの最大数を知る必要がある場合があります。または、誰かが1か月に何人の人に電話をかけるかを知る必要があるかもしれません。

加入者レコードのデータベースを持つことができます。一定の時間が経過すると誰かが停止する確率を把握する必要があるかもしれません。

あなたは製品と購入のデータベースを持つことができます。一緒に発生する3つの製品の最も一般的な組み合わせを理解する必要があるかもしれません。

あなたはクレジットカード購入のデータベースを持つことができます。請求先住所から50マイル以上離れたレストランで200ドル以上を費やしているのは誰かを把握する必要があるかもしれません。

ポイントは。データベースは「アプリケーション機能」を表すものではありません。データベースは、おそらく現実の世界で、エンティティとそれらの間の関係を表します。データベースを見て、ビジネス上の質問が何であるかを知ることができると考える傲慢さがあります。

代わりに、データベースの目的はデータをサポートすることであり、データはアプリケーションをサポートします。アプリケーションのニーズは時間とともに変化します。他の多くのデータストレージテクノロジーとは対照的に、データベースの利点は、データの増加に応じてテクノロジーが拡張され、構造の変更がサポートされ、システムを完全に書き換えることなく、新しいエンティティや関係をシステムに追加できることです。

時間が経つにつれて、そして経験を積むことで、あなたは何が重要であるかについての直感を発達させるかもしれません。たとえそうだとしても、ユーザーのさまざまなニーズに常に驚かれることでしょう。

于 2012-08-08T02:09:36.730 に答える
1

私はここで賢くしようとは心から思っていませんが、答えは-はい、いいえです。

はい、3NF設計は通常、その背後にあるビジネスルールの概要を示しているため、その背後にあるビジネスロジックをある程度理解できるので、そこからオブジェクトまたはグラフモデルを作成して、どのような質問ができるかを理解できます。接続/関係およびアクセス可能なプロパティに基づいてから尋ねられます。

いいえ、組み合わせて、グラフからの質問の組み合わせが扱いにくい場合があるためです。したがって、合理的で非指数関数的な時間内にどのような質問をする可能性があるかを実際に判断することはできません。

一般に、デザインが優れていて、テーブルに意味のある名前が付けられている場合は、何が起こっているのかをかなりよく理解できます。

于 2012-08-08T02:00:48.620 に答える
1

理論的には可能ですが、N行×X列×Zテーブル×W可能な関数×各列/行のQ可能な値の組み合わせ爆発により、これは驚くほど大きな数になります。

ここでの問題は、データも考慮する必要があるということです。一部のクエリは、特定のデータがある場合にのみ意味があり、他のクエリは意味がありません。したがって、あなたは本質的に非常に大きな超立方体を検討しています。

私は多次元データベース(非正規化されたキューブ)を使用していますが、これは本質的に非正規化されたデータベースです。OLAP理論について読んでおくと、その理由がわかります。

つまり、実際には不可能なので、要するにありません。

于 2012-08-08T02:07:19.800 に答える
0

データベースの設計だけで、どのクエリがアプリケーションに使用されるかを予測することは可能ですか?

少なくとも原理的には、効率的に回答できるクエリを予測できます。アプリケーションが実際にどのクエリを実行しようとするかは、別の問題です。

理想的な世界では、データベース モデルは、現在および将来のすべてのアプリケーションのすべてのクエリ ニーズを考慮に入れます。私たちはまだその世界に住んでいません;)

可能であれば、可能なクエリを生成するための戦略または自動化された方法はありますか?

いいえ、モデルが実際に意味することを人間が理解する必要があります。残念ながら、そのレベルの理解をツールに教える良い方法はありません。

優れたモデルは、データベース モデリングおよびモデル化されるドメインの経験がある人にとってすぐに理解できるものです。そのような人は通常、実際に使用されているクエリのかなりの部分を予測できますが、すべてを予測できることはめったにないため、データベース モデル自体の横にあるドキュメントが望ましいです。もちろん、すべてのモデルが優れているわけではありません...

于 2012-08-21T10:24:00.980 に答える