チュートリアル: Azure Data Studio (ADS) を使用して Azure SQL Database でリレーショナル データベースを設計する

適用対象: Azure SQL データベース

Azure SQL Database は、Microsoft Cloud (Azure) のリレーショナルなサービスとしてのデータベース (DBaaS) です。 このチュートリアルでは、Azure portal と Azure Data Studio (ADS) を使って以下のことを行う方法を説明します。

  • Azure Data Studio でデータベースに接続する
  • Azure Data Studio でテーブルを作成する
  • BCP を使用してデータを一括で読み込む
  • Azure Data Studio でデータのクエリを実行する

注意

このチュートリアルでは、Azure SQL Database を使用しています。 エラスティック プールでプールされたデータベース、または SQL Managed Instance を使用することもできます。 SQL Managed Instance への接続については、以下の SQL Managed Instance のクイックスタートを参照してください。「クイック スタート: Azure SQL Managed Instance に接続するように Azure VM を構成する」および「クイックスタート: オンプレミスから Azure SQL Managed Instance へのポイント対サイト接続を構成する」。

前提条件

このチュートリアルを完了するには、以下がインストールされていることを確認してください。

Azure portal にサインインする

Azure portal にサインインします。

サーバーレベルの IP ファイアウォール規則を作成する

Azure SQL Database では、サーバーレベルで IP ファイアウォールが作成されます。 このファイアウォールにより、外部のアプリケーションやツールは、ファイアウォール規則でその IP がファイアウォールの通過を許可されていない限り、サーバーおよびサーバー上のすべてのデータベースに接続できなくなります。 データベースに外部から接続できるようにするには、まず、IP アドレス (または IP アドレス範囲) に対する IP ファイアウォール規則を追加する必要があります。 以下の手順に従って、サーバーレベルの IP ファイアウォール規則を作成します。

重要

Azure SQL Database の通信は、ポート 1433 上で行われます。 企業ネットワーク内からこのサービスに接続しようとしても、ポート 1433 でのアウトバウンド トラフィックがネットワークのファイアウォールで禁止されている場合があります。 その場合、管理者がポート 1433 を開かない限り、データベースに接続することはできません。

  1. デプロイが完了したら、Azure portal メニューから [SQL データベース] を選択するか、または任意のページから [SQL データベース] を検索して選択します。

  2. [SQL データベース] ページで [yourDatabase] を選択します。 データベースの概要ページが開き、完全修飾 [サーバー名] (contosodatabaseserver01.database.windows.net など) が表示され、それ以上の構成のためのオプションが提供されます。

    サーバー名が強調表示されている Azure portal の [データベースの概要] ページのスクリーンショット。

  3. この完全修飾サーバー名をコピーします。これは、SQL Server Management Studio からお客様のサーバーとデータベースに接続するために使用します。

  4. [設定] で、 [ネットワーク] を選択します。 [パブリック アクセス] タブを選択し、[パブリック ネットワーク アクセス][選択したネットワーク] を選択して、[ファイアウォール規則] セクションを表示します。

    サーバー レベルの IP ファイアウォール規則を設定する場所を示す [ネットワーク] ページの Azure portal のスクリーンショット。

  5. ツール バーの [クライアント IPv4 の追加] をクリックし、現在の IP アドレスを新しい IP ファイアウォール規則に追加します。 IP ファイアウォール規則は、単一の IP アドレスまたは IP アドレスの範囲に対して、ポート 1433 を開くことができます。

  6. [保存] を選択します。 サーバーでポート 1433 を開いている現在の IP アドレスに対して、サーバーレベルの IP ファイアウォール規則が作成されます。

  7. [OK] を選択し、 [ファイアウォール設定] ページを閉じます。

これで IP アドレスが IP ファイアウォールを通過できるようになりました。 SQL Server Management Studio やその他の任意のツールを使用して、データベースに接続できます。 必ず、お客様が先ほど作成したサーバー管理者アカウントを使用してください。

重要

既定では、すべての Azure サービスで、SQL Database IP ファイアウォール経由のアクセスが有効になります。 すべての Azure サービスに対して無効にするには、このページの [オフ] を選択します。

データベースに接続する

