126

SQL ソリューションの設計方法を学ぶための良い情報源を知っていますか?

基本的な言語構文を超えて、理解するのに役立つものを探しています:

  1. 作成するテーブルとそれらをリンクする方法
  2. さまざまな規模に合わせて設計する方法 (小さなクライアント APP から巨大な分散 Web サイトまで)
  3. 効果的/効率的/エレガントな SQL クエリの書き方
4

7 に答える 7

60

Jan L. Harrington 著の Relational Database Design Clearly Explained (The Morgan Kaufmann Series in Data Management Systems) (ペーパーバック)から始めましたが、非常に明確で役立つことがわかりました。

データベース システム: 設計、実装、および管理への実践的アプローチ (国際コンピューター サイエンス シリーズ) (ペーパーバック)

SQL とデータベースの設計は別の(しかし補完的な) スキルだと思います。

于 2008-12-18T10:54:41.940 に答える
40

この記事から始めました

http://en.tekstenuitleg.net/articles/software/database-design-tutorial/intro.html

本全体を読むよりもかなり簡潔で、データベース設計の基本 (正規化、関係の種類) を非常によく説明しています。

于 2012-10-04T17:09:13.620 に答える
28

経験は非常に重要ですが、テーブルデザインの観点からは、HibernateやGrailsなどのORMがどのように動作するかから多くを学び、なぜそれらが機能するのかを確認できます。加えて:

  1. さまざまな種類のデータを分離してください。たとえば、注文テーブルに住所を保存しないでください。たとえば、別の住所テーブルの住所にリンクしてください。

  2. 私は個人的に、主キーである各テーブル(m:n関係など、異なるテーブルをリンクするものではなく、データを保持する)に整数または長い代理キーを設定するのが好きです。

  3. また、タイムスタンプ列を作成および変更するのも好きです。

  4. クエリで「wherecolumn=val」を実行するすべての列に、インデックスがあることを確認してください。たぶん、データ型にとって世界で最も完璧なインデックスではありませんが、少なくともインデックスです。

  5. 外部キーを設定します。また、必要に応じてONDELETEおよびONMODIFYルールを設定し、オブジェクト構造に応じてカスケードまたはnullを設定します(したがって、オブジェクトツリーの「先頭」で1回だけ削除する必要があり、そのオブジェクトのすべてのサブオブジェクトは次のようになります。自動的に削除されます)。

  6. コードをモジュール化する場合は、DBスキーマをモジュール化することをお勧めします。たとえば、これは「顧客」領域、これは「注文」領域、これは「製品」領域であり、結合/リンクテーブルを使用します。それらの間は、1:nの関係であっても、重要な情報を複製する可能性があります(つまり、製品名、コード、価格をorder_detailsテーブルに複製します)。正規化について読んでください。

  7. 他の誰かが上記の一部またはすべてに対して正反対を推奨します:p-いくつかのことを行うための1つの本当の方法は決してありません!

于 2008-12-18T11:49:33.030 に答える
15

この記事がとても気に入りました.. http://www.codeproject.com/Articles/359654/important-database-designing-rules-which-I-fo

于 2014-05-08T17:43:00.673 に答える
6

Head First SQLは優れた入門書です。

于 2008-12-18T12:46:48.280 に答える
2

私がそれを読んでからしばらく経ちましたが(それで、どれだけがまだ関連しているかはわかりません)、私の記憶では、JoeCelkoのSQLfor Smartiesの本は、エレガントで効果的かつ効率的なクエリの作成に関する多くの情報を提供しています。

于 2008-12-18T11:46:20.820 に答える
2

これらは、私の意見では、さまざまな分野のさまざまな知識を必要とする質問です。

  1. 「どの」テーブルを作成するかを事前に知ることはできません。解決しなければならない問題を把握し、それに応じてスキーマを設計する必要があります。
  2. これは、データベース設計の決定とデータベース ベンダーのカスタム機能の組み合わせです (つまり、(r)dbms のドキュメントを確認し、最終的にはスケーリングに関する「ヒントとコツ」を学ぶ必要があります)。また、dbms の構成も重要です。スケーリング (複製、データ分割など);
  3. 繰り返しますが、ほぼすべての rdbms には SQL 言語の特定の「方言」が付属しているため、効率的なクエリが必要な場合は、その特定の方言を学ぶ必要があります。おそらく、効率的でもある洗練されたクエリを書くことは大したことです: 優雅さと効率はしばしば相反する目標です--

とはいえ、本を読みたいと思うかもしれません。個人的には、この本をデータベース大学のコースで使用しました (そして、まともな本を見つけましたが、この分野の他の本を読んだことがないので、私のアドバイスは以下をチェックすることです。データベース設計に関するいくつかの優れた本)。

于 2008-12-18T10:57:49.967 に答える