チュートリアル: 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 Data Studio (最新バージョン)
- BCP と SQLCMD (最新バージョン)。
- Azure サブスクリプションをお持ちでない場合は、始める前に無料アカウントを作成してください。
- Azure SQL データベースをまだ作成していない場合は、「クイック スタート: 単一データベースを作成する」を参照してください。 プランを使用して Azure SQL データベースを無料 (プレビュー) で試すオプションを探します。
Azure portal にサインインする
Azure portal にサインインします。
サーバーレベルの IP ファイアウォール規則を作成する
Azure SQL Database では、サーバーレベルで IP ファイアウォールが作成されます。 このファイアウォールにより、外部のアプリケーションやツールは、ファイアウォール規則でその IP がファイアウォールの通過を許可されていない限り、サーバーおよびサーバー上のすべてのデータベースに接続できなくなります。 データベースに外部から接続できるようにするには、まず、IP アドレス (または IP アドレス範囲) に対する IP ファイアウォール規則を追加する必要があります。 以下の手順に従って、サーバーレベルの IP ファイアウォール規則を作成します。
重要
Azure SQL Database の通信は、ポート 1433 上で行われます。 企業ネットワーク内からこのサービスに接続しようとしても、ポート 1433 でのアウトバウンド トラフィックがネットワークのファイアウォールで禁止されている場合があります。 その場合、管理者がポート 1433 を開かない限り、データベースに接続することはできません。
デプロイが完了したら、Azure portal メニューから [SQL データベース] を選択するか、または任意のページから [SQL データベース] を検索して選択します。
[SQL データベース] ページで [yourDatabase] を選択します。 データベースの概要ページが開き、完全修飾 [サーバー名] (
contosodatabaseserver01.database.windows.net
など) が表示され、それ以上の構成のためのオプションが提供されます。この完全修飾サーバー名をコピーします。これは、SQL Server Management Studio からお客様のサーバーとデータベースに接続するために使用します。
[設定] で、 [ネットワーク] を選択します。 [パブリック アクセス] タブを選択し、[パブリック ネットワーク アクセス] で [選択したネットワーク] を選択して、[ファイアウォール規則] セクションを表示します。
ツール バーの [クライアント IPv4 の追加] をクリックし、現在の IP アドレスを新しい IP ファイアウォール規則に追加します。 IP ファイアウォール規則は、単一の IP アドレスまたは IP アドレスの範囲に対して、ポート 1433 を開くことができます。
[保存] を選択します。 サーバーでポート 1433 を開いている現在の IP アドレスに対して、サーバーレベルの IP ファイアウォール規則が作成されます。
[OK] を選択し、 [ファイアウォール設定] ページを閉じます。
これで IP アドレスが IP ファイアウォールを通過できるようになりました。 SQL Server Management Studio やその他の任意のツールを使用して、データベースに接続できます。 必ず、お客様が先ほど作成したサーバー管理者アカウントを使用してください。
重要
既定では、すべての Azure サービスで、SQL Database IP ファイアウォール経由のアクセスが有効になります。 すべての Azure サービスに対して無効にするには、このページの [オフ] を選択します。
データベースに接続する
Azure Data Studio を使って、データベースへの接続を確立します。
Azure Data Studio を開きます。
オブジェクト エクスプローラーの [新しい接続] で新しい接続を作成して次の情報を入力します。 他のオプションは既定値のままにします。
設定 提案された値 説明 接続の種類 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 で [オブジェクト エクスプローラー] ウィンドウが開きます。
オブジェクト エクスプローラーで、Databases、yourDatabase の順に展開して、サンプル データベース内のオブジェクトを表示します。
オブジェクト エクスプローラーで yourDatabase を右クリックし、 [新しいクエリ] を選択します。 データベースに接続された空のクエリ ウィンドウが開きます。
データベースのテーブルを作成する
Azure Data Studio のテーブル デザイナーを使って、大学用の学生管理システムをモデル化する 4 つのテーブルを含むデータベース スキーマを作成します。
Person
Course
Student
Credit
次の図は、これらのテーブルの相互関係を示しています。 テーブルの一部は、他のテーブル内の列を参照します。 たとえば Student
テーブルは、PersonId
テーブルの Person
列を参照します。 このチュートリアルのテーブルの相互関係を把握するため、図を詳しく確認します。 有効な正規化されたデータベース テーブルを作成する方法の詳細については、「正規化されたデータベースの設計」を参照してください。 データ型の選択については、データ型を参照してください。 既定では、テーブルは既定のdbo
スキーマに作成されます。つまり、たとえば、テーブルの 2 部構成の名前は dbo.Person
となります。
オブジェクト エクスプローラーで、yourDatabase を選択してこのデータベースに格納されているすべてのプロセスのドロップダウン メニューを開き、Tables フォルダーを右クリックして、[新しいテーブル] を選択します。 データベースに接続された空のテーブル デザイナーが開きます。
テーブル デザイナーのインターフェイスを使って、データベースにこれら 4 つのテーブルを作成します。 テーブル デザイナーを使ってテーブルを作成する方法について詳しくは、テーブル デザイナーのドキュメントをご覧ください。
Person テーブル
Person テーブルの主キーは、必ず次のように設定します。
Student テーブル
Course テーブル
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 ) )
オブジェクト エクスプローラーで、yourDatabase の Tables ノードを展開すると、作成した新しいテーブルが 4 つ表示されます。
テーブルにデータを読み込む
ローカル ワークステーション Downloads フォルダーに sampleData という名前のフォルダーを作成し、データベース用のサンプル データを格納します。 たとえば、
c:\Users\<your user name>\Downloads
のようにします。次のリンクを右クリックし、それらを sampleData フォルダーに保存します。
新しい Windows コマンド プロンプト ウィンドウを開き、sampleData フォルダーに移動します。 たとえば、
cd c:\Users\<your user name>\Downloads
のようにします。次の
bcp
コマンドを実行して、サンプル データをテーブルに挿入します。server、database、user、password の各値は、お客様の環境の値に置き換えてください。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 ステートメントの作成」にアクセスしてください。
関連するコンテンツ
- チュートリアル: Azure SQL データベースでリレーショナル データベースを設計する
- Azure SQL Database を無料で試す (プレビュー)
- Azure SQL データベースの新機能とは?
- 構成と管理に関するコンテンツ参照 - Azure SQL データベース
- Azure SQL Database のコストを計画および管理する
ヒント
.NET アプリケーションの開発を開始する準備はできましたか? この無料の Learn モジュールでは、単純なデータベースの作成など、Azure SQL Database に対してクエリを行う ASP.NET アプリケーションを開発および構成する方法を学習できます。
次のステップ
次のチュートリアルでは、Visual Studio と C# を使用したデータベースの設計について学びます。