SQLソリューションの設計方法を学ぶための優れた情報源を知っていますか?
基本的な言語構文を超えて、私が理解するのに役立つ何かを探しています:
私はこの本から始めました: リレーショナルデータベース設計の明確な説明(データ管理システムのモーガンカウフマンシリーズ)(ペーパーバック) Jan L. Harrington
そして、あなたがこれに慣れると、これも良かったです データベースシステム:設計、実装、管理への実践的アプローチ(国際コンピューターサイエンスシリーズ) (ペーパーバック)
SQLとデータベースの設計は異なる(しかし補完的な)スキルだと思います。
この記事から始めました
http://en.tekstenuitleg.net/articles/software/database-design-tutorial/intro.html
本全体を読むのに比べてかなり簡潔で、データベース設計の基本(正規化、関係の種類)を非常によく説明しています。
経験は非常に重要ですが、テーブル設計に関しては、HibernateやGrailsなどのORMがどのように動作するかから多くのことを学び、それらがなぜ機能するのかを知ることができます。加えて:
さまざまな種類のデータを別々に保持します-注文テーブルに住所を保存しないでください。たとえば、個別の住所テーブルの住所にリンクします。
私は個人的に、主キーである各テーブルに整数または長い代理キーを持っているのが好きです(データを保持し、異なるテーブルを一緒にリンクするものではなく、たとえばm:n関係)。
また、タイムスタンプ列を作成および変更するのが好きです。
クエリで「where column = val」を実行するすべての列にインデックスがあることを確認してください。おそらく、データ型にとって世界で最も完璧なインデックスではなく、少なくともインデックスです。
外部キーをセットアップします。また、オブジェクト構造に応じて、カスケードまたはnullを設定する関連するON DELETEおよびON MODIFYルールを設定します(したがって、オブジェクトツリーの「ヘッド」で一度削除するだけで、そのオブジェクトのすべてのサブオブジェクトが取得されます自動的に削除されます)。
コードをモジュール化する場合、DBスキーマをモジュール化することができます。たとえば、これは「顧客」エリア、これは「注文」エリア、これは「製品」エリアで、結合/リンクテーブルを使用しますそれらは1:n関係であっても重要な情報を複製する可能性があります(つまり、製品名、コード、価格をorder_detailsテーブルに複製します)。正規化について読んでください。
他の誰かが、上記の一部またはすべてに対してまったく反対のことを推奨します。
Head First SQL は素晴らしい紹介です。
私がそれを読んでからしばらく経ちました(そのため、どれだけ関連性があるのかわかりません)が、私の記憶は、Joe CelkoのSQL for Smartiesの本がエレガントで効果的で効率的なクエリを書くための多くの情報を提供していることです。
これらは私の意見では、異なる領域から異なる知識を必要とする質問です。
つまり、多分あなたはいくつかの本を読みたいと思うかもしれません、個人的に私は this book を私のdatbase大学のコースで使用しました私のアドバイスは、データベース設計の良い本をチェックすることです。