SQL ソリューションの設計方法を学ぶための良い情報源を知っていますか?
基本的な言語構文を超えて、理解するのに役立つものを探しています:
- 作成するテーブルとそれらをリンクする方法
- さまざまな規模に合わせて設計する方法 (小さなクライアント APP から巨大な分散 Web サイトまで)
- 効果的/効率的/エレガントな SQL クエリの書き方
SQL ソリューションの設計方法を学ぶための良い情報源を知っていますか?
基本的な言語構文を超えて、理解するのに役立つものを探しています:
Jan L. Harrington 著の Relational Database Design Clearly Explained (The Morgan Kaufmann Series in Data Management Systems) (ペーパーバック)から始めましたが、非常に明確で役立つことがわかりました。
データベース システム: 設計、実装、および管理への実践的アプローチ (国際コンピューター サイエンス シリーズ) (ペーパーバック)
SQL とデータベースの設計は別の(しかし補完的な) スキルだと思います。
この記事から始めました
http://en.tekstenuitleg.net/articles/software/database-design-tutorial/intro.html
本全体を読むよりもかなり簡潔で、データベース設計の基本 (正規化、関係の種類) を非常によく説明しています。
経験は非常に重要ですが、テーブルデザインの観点からは、HibernateやGrailsなどのORMがどのように動作するかから多くを学び、なぜそれらが機能するのかを確認できます。加えて:
さまざまな種類のデータを分離してください。たとえば、注文テーブルに住所を保存しないでください。たとえば、別の住所テーブルの住所にリンクしてください。
私は個人的に、主キーである各テーブル(m:n関係など、異なるテーブルをリンクするものではなく、データを保持する)に整数または長い代理キーを設定するのが好きです。
また、タイムスタンプ列を作成および変更するのも好きです。
クエリで「wherecolumn=val」を実行するすべての列に、インデックスがあることを確認してください。たぶん、データ型にとって世界で最も完璧なインデックスではありませんが、少なくともインデックスです。
外部キーを設定します。また、必要に応じてONDELETEおよびONMODIFYルールを設定し、オブジェクト構造に応じてカスケードまたはnullを設定します(したがって、オブジェクトツリーの「先頭」で1回だけ削除する必要があり、そのオブジェクトのすべてのサブオブジェクトは次のようになります。自動的に削除されます)。
コードをモジュール化する場合は、DBスキーマをモジュール化することをお勧めします。たとえば、これは「顧客」領域、これは「注文」領域、これは「製品」領域であり、結合/リンクテーブルを使用します。それらの間は、1:nの関係であっても、重要な情報を複製する可能性があります(つまり、製品名、コード、価格をorder_detailsテーブルに複製します)。正規化について読んでください。
他の誰かが上記の一部またはすべてに対して正反対を推奨します:p-いくつかのことを行うための1つの本当の方法は決してありません!
この記事がとても気に入りました.. http://www.codeproject.com/Articles/359654/important-database-designing-rules-which-I-fo
Head First SQLは優れた入門書です。
私がそれを読んでからしばらく経ちましたが(それで、どれだけがまだ関連しているかはわかりません)、私の記憶では、JoeCelkoのSQLfor Smartiesの本は、エレガントで効果的かつ効率的なクエリの作成に関する多くの情報を提供しています。
これらは、私の意見では、さまざまな分野のさまざまな知識を必要とする質問です。
とはいえ、本を読みたいと思うかもしれません。個人的には、この本をデータベース大学のコースで使用しました (そして、まともな本を見つけましたが、この分野の他の本を読んだことがないので、私のアドバイスは以下をチェックすることです。データベース設計に関するいくつかの優れた本)。