Aracılığıyla paylaş


Öğretici: Azure SQL Veritabanı'da ilişkisel veritabanı tasarlama

Şunlar için geçerlidir:Azure SQL Veritabanı

Azure SQL Veritabanı, Microsoft Azure'daki bir hizmet olarak ilişkisel veritabanıdır (DBaaS). Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Veritabanına bağlanın
  • T-SQL komutları ile tablo oluşturma
  • BCP ile toplu veri yükleme
  • T-SQL komutları ile verileri sorgulama

Not

Bu öğreticinin amacı doğrultusunda Azure SQL Veritabanı kullanıyoruz. Esnek bir havuzda veya bir SQL Yönetilen Örnek'te havuzlanmış bir veritabanı da kullanabilirsiniz. SQL Yönetilen Örneği'ne bağlantı için şu SQL Yönetilen Örneği hızlı başlangıçlarına bakın: Hızlı Başlangıç: Azure SQL Yönetilen Örneği'ne bağlanmak için Azure VM yapılandırma ve Hızlı Başlangıç: Şirket içinden Azure SQL Yönetilen Örneği'ne nokta-yer bağlantısı yapılandırma.

Önkoşullar

Azure portalda oturum açma

Azure Portal’ında oturum açın.

Sunucu düzeyinde IP güvenlik duvarı kuralı oluşturma

Azure SQL Veritabanı sunucu düzeyinde bir IP güvenlik duvarı oluşturur. Bu güvenlik duvarı, bir güvenlik duvarı kuralı güvenlik duvarı üzerinden IP'lerine izin vermediği sürece dış uygulamaların ve araçların sunucuya ve sunucudaki veritabanlarına bağlanmasını engeller. Veritabanınıza dış bağlantıyı etkinleştirmek için önce IP adresiniz (veya IP adresi aralığı) için bir IP güvenlik duvarı kuralı eklemeniz gerekir. Sunucu düzeyinde ip güvenlik duvarı kuralı oluşturmak için bu adımları izleyin.

Önemli

Azure SQL Veritabanı, 1433 numaralı bağlantı noktası üzerinden iletişim kurar. Şirket ağı içinden bu hizmete bağlanmaya çalışıyorsanız, ağınızın güvenlik duvarı tarafından 1433 numaralı bağlantı noktası üzerinden giden trafiğe izin verilmiyor olabilir. Bu durumda, yöneticiniz 1433 numaralı bağlantı noktasını açmadığı sürece veritabanınıza bağlanamazsınız.

  1. Dağıtım tamamlandıktan sonra Azure portalı menüsünden SQL veritabanları'nı seçin veya herhangi bir sayfadan SQL veritabanlarını arayın ve seçin.

  2. SQL veritabanları sayfasında Veritabanınızı seçin. Veritabanınızın genel bakış sayfası açılır ve size tam Sunucu adını (örneğin contosodatabaseserver01.database.windows.net) gösterir ve daha fazla yapılandırma için seçenekler sağlar.

    Sunucu adının vurgulandığı Azure portalı, veritabanına genel bakış sayfasının ekran görüntüsü.

  3. Sql Server Management Studio'dan sunucunuza ve veritabanlarınıza bağlanmak için bu tam sunucu adını kopyalayın.

  4. Ayarlar'ın altında Ağ'ı seçin. Genel Erişim sekmesini seçin ve ardından Güvenlik duvarı kuralları bölümünü görüntülemek için Genel ağ erişimi'nin altında Seçili ağlar'ı seçin.

    Sunucu düzeyinde IP güvenlik duvarı kuralının ayarlanacağı yeri gösteren Azure portalının ağ sayfasının ekran görüntüsü.

  5. Geçerli IP adresinizi yeni bir IP güvenlik duvarı kuralına eklemek için araç çubuğunda İstemci IPv4'ünüzü ekle'yi seçin. IP güvenlik duvarı kuralı, tek bir IP adresi veya ip adresi aralığı için 1433 numaralı bağlantı noktasını açabilir.

  6. Kaydet'i seçin. Geçerli IP adresiniz için sunucuda 1433 numaralı bağlantı noktasını açan bir sunucu düzeyinde IP güvenlik duvarı kuralı oluşturulur.

  7. Tamam'ı seçin ve güvenlik duvarı ayarları sayfasını kapatın.

