チュートリアル: Azure SQL データベースでリレーショナル データベースを設計する

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

Azure SQL データベースは、Microsoft Azure のリレーショナルなサービスとしてのデータベース (DBaaS) です。 このチュートリアルでは、次の作業を行う方法について説明します。

  • データベースに接続する
  • T-SQL コマンドでテーブルを作成する
  • BCP を使用してデータを一括で読み込む
  • T-SQL コマンドでデータを照会する

注意

このチュートリアルでは、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 SQL データベースは論理 SQL サーバー内に存在します。 ログインを使用して論理 SQL サーバーの master に接続し、データベースに接続できます。 または、包含ユーザーを使用して、Azure SQL データベースに直接接続できます。

SQL Server Management Studio を使用して、Azure SQL データベースに接続します。

  1. SQL Server Management Studio を開きます。

  2. [サーバーへの接続] ダイアログ ボックスで、次の情報を入力します。 他のオプションは既定値のままにします。

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

    SQL Server Management Studio (SSMS) の Azure SQL データベース論理サーバーへのサーバー接続ダイアログ ボックスのスクリーンショット。

  3. [サーバーに接続] ダイアログ ボックスの [オプション] を選択します。 [データベースへの接続] セクションに「yourDatabase」と入力して、このデータベースに接続します。

    SQL Server Management Studio (SSMS) の [サーバーへの接続] ダイアログ ボックスのオプション タブのスクリーンショット。

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

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

    オブジェクト エクスプローラーのデータベース オブジェクトが表示されている SQL Server Management Studio (SSMS) のスクリーンショット。

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

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

Transact-SQL を用いた大学の学生管理システムをモデル化する、4 つのテーブルを作成します。

  • Person
  • Course
  • Student
  • Credit

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

注意

SQL Server Management Studio のテーブル デザイナーを使用して、テーブルを作成および設計することも可能です。

テーブルリレーションシップを示す SQL Server Management Studio (SSMS) のテーブル デザイナーのスクリーンショット。

  1. クエリ ウィンドウで次の T-SQL クエリを実行し、データベース内の 4 つのテーブルを作成します。

    -- 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
        )
    )
    

    テーブルの作成スクリプトが正常に実行されたことを示す SSMS のスクリーンショット。

  2. オブジェクト エクスプローラーで、yourDatabaseTables ノードを展開すると、作成した新しいテーブルが 4 つ表示されます。

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

  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# を使用したデータベースの設計について学びます。