Azure Data Studio を使って、データベースへの接続を確立します。

  1. Azure Data Studio を開きます。

  2. オブジェクト エクスプローラーの [新しい接続] で新しい接続を作成して次の情報を入力します。 他のオプションは既定値のままにします。

    設定 提案された値 説明
    接続の種類 Microsoft SQL Server この値は必須です。
    サーバー名 完全修飾 Azure SQL データベース論理サーバー名 たとえば、your_logical_azure_sql_server.database.windows.net のようにします。
    認証の種類 SQL Server 認証 SQL Server 認証を使用して、ユーザー名とパスワードを入力します。
    Microsoft Entra 認証 Microsoft Entra ID を使用して接続するには、Microsoft Entra サーバー管理者の場合は、[Microsoft Entra ID - MFA サポート付きユニバーサル] を選択します。 詳細については、Azure SQL による Microsoft Entra 認証の構成と管理を参照してください。
    Login サーバー管理者アカウント サーバーの作成時に指定したアカウントです。
    パスワード サーバー管理者アカウントのパスワード お客様がサーバーを作成したときに指定したパスワードです。

    ADS の接続ダイアログ ボックスのスクリーンショット。

  3. [接続] を選択します。 ADS で [オブジェクト エクスプローラー] ウィンドウが開きます。

  4. オブジェクト エクスプローラーで、DatabasesyourDatabase の順に展開して、サンプル データベース内のオブジェクトを表示します。

  5. オブジェクト エクスプローラーyourDatabase を右クリックし、 [新しいクエリ] を選択します。 データベースに接続された空のクエリ ウィンドウが開きます。

データベースのテーブルを作成する

Azure Data Studio のテーブル デザイナーを使って、大学用の学生管理システムをモデル化する 4 つのテーブルを含むデータベース スキーマを作成します。

  • Person
  • Course
  • Student
  • Credit

次の図は、これらのテーブルの相互関係を示しています。 テーブルの一部は、他のテーブル内の列を参照します。 たとえば Student テーブルは、PersonId テーブルの Person 列を参照します。 このチュートリアルのテーブルの相互関係を把握するため、図を詳しく確認します。 有効な正規化されたデータベース テーブルを作成する方法の詳細については、「正規化されたデータベースの設計」を参照してください。 データ型の選択については、データ型を参照してください。 既定では、テーブルは既定のdbo スキーマに作成されます。つまり、たとえば、テーブルの 2 部構成の名前は dbo.Person となります。

テーブルのリレーションシップのスクリーンショット。

  1. オブジェクト エクスプローラーで、yourDatabase を選択してこのデータベースに格納されているすべてのプロセスのドロップダウン メニューを開き、Tables フォルダーを右クリックして、[新しいテーブル] を選択します。 データベースに接続された空のテーブル デザイナーが開きます。

  2. テーブル デザイナーのインターフェイスを使って、データベースにこれら 4 つのテーブルを作成します。 テーブル デザイナーを使ってテーブルを作成する方法について詳しくは、テーブル デザイナーのドキュメントをご覧ください。

    • Person テーブル

      テーブル デザイナーの Person テーブルのスクリーンショット。

      Person テーブルの主キーは、必ず次のように設定します。

      主キーの設定を示す、テーブル デザイナーの Person テーブルのスクリーンショット。

    • Student テーブル

      テーブル デザイナーの Student テーブルのスクリーンショット。

      次に示すように、Student テーブルの主キーの設定を構成します。 主キーの設定を示す、テーブル デザイナーの Student テーブルのスクリーンショット。

      次に示すように、Student テーブルの外部キーの設定を構成します。 外部キーの設定を示す、テーブル デザイナーの Student テーブルのスクリーンショット。

    • Course テーブル

      テーブル デザイナーの Course テーブルのスクリーンショット。

      次に示すように、Course テーブルの主キーの設定を構成します。 主キーの設定を示す、テーブル デザイナーの Course テーブルのスクリーンショット。

    • Credit テーブル

      テーブル デザイナーの Credit テーブルのスクリーンショット。

      次に示すように、Credit テーブルの外部キーの設定を構成します。 外部キーの設定を示す、テーブル デザイナーの Credit テーブルのスクリーンショット。

      次に示すように、Credit テーブルの CHECK 制約の設定を構成します。 CHECK 制約の設定を示す、テーブル デザイナーの Credit テーブルのスクリーンショット。

    T-SQL を使用して 4 つの新しいテーブルを作成する場合は、新しいクエリ ウィンドウで実行する T-SQL を次に示します。

    -- Create Person table
    CREATE TABLE Person
    (
        PersonId INT IDENTITY PRIMARY KEY,
        FirstName NVARCHAR(128) NOT NULL,
        MiddelInitial NVARCHAR(10),
        LastName NVARCHAR(128) NOT NULL,
        DateOfBirth DATE NOT NULL
    )
    
    -- Create Student table
    CREATE TABLE Student
    (
        StudentId INT IDENTITY PRIMARY KEY,
        PersonId INT REFERENCES Person (PersonId),
        Email NVARCHAR(256)
    )
    
    -- Create Course table
    CREATE TABLE Course
    (
        CourseId INT IDENTITY PRIMARY KEY,
        Name NVARCHAR(50) NOT NULL,
        Teacher NVARCHAR(256) NOT NULL
    )
    
    -- Create Credit table
    CREATE TABLE Credit
    (
        StudentId INT REFERENCES Student (StudentId),
        CourseId INT REFERENCES Course (CourseId),
        Grade DECIMAL(5,2) CHECK (Grade <= 100.00),
        Attempt TINYINT,
        CONSTRAINT [UQ_studentgrades] UNIQUE CLUSTERED
        (
            StudentId, CourseId, Grade, Attempt
        )
    )
    
  3. オブジェクト エクスプローラーで、yourDatabaseTables ノードを展開すると、作成した新しいテーブルが 4 つ表示されます。

    ADS で作成されたテーブルのスクリーンショット。