IP adresiniz artık IP güvenlik duvarından geçebilir. Artık SQL Server Management Studio'yu veya tercih ettiğiniz başka bir aracı kullanarak veritabanınıza bağlanabilirsiniz. Daha önce oluşturduğunuz sunucu yöneticisi hesabını kullandığınızdan emin olun.

Önemli

Varsayılan olarak, SQL Veritabanı IP güvenlik duvarı üzerinden erişim tüm Azure hizmetleri için etkinleştirilir. Azure hizmetlerinin tümü için devre dışı bırakmak amacıyla bu sayfada OFF seçin.

Veritabanına bağlanın

Azure SQL veritabanları mantıksal SQL sunucularının içinde bulunur. Oturum açma bilgilerini kullanarak mantıksal SQL sunucusuna master bağlanabilir ve ardından veritabanınıza bağlanabilir. Alternatif olarak, kapsanan bir kullanıcıyı kullanarak doğrudan Azure SQL veritabanınıza bağlanabilirsiniz.

Azure SQL veritabanınıza bağlanmak için SQL Server Management Studio'yu kullanın.

  1. SQL Server Management Studio'yu açın.

  2. Sunucuya Bağlan iletişim kutusuna aşağıdaki bilgileri girin. Diğer seçenekleri varsayılan olarak bırakın.

    Setting Önerilen değer Description
    Sunucu türü Veritabanı altyapısı Bu değer gereklidir.
    Sunucu adı Tam nitelikli Azure SQL Database mantıksal sunucu adı Örneğin, your_logical_azure_sql_server.database.windows.net.
    Kimlik Doğrulaması SQL Server Kimlik Doğrulaması Kullanıcı adı ve parola girmek için SQL Server Kimlik Doğrulamasını kullanın.
    Microsoft Entra doğrulaması Microsoft Entra Id kullanarak bağlanmak için, Microsoft Entra sunucu yöneticisiyseniz Microsoft Entra MFA'yı seçin. Daha fazla bilgi için bkz. Azure SQL ile Microsoft Entra kimlik doğrulamasını yapılandırma ve yönetme.
    Oturum açma Sunucu yöneticisi hesabı SQL Server Kimlik Doğrulaması kullanıyorsanız, sunucuyu oluştururken belirttiğiniz hesap.
    Parola Sunucu yöneticisi hesabınızın parolası SQL Server Kimlik Doğrulaması kullanıyorsanız, sunucuyu oluştururken belirttiğiniz parola.

    SQL Server Management Studio'da (SSMS) Sunucuya Bağlan iletişim kutusunun ekran görüntüsü.

  3. Sunucuya bağlan iletişim kutusunda Seçenekler'i seçin. Veritabanına bağlan bölümünde, bu veritabanına bağlanmak için Veritabanınızı girin.

    SQL Server Management Studio'da (SSMS) sunucuya bağlan iletişim kutusunun seçenekler sekmesinin ekran görüntüsü.

  4. Bağlan'ı seçin. Nesne Gezgini penceresi SSMS'de açılır.

  5. Nesne Gezgini'da Veritabanları'nı genişletin ve ardından veritabanınızı genişleterek örnek veritabanındaki nesneleri görüntüleyin.

    Nesne gezginindeki veritabanı nesnelerini gösteren SQL Server Management Studio'nun (SSMS) ekran görüntüsü.

  6. Nesne Gezgini'deVeritabanınıza sağ tıklayın ve Yeni Sorgu'yu seçin. Veritabanınıza bağlı boş bir sorgu penceresi açılır.

Veritabanınızda tablo oluşturma

Transact-SQL kullanarak üniversiteler için öğrenci yönetim sistemini modelleyen dört tablo oluşturun:

  • Person
  • Course
  • Student
  • Credit

