これは、SQL ServerManagementStudioの使用法に焦点を当てたシリーズの第2部です。データベース設計のコアコンセプトと問題を学び、SSMS(SQL Server Management Studio)を使用して単純なSQLデータベースを設計するためのウォークスルーを取得します。
前提条件
- SQL Server 2016/2017/2019 Express/Developerエディションがインストールされています。
- 最新バージョンのSSMS(SQL Server Management Studio)がインストールされています。
- 読者は、SQLデータベースと上記のツールに関する基本的な知識を持っています。
- 基本的なデータベース設計の概念は明確です。
- 読者は、パート1で説明した学生と教師の設計シナリオに精通しています。
SQL Server ManagementStudioSSMSを使用したデータベース設計の学習パート1を参照してください。 上記の要件の詳細については、
SSMSを使用した学生-教師データベースの設計
SSMSを使用して単純なSQLデータベースの作成を開始します。ただし、設計を開始する前に、計画されたデータベースの要約を用意しておくことをお勧めします。
学生-インストラクターデータベースの要約
次の3つのテーブルで構成される単純なデータベースについて説明しました。
- 学生 。このテーブルには、学生に属するレコードが含まれています。
- インストラクター 。このテーブルには、すべてのインストラクターに関する情報が格納されています。
- 学生-インストラクター 。これは、どのインストラクターがどの生徒に割り当てられているかを示しています。
重要: 複数の学生をインストラクターに割り当てることができ、複数のインストラクターを1人の学生に割り当てることができます(さまざまな科目について)。
言い換えれば、多くの学生が多くのインストラクターを持つことができます。
Student-InstructorTableをCourseTableに置き換える
Student-Instructorデータベースを少し改良してみましょう。Student-Instructorテーブルの名前をCourseテーブルに変更します。
このように、各コースには複数の学生がいる可能性があり、各インストラクターは同じコースに複数の学生がいる可能性があることを理解しやすくなります。
これらのテーブルについて、次の列を計画しています。
- 学生:StudentId、名前。
- インストラクター:InstructorId、名前。
- コース:CouseId、Name、StudentId、InstructorId。
SSMS(SQL Server Management Studio)を起動します
SSMSと入力します Windows検索ボックス 結果のリストでそれをクリックして、ソフトウェアを起動します。
インストールしたバージョンが表示されることに注意してください。この例では、SSMS(SQL Server Management Studio)バージョン18.0です。
SQLServerデータベースエンジンに接続する
オブジェクトエクスプローラー ウィンドウで、接続をクリックします 、次にデータベースエンジンを選択します :
サーバー名(マシンにインストールしたSQL Serverの名前)を選択します。デフォルト設定に基づいてデータベースエンジンに接続します。この例では、Windows認証モードを使用します:
新しいStudentInstructorSQLデータベースを作成する
接続したら、データベースを右クリックします オブジェクトエクスプローラーのノード 、[新しいデータベース…]をクリックします 以下に示すように:
データベースの名前を入力しますStudentInstructor 。 OK、をクリックします 変更する必要がない限り、デフォルト設定のままにします:
データベースを今すぐ作成する必要があります。
同じデータベースを展開します それを見つけるノード:
生徒用テーブルを作成する
次に、StudentInstructorデータベースにテーブルを作成する必要があります。
StudentInstructorを展開します データベースノード:それをクリックしてから、テーブルを右クリックします。
新規に移動します ->テーブル… 次のように:
テーブルに列を1つずつ追加します。 StudentIdから始めます 。
StudentIdと入力します 列名を選択し、 intを選択します 数値になるためのデータ型(数値のみ):
主キーの設定
StudentId 列もテーブルの主キーになります。生徒(行/記録)を一意に識別するのに役立ちます。
StudentIdを指す矢印を右クリックします 列をクリックし、主キーの設定をクリックします :
主キー(StudentId)にIDを追加する
列に設定されたIDは、新しいレコードが挿入されるときにその値を自動的にインクリメントします。これはシリアル番号のようなもので、新しいレコードごとに増加します。
主キー列をID列として設定しない場合は、新しいレコードごとにIDを手動で追加します。これは、設定することをお勧めします。
たとえば、Studentテーブルに挿入された最初のレコードには自動ID 1があり、次のレコードはStudentId2などになります。これはIDを設定した場合です。
列のプロパティを下にスクロールします StudentIdのウィンドウ ID仕様が見つかるまで主キー列が選択されます プロパティ。
ID仕様を次のように設定します( is Identityで始まる) :
ID仕様 : はい
(アイデンティティです) : はい
IDの増分 :1
アイデンティティシード :1
生徒テーブルに名前列を追加
次に、別の列を追加します–名前 テーブルに。 varchar(45)を使用します データ型を選択し、Nullを許可するのチェックを外します 次のように:
VARCHAR(45)であることを忘れないでください 列(名前)に格納される最大45文字の文字データ(タイプ)を表します。 Nullを許可するのチェックを外すと 、 Student を保存するには、この値を列に指定する必要があります 記録します。
テーブルを保存する(学生)
最も重要なステップは、変更を保存することです。この例では、保存をクリックするだけで、新しく作成したテーブルを保存します。 ツールバーまたはキーボードショートカットのディスクアイコンCTRL+ S 。
テーブルの名前を入力します–学生 –保存する場合:
生徒テーブルを表示する(オブジェクトエクスプローラー)
テーブルが正常に保存されたら、テーブルを展開します StudentInstructorのノード 新しく作成されたテーブルを見つけるためのデータベース:
InstrutorId列とName列を使用してインストラクターテーブルを作成する
同様に、テーブルを右クリックします 再びノード。今回は、インストラクターという新しいテーブルを作成します 。
次に、 InstructorIdという新しい列を追加します int データ型を入力し、以下に示すように主キーとして設定します。
次のステップは、 IDを追加することです 列にInstructorId :
この後、名前を追加します VARCHAR(45)の列 インストラクターへのデータ型 テーブル。名前の場合と同様に、この列にNullを許可しないでください。 学生の列 テーブル:
インストラクターテーブルの保存と表示(オブジェクトエクスプローラー)
CTRL + S を押して、テーブルを保存します ショートカットまたは[保存]アイコンをクリックします。テーブルにインストラクターという名前を付けます 。
テーブルを右クリックします StudentInstructorの下のノード データベースをクリックし、更新をクリックします 両方のテーブルを今すぐ表示するには:
IDを使用してCourseId主キー列を使用してコーステーブルを作成する
データベースにもう1つのテーブルを追加する必要があります–コース テーブル。StudentテーブルとInstructorテーブルの両方からのIDが含まれます。多対多の関係があります(私たちの要件に従って、多くの学生を多くのインストラクターに割り当てることができます)。
新しいテーブルを作成するコース CourseId 主キー:
StudentId の場合と同じ方法で、列にIDを追加します。 およびInstructorId 列。
名前、StudentId、CourseId列を追加
次に、名前を追加します タイプVARCHAR(45)の列 コースへ テーブルに続いてStudentIdを追加します およびCourseId intの列 データ型:
Nullを許可するのチェックを外すことを忘れないでください これらの列の値を入力せずにレコードが保存されないようにするため。
このようにして、 a コース 学生が必要です およびインストラクター データベースに保存する前に。その上、学生 およびインストラクター 元のテーブルに存在する必要があります。
保存とクイックチェック
テーブルを保存し、名前はコース:
最後に、更新 オブジェクトエクスプローラーで、すべてのテーブルを表示し、新しく作成されたテーブルを他のテーブルと一緒に表示します :
すべてのテーブルをデータベース図に追加
次に、両方の学生が およびインストラクター テーブルはコースに接続されました 主キーを介してテーブルを作成します。
たとえば、 StudentId 学生 テーブルはStudentIdに接続されています コースで テーブル。同様に、 InstructorId インストラクター テーブルはInstructorIdに接続されています コースで テーブル。
データベース図でそれを達成できます。
StudentInstructorに移動します オブジェクトエクスプローラーのデータベース データベース図を右クリックします ->新しいデータベース図 :
はいをクリックします :
CTRLを使用します キーを押して既存のすべてのテーブルを選択し、それらをデータベース図に追加します :
データベース図を表示し、テーブルを再配置して(テーブルをクリックして移動)、コースを作成します。 学生の間の真ん中にテーブルスタンド およびインストラクター テーブル:
学生テーブルとコーステーブルをリンクする
学生の間に関係を築く必要があります およびコース StudentIdに接続する 学生で StudentIdを含むテーブル コースの列 テーブル。
StudentIdキーをドラッグします StudentId列にドロップします コーステーブル 。 OKをクリックします :
外部キー関係を作成します コーステーブルと学生テーブルの間–学生テーブルに保存された学生のみがコーステーブルに保存されるようにします:
インストラクターテーブルとコーステーブルをリンクする
同様に、インストラクターをリンクする必要があります コースのあるテーブル InstructorId インストラクターの主キー列 テーブルはInstructorIdに渡されます コースで テーブル。
このようにして、 InstructorId 主キーは外部キーとして存在します コースで テーブル。これは、インストラクターのを保存できることを意味します コースの行 そのインストラクターが元のインストラクターに存在する場合にのみテーブル テーブル。このようにして、標準的な方法に従ってデータベースの一貫性と整合性を維持します。
データベース図を保存する
最後に、[保存]をクリックして、データベース図を保存します。 ツールバーのアイコン:
生徒テーブルにデータを追加する
Studentテーブルから始めて、作成したテーブルにデータを追加します。 3人の生徒の記録をテーブルに追加します。
学生を右クリックします 表をクリックして、上位200行の編集をクリックします。 (心配しないでください。200行を編集することはありません):
次の名前を入力して、 Enterをクリックします これらのレコードを保存するには:
次に、ウィンドウを閉じます–右上の十字をクリックするか、CTRL+F4を押します。
StudentIds 1、2、および3は自動的にレコードに割り当てられることに注意してください。後でコースで使用します テーブル。
インストラクターテーブルにデータを追加する
次に、 Martinという名前の2人のインストラクターを追加する必要があります。 およびアサド 。したがって、次のデータをインストラクターに追加します テーブル:
同様に、これらのID1と2を覚えておいてください。今はこのウィンドウを閉じることができます。
コーステーブルにデータを追加
一方には学生がいて、もう一方にはインストラクターがいます。ただし、追加できるのは、すでにStudentテーブルにいる学生のみであり、同じことがインストラクターにも当てはまります。
3人の学生全員をデータベースに登録しましょう コース このコースにインストラクターを割り当てます 同様に:
コーステーブルの内容を表示する
データを表示するには、コースを右クリックします テーブル-> 上位1000行を選択:
おめでとう!これで、SSMS(SQL Server Management Studio)を使用して単純なデータベースを設計する方法を習得できました。それに加えて、新しいレコードを挿入し、挿入されたデータを表示するようにトレーニングしました。
やるべきこと
SSMSを使用してデータベースを設計できるようになったので、スキルをさらに向上させるために次のことを試してください。
- 生徒と教師のテーブルの内容を表示してみてください。
- ビジネスインテリジェンスという別のコースを追加してみてください 3人の学生全員をそのコースに登録し、インストラクターAsad(InstructorId:2)を割り当てます
- 次のことにより、記事から実際のデータベース設計を改善できることを忘れないでください。
- コースの名前を変更する クラスとしてのテーブル テーブル;
- 名前の削除 クラスの列 テーブル;
- CourseIdの置き換え ClassId 列;
- 別のコースを作成する StudentテーブルとInstructorテーブルの場合と同様に、CourseId列とName列を持つテーブル。
- 新しいCourseIdを追加する 列をクラステーブルにリンクし、 CourseId をリンクします コースの CourseIdのテーブル クラスの列 学生やインストラクターと同じように、テーブル。