テーブルにデータを読み込む

  1. ローカル ワークステーション Downloads フォルダーに sampleData という名前のフォルダーを作成し、データベース用のサンプル データを格納します。 たとえば、c:\Users\<your user name>\Downloads のようにします。

  2. 次のリンクを右クリックし、それらを sampleData フォルダーに保存します。

  3. 新しい Windows コマンド プロンプト ウィンドウを開き、sampleData フォルダーに移動します。 たとえば、cd c:\Users\<your user name>\Downloads のようにします。

  4. 次の bcp コマンドを実行して、サンプル データをテーブルに挿入します。serverdatabaseuserpassword の各値は、お客様の環境の値に置き換えてください。

    bcp Course in SampleCourseData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t ","
    bcp Person in SamplePersonData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t ","
    bcp Student in SampleStudentData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t ","
    bcp Credit in SampleCreditData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t ","
    

これで、先ほど作成したテーブルにサンプル データが読み込まれました。

クエリ データ

データベース テーブルから情報を取得するには、次の T-SQL クエリを実行します。

この最初のクエリでは 4 つのテーブルをすべて結合し、"Dominick Pope" の指導を受けた生徒のうち、成績が 75% を超えている生徒を検索します。 クエリ ウィンドウで次の T-SQL クエリを実行します。

-- Find the students taught by Dominick Pope who have a grade higher than 75%
SELECT  person.FirstName, person.LastName, course.Name, credit.Grade
FROM  Person AS person
    INNER JOIN Student AS student ON person.PersonId = student.PersonId
    INNER JOIN Credit AS credit ON student.StudentId = credit.StudentId
    INNER JOIN Course AS course ON credit.CourseId = course.courseId
WHERE course.Teacher = 'Dominick Pope'
    AND Grade > 75;

このクエリでは 4 つのテーブルをすべて結合し、"Noe Coleman" がこれまでに登録したコースを検索します。 クエリ ウィンドウで次の T-SQL クエリを実行します。

-- Find all the courses in which Noe Coleman has ever enrolled
SELECT  course.Name, course.Teacher, credit.Grade
FROM  Course AS course
    INNER JOIN Credit AS credit ON credit.CourseId = course.CourseId
    INNER JOIN Student AS student ON student.StudentId = credit.StudentId
    INNER JOIN Person AS person ON person.PersonId = student.PersonId
WHERE person.FirstName = 'Noe'
    AND person.LastName = 'Coleman';

ヒント

SQL クエリの作成の詳細については、「チュートリアル: Transact-SQL ステートメントの作成」にアクセスしてください。

ヒント

.NET アプリケーションの開発を開始する準備はできましたか? この無料の Learn モジュールでは、単純なデータベースの作成など、Azure SQL Database に対してクエリを行う ASP.NET アプリケーションを開発および構成する方法を学習できます。

次のステップ

次のチュートリアルでは、Visual Studio と C# を使用したデータベースの設計について学びます。