Aşağıdaki diyagramda bu tabloların birbirleriyle nasıl ilişkili olduğu gösterilmektedir. Bu tablolardan bazıları başka tablolardaki sütunlara başvurur. Örneğin, Student tablosu Person tablosunun PersonId sütununa referans verir. Bu öğreticideki tabloların birbirleriyle ilişkisini anlamak için diyagram üzerinde çalışın. Etkili normalleştirilmiş veritabanı tabloları oluşturma hakkında ayrıntılı bilgi için bkz . Normalleştirilmiş Veritabanı Tasarlama. Veri türleri seçme hakkında bilgi için bkz. Veri türleri. Varsayılan olarak, tablolar varsayılan dbo şemada oluşturulur; yani tablonun iki bölümden oluşan adı gibi olur dbo.Person.

Not

Tablolarınızı oluşturup tasarlamak için SQL Server Management Studio’daki tablo tasarımcısını da kullanabilirsiniz.

SQL Server Management Studio'da (SSMS) tablo ilişkilerini gösteren tablo tasarımcısının ekran görüntüsü.

  1. Sorgu penceresinde aşağıdaki T-SQL sorgusunu yürüterek veritabanınızda dört tablo oluşturun:

    -- Create Person table
    CREATE TABLE Person
    (
        PersonId INT IDENTITY PRIMARY KEY,
        FirstName NVARCHAR (128) NOT NULL,
        MiddleInitial NVARCHAR (10),
        LastName NVARCHAR (128) NOT NULL,
        DateOfBirth DATE NOT NULL
    );
    
    -- Create Student table
    CREATE TABLE Student
    (
        StudentId INT IDENTITY PRIMARY KEY,
        PersonId INT FOREIGN KEY 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 FOREIGN KEY REFERENCES Student (StudentId),
        CourseId INT FOREIGN KEY REFERENCES Course (CourseId),
        Grade DECIMAL (5, 2) CHECK (Grade <= 100.00),
        Attempt TINYINT,
        CONSTRAINT [UQ_studentgrades]
            UNIQUE CLUSTERED (StudentId, CourseId, Grade, Attempt)
    );
    

    Tablo oluşturma betiğinin başarıyla yürütüldiğini gösteren SSMS'nin ekran görüntüsü.

  2. Oluşturduğunuz dört yeni tabloyu görmek için Nesne Gezgini Veritabanınızınaltındaki Tablolar düğümünü genişletin.

Tablolara veri yükleme

  1. Veritabanınıza yönelik örnek verileri depolamak için yerel iş istasyonunuzda sampleData adlı bir klasör oluşturun İndirilenler klasörü. Örneğin, c:\Users\<your user name>\Downloads.

  2. Aşağıdaki bağlantılara sağ tıklayın ve bunları sampleData klasörüne kaydedin.

  3. Yeni bir Windows komut istemi penceresi açın ve sampleData klasörüne gidin. Örneğin, cd c:\Users\<your user name>\Downloads.

  4. Ortamınızın değerleriyle değiştireceğiniz sunucu, veritabanı, kullanıcı ve parola ile tablolara örnek veri eklemeniz için aşağıdaki komutları yürütebilirsiniz.

    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 ","
    

Daha önce oluşturduğunuz tablolara örnek veriler yüklediniz.

Verileri sorgulama

Veritabanı tablolarından bilgi almak için aşağıdaki T-SQL sorgularını yürütebilirsiniz.

Bu ilk sorgu, 'Dominick Pope' tarafından öğretilen ve %75'ten yüksek nota sahip öğrencileri bulmak için dört tabloyu da birleştirir. Sorgu penceresinde aşağıdaki T-SQL sorgusunu yürütebilirsiniz:

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

Bu sorgu dört tablonun tümünü birleştirir ve 'Noe Coleman' adlı kişinin kayıt yaptırmış olduğu kursları bulur. Sorgu penceresinde aşağıdaki T-SQL sorgusunu yürütebilirsiniz:

-- 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';

İpucu

SQL sorguları yazma hakkında daha fazla bilgi edinmek için Transact-SQL deyimlerini yazmayı öğretici kılavuz bağlantısını ziyaret edin.

Sonraki adım