sql >> データベース >  >> RDS >> Sqlserver

SQL Server Management Studio(SSMS)を使用したデータベース設計の概念パート1

    この記事は主に初心者向けに書かれています。それでも、SQLデータベースの専門家にとって同様に魅力的ないくつかの興味深いデータベース設計の概念をカバーしています。

    現在のパートでは、データベース設計の概念と、SQLデータベースのテーブル、列、および関係へのそれらのマッピングに焦点を当てています。これから使用するデータベースとツールの背景を理解していれば、自信を持って最初のSQLデータベースを設計できます。

    前提条件

    先に進む前に、次のことを確認してください。

    1. SQL Server 2016/2017/2019 Express/Developerエディションがマシンにインストールされています
    2. SSMS(SQL Server Management Studio)がインストールされています

    また、データベースと上記のツールの基本的な知識が必要です。

    最新のSQLServerとSSMSのバージョンがなくても問題ありません。ただし、最新バージョンではないにしても、新しいバージョンを使用することを強くお勧めします。以下のリソースから必要なバージョンを入手できます:

    • SQL Server 2017DeveloperEditionをダウンロードします。
    • SQL Server 2019をダウンロードします(または、最新のSQL Server Express / Developerエディションを入手します)。
    • または、DeveloperまたはExpressSQLServerの無料の専用エディションをダウンロードします。
    • SSMS(SQL Server Management Studio)をダウンロードする

    この記事の執筆時点では、これらのリンクはすべて正常に機能していることに注意してください。 Microsoftがそれらを置き換えることを決定した場合は、その時点で入手可能な新しいバージョンをダウンロードしてください。

    SQLデータベース設計について

    SQL Server Management Studio(SSMS)を使用してSQLデータベースの設計を開始するには、いくつかの設計計画を念頭に置いておく必要があります。

    データベース設計のコアコンセプトを知らなければ、それは簡単なことではありません。ただし、これらの概念とその実装を理解すると、当然、設計原則に従い始めます。これは、ほとんどすべてのデータベース開発者に共通しています。

    まず、いくつかのコアデータベース設計の概念を見ていきましょう。それらすべてを1つの記事で網羅するのは簡単ではありませんが、最初から何かが必要です。

    私たちは、次の点で典型的なデータベースを理解しています。

    1. エンティティ
    2. 属性
    3. 関係

    エンティティとは何ですか?

    エンティティとは、企業または個人がデータベースに保存したいものです。例:

    1. お客様。
    2. 注文。
    3. 製品。

    お客様と言えます ビジネスがトランザクション、分析、およびレポートの目的でデータベース構造に格納する場合は、エンティティです。同様に、注文 顧客によって配置されました 企業がその情報を見たい場合は、エンティティでもあります。したがって、この情報はデータベースの一部である必要があります。

    ただし、注文 製品なしではあまり意味がありません 。顧客に提供される製品もエンティティです。

    エンティティはデータベースにどのようにマッピングされますか?

    データベースの観点からは、エンティティをテーブルにマップできます。したがって、ビジネスでCustomer、Order、およびProductエンティティが必要な場合、データベース開発者はこれらを3つのテーブルとしてマップできます。

    属性とは何ですか?

    属性はエンティティの説明です。例:

    1. CustomerName
    2. OrderType
    3. 製品名

    顧客がエンティティの場合、顧客の名前( CustomerName )は属性です。この属性は、エンティティ(顧客)を表します )。同様に、 OrderType 注文の属性です エンティティ、および ProductName 製品の属性です エンティティ。

    属性はデータベースにどのようにマッピングされますか?

    CustomerName、などの属性 顧客について説明します テーブルであり、そのテーブルの列にマップできます。

    複数の属性を持つエンティティ

    エンティティが複数の属性を持つことは問題ありません。したがって、テーブル(エンティティ)に多くの列(属性)を含めることができます。

    実体関連

    エンティティは、関係を通じて別のエンティティに関連付けることができます。テーブルを別のテーブルに関連付けることができます。エンティティまたは表形式の関係には多くの種類があります:

    顧客と注文の関係(1対多)

    顧客(エンティティ/テーブル)は、次の理由で注文(エンティティ/テーブル)に関連付けることができます。

    1. 顧客は1つの注文を行うことができます。
    2. 顧客は多くの注文を行うことができます。

    逆もまた真です:

    1. 1人の顧客が多くの注文を行うことができます。
    2. 1人の顧客が1つの注文を行うことができます。

    これは、1対多の関係の例です。 :1人の顧客が多数の注文を行うことができ、1人の顧客が多数の注文を行うことができます。

    製品と注文の関係(1対多)

    製品(エンティティ/テーブル)は、次のように注文(エンティティ/テーブル)に関連付けることができます:

    1. 商品を1つの注文に割り当てることができます。
    2. 製品は多くの注文に割り当てることができます。

    同様に:

    1. 多くの注文を製品に割り当てることができます。
    2. 1つの注文に1つの商品を含めることができます。

    製品の間には1対多の関係があります および注文

    顧客と製品の関係(多対多)

    ここで、顧客と製品の関係を次のように説明します。

    1. 顧客は1つの製品を購入できます。
    2. 顧客は複数の製品を購入できます。
    3. 顧客は製品を購入できます。
    4. 製品は複数の顧客が購入できます。

    多くの製品は多くの顧客が購入できます。つまり、顧客 および製品 関係は多対多です 。

    下の図を見てください:

    学生-インストラクターの設計シナリオ

    別のデータベース設計シナリオを考えてみましょう。この記事の他の部分では、SSMS(SQL Server Management Studio)を使用して実装します。

    ビジネス要件

    次の情報を格納するデータベースを設計する必要があるとします。

    1. 学生。
    2. インストラクター。
    3. インストラクターが割り当てられている学生。
    4. 生徒に割り当てられているインストラクター。

    予備分析

    よく観察すると、上記の要件について非常に興味深いことがわかります。 「インストラクターを割り当てた学生」と「学生に割り当てられたインストラクター」は同じ要件です。

    データベース設計のコンテキストでは、2つの異なる外観の要件が同じであることが判明することがよくあります。

    エンティティを特定する

    次のエンティティは、要件からすぐに抽出できます。

    1. 学生
    2. インストラクター

    ただし、もう1つのエンティティは、学生に割り当てられたインストラクターに関する情報を提供する役割を果たします。

    Orderテーブルを使用した最初の例を思い出してください。多くの顧客はCustomer-Order関係で多くの注文を購入できます。 学生インストラクターに似ています 表形式の関係–多くのインストラクターを多くの学生に割り当てることができます。

    属性を特定する

    その顧客注文シナリオに従って、識別されたエンティティに役立つ属性を選択できます。

    1. 学生:学生ID、名前。
    2. インストラクター:インストラクターID、名前。
    3. Student-Instructor:Student-Instructor ID、Student ID、InstructorID。

    アイデンティティの関係:

    エンティティの関係を特定します:

    1. 学生->学生-インストラクター(1対多)。
    2. インストラクター->学生-インストラクター(1対多)。
    3. 学生->インストラクター(多対多)

    多対多の関係を解決するために、常にミッドテーブルを使用することを忘れないでください。そのため、Student-Instructorエンティティを計画に取り入れました。

    エンティティと属性のテーブルと列へのマッピング

    これで、エンティティをテーブルにマップできます。したがって、次の3つのテーブルを作成します。

    1. 学生。
    2. インストラクター。
    3. 学生-インストラクター。

    同様に、これらのエンティティの属性は、列にマップされると、次のようになります。

    1. 学生:StudentId、名前。
    2. インストラクター:InstructorId、名前。
    3. Student-Instructor:StudentInstructorId、StudentId、InstructorId。

    下の図に注意してください:

    おめでとう!これで、データベース設計の概念を習得できました。エンティティ、属性、関係、およびそれらをデータベース内のテーブルと列にマップする手順についてはよく知っています。

    次の記事では、SSMS(SQL Server Management Studio)を使用したデータベース設計手順について説明します。

    やるべきこと

    データベース設計の基本を理解したので、スキルをさらに向上させるために次のことを試してください。

    1. Supplierという別のエンティティを追加してみてください SupplierId属性とSupplierName属性を使用します。次の関係を正しく識別できるかどうかを確認してください。
      1. サプライヤー-注文;
      2. サプライヤー-顧客;
      3. サプライヤー-製品。
    2. ライブラリのエンティティ、属性、および関係を特定するとともに、データベースを設計します。ヒント:本は会員に発行され、会員は図書館から本を借ります。 メンバー、本、発行済み エンティティにすることができます。
    3. 上記のように、エンティティの次の表形式の関係のタイプを特定します。
      1. メンバー-発行済み;
      2. 本発行;
      3. メンバーブック;
      4. 本のメンバー。

    お読みください

    SQL Server Management Studio(SSMS)を使用したデータベース設計の学習–パート2


    1. グループごとの最大クエリを最適化する

    2. 転送されたレコードのパフォーマンスの問題の特定と修正

    3. インスタンス上のすべてのデータベースで同じクエリを実行するにはどうすればよいですか?

    4. SQLServer2014の探索SELECTINTOParallelism