ÇözümPark'a hoş geldiniz. Oturum Aç | Üye Ol
 
Ana Sayfa Makale Video Forum Resimler Dosyalar Etkinlik Hizmetlerimiz Biz Kimiz

SQL Server

MSSQL İlişkisel Test Verisi Oluşturmak

Uygulama geliştirme aşamasındaki tüm süreci göz önünde alındığında önemli alanlardan biri veri tabanının oluşturulması gerekli alanların ihtiyaçlarımızı karşılayıp karşılamadığı testlerinin ara yüz tarafından yapılarak girilmesi zaman bakımından oldukça sıkıntılı bir süreçtir.

Uygulamaların geliştirilen algoritmalar ile zorunlu veri girdi işlemine izin vermesi, veri aralığının tarafımızdan geliştirilen kriterlere uygun olması öncelikli hedeflerimizin arasındadır. Veri tabanı Normal Form kriterlerine uygun olması birbirine ilişkili verilerin tutarlı bir şekilde oluşturulması ve binlerce veriyi hızlı bir şekilde sisteme eklememize yardımcı olacaktır.

Uygulama aşamasında geriye dönüp revize konusunda uygunsuz alanların kontrol edilmesi sağlıklı bir işleyiş açısından çok önemlidir.

RDMS çerçevesinde oluşturduğumuz verilerin uygun format ile sisteme dahil edilmesi ayrıca geliştirilmesi aşamasındaki uygulamamızın performans tarafındaki SP, VIEW en yüksek değerde sorgulama kabiliyetimizi optimize etmemize yarar sağlayacaktır.

Makalenin sonunda veri tabanımıza kısa zaman içinde RDMS ilişkisel uygun formatta binlerce veri ekleyebileceğiz.

 

Data Generator for SQL Server

Kullanacağımız aracın linki: https://www.devart.com/dbforge/sql/data-generator/

 

clip_image002[6]

Kurulum aşamasında yapacağımız ilk işlem INSTALL tuşu ile ilerlemek

clip_image004[6]

Sisteminizde bulunan Management sürümünü algılayacaktır. Birden çok kurulum var ise onlarında aktif bir şekilde olduğunu görebilirsiniz.

Şimdilik 2017 kurulumunu gerçekleştiriyorum.

 

Bu aşamada 2 Tablo oluşturma işlemini yapıyorum. Tablolar basit bir şekilde birbiriyle ilişkili olmasını sağlayacağım.

 

Test adında oluşturdum.

2 Tablo ile birbirine [PK]Birincil Anahtar ßà [FK] Yabancı Anahtar birbirine ilişkili tablolarımızı hazırlayalım.

LIB_MUSTERI

CREATE TABLE TEST_DB.dbo.LIB_MUSTERI (

  ID INT IDENTITY

 ,ADI VARCHAR(50) NULL

 ,CONSTRAINT PK_LIB_MUSTERI_ID PRIMARY KEY CLUSTERED (ID)

) ON [PRIMARY]

GO

OPE_SATISLAR

CREATE TABLE TEST_DB.dbo.OPE_SATISLAR (

  ID INT IDENTITY

 ,MUSTERI_ID INT NULL

 ,MIKTAR FLOAT NULL

 ,FIYAT FLOAT NULL

 ,TOPLAM_TUTAR AS FIYAT * MIKTAR PERSISTED

 ,CONSTRAINT PK_OPE_SATISLAR_ID PRIMARY KEY CLUSTERED (ID)

)

GO

 

Tablolarımız hazır. Artık tablolarımızı birbiriyle ilişkili tutarlı veri oluşturmamız gerekmektedir.

Şimdi birlikte basitçe hazırladığımız tabloları diyagram üzerinde görelim.

clip_image006[6]

 

MUSTERI Tablosundaki-   ID   ßà  MUSTERI_ID  SATISLAR TABLOSU 

Tablolarımızı oluşturduk. İlgili alanları oluşturma işlemlerini farklı yöntemler ile yapma şansımız bulunmaktadır.

Ara yüz tarafında belirlediğimiz algoritmalar ile veri almamız uygulama tarafından yapılması gereken en önemli işlemlerdendir.

Müşteri tablosunda oluşturduğumuz kullanıcıların Satış tablosundaki MUSTERI_ID alanında ilgili kullanıcının MUSTERI tablosundaki ID kolonunun sağlıklı bir şekilde içeriye gönderilmesi gerekmektedir.

Bu alanda biz verileri tutarlı bir şekilde içeriye gönderme işleminin dışında, uygulama alanında kullanıcıya   yansıtacağımız verilerin sistemden ilgili   Sorgu sonucunda ne kadar zamanda oluşturulmasıdır. Bu testlerin yapılması için ilgili alanlarda binlerce verinin olması bizim uygulamanın performansı aşamasında daha net bilgiye ulaşmamızı sağlayacaktır.

 

Bu aşamada artık ilgili aracımız ile neler yapabileceğimiz görelim.

clip_image008[6]

1.Yeni bir işlem başlatacağımızı belirtiyoruz.

2.Bu alanda hangi bağlantı ile sisteme giriş yapacağımız belirliyoruz.

3.Veri eklemeyi düşündüğümüz veri tabanını seçeneğini belirliyoruz.

 

clip_image010[6]

Data ekleme işlemlerini gerçekleştirmek için;

1.Bu alanda ilgili tablolara eklemek istediğimiz satır sayısını belirtiyoruz.

2.TRUNCATE işleminin veri tabanları aşamasında Tehlikeli bir komut olduğunu belirterek, bu alan seçili olarak devam etmeniz sonucu öncesinde tabloların Truncate edileceği sonrasında veri ekleme işleminin yapılacağınız belirtiyoruz.

Not: Aslında ilgili aracımız tüm yapılan işlemlerin sonuç ekranında Action Plan üzerinde yapılacak işlemleri tarafımıza sıralamaktadır. Bu alandaki her zaman ilk işlem Yedekleme komutudur.

TEST veri tabanı üzerinde çalışma yapacağım için bende seçili olacaktır.

3.NULL values üzerinde %10 bir değer oluşturmayı seçebilirsiniz.

ÖRNEK: 1000 / 10 = 100 Satırın NULL değer alınması için seçili halde bırakabilirsiniz.

 

clip_image012[6]

 

Bu alan uygulamamızın tablo üzerindeki kolonların ekleyeceğimiz veri türüne uygun düzenleme yapacağımız alandır.

Adı kolonu üzerindeki ver türü varchar (50) alanında sağ bölümden ilgili formata uygun aracımız daha önceden oluşturulmuş menüleri gelecektir. Fırst name alanı seçtiğim anda alt bölümde bulunan veri alanı 50 adet veri örneğini yansıtacaktır.

Veri türlerinin En düşük ve En yüksek kapasitene bağımlı olarak verilerimizi düzenlememiz gerekmektedir.

Bu alanda bir istisna olması açısından SATIŞLAR tablosundaki TOPLAM_TUTAR alanının bize veri seçtirmediğini ilgili kolonun Computed bir alan olduğu bu alanın farklı işlemler sonucuna göre veri oluşturduğu belirtilmektedir.

 

Uygulamamız veri türüne göre bize seçenekler sunacak biz ise sadece aralığımız belirteceğiz.

 

clip_image014[6]

 

Satışlar Tablosundaki Miktar türünün float olması [-99.999.999.999 / 99.999.999.999] aralığında bir başlangıç ve bitiş değerini belirtmemizi isteyecektir.

Diğer veri türleri bu mantıkla oluşturulmalıdır.

Asıl amacımız olan [PK] Birincil Anahtar – [FK] Yabancı Anahtar ilişkisel bir şekilde veri oluşturmasını sağlayacağız.

 

clip_image016[6]

 

Satışlar tablosundaki MUSTERI_ID seçili iken sağ bölümden Foreign Key [Manuallly Assigned] ile referans edeceğimiz diğer kolunu belirteceğiz.

 

clip_image018[6]

 

İlgili alandan Tablo ve kolonumuzu seçiyoruz.

 

clip_image020[6]

 

Müşteriler tablosuna 525 satır ekleyeceğiz. Satışlar tablosundaki verileri ise 15.000 adet olarak belirledim. Urdaki amacımız ise 525 müşterinin birden çok satış işlemi yapmasını sağlamak hem oluşturacağımız SP, WİEW, FUNCTİON sorgulama sonuçlarımızı ölçümleyebiliriz.

 

clip_image022[6]

 

Ok tuşu ile data oluşturma işlemine geçebiliriz.

 

clip_image024[6]

 

Bu alanda dikkat etmemiz gereken ilk alan Warnings   ekranıdır. Sistem üzerinde yapılacak action plan çerçevesinde adımların kritik bilgilerini içeriyor. TEST DB olduğu için tabloların silinmesi benim açımdan sorun teşkil etmeyecektir.

Not: Canlı sistemlerde ilgili alanın kullanılmamasını tekrardan hatırlatayım.

 

clip_image026[6]

 

Action Plan adım adım yorumlayalım.

İşlem türü ne olursa olsun. Her zamanki ilk işlemimiz TEST_DB yedekleme aşamasıdır.

İndexlerin silinmesi: 2 tablonun da   verileri yeniden oluşturulacağı için indexlerin silinme   aşamasıdır.

LIB_MUSTERI tablosuna 525 adet veri ekleme aşamasıdır.

OPE_SATISLAR tablosuna 15.000 satır veri ekleme işlemini yapacağını belirtiyor.

İşlemin MUSTERI tablosundaki 525 müşterimizin 15.000 adet satış içerisinde ID belirtilen değerlerin dışına çıkmamasını garanti altına almış oluyoruz.

İndexleme işlemlerini yeniden oluşturulmasında sonra işlemlerimiz başarılı bir şekilde bitirmiş olacağız. Generate tuşuna basıyoruz.

 

Log bilgileri

 

------ Data population TEST_DB(DATASRV).dgen to TEST_DB started. ------

Processed 384 pages for database 'TEST_DB', file 'TEST_DB' on file 1.

Processed 6 pages for database 'TEST_DB', file 'TEST_DB_log' on file 1.

BACKUP DATABASE successfully processed 390 pages in 0.023 seconds (132.345 MB/sec).

Back up database TEST_DB to C:\Program Files\Microsoft SQL Server\MSSQL14.DATASRV\MSSQL\Backup

Changed database context to 'TEST_DB'.

Drop 1 indexes, primary and unique keys from LIB_MUSTERI

Drop 1 indexes, primary and unique keys from OPE_SATISLAR

Truncate table 'dbo.OPE_SATISLAR'

Truncate table 'dbo.LIB_MUSTERI'

Inserted 525 rows into dbo.LIB_MUSTERI

Inserted 15000 rows into dbo.OPE_SATISLAR

Add 1 indexes, primary and unique keys to LIB_MUSTERI

Add 1 indexes, primary and unique keys to OPE_SATISLAR

 

------ Data population TEST_DB(DATASRV).dgen done. ------

 

clip_image028[6]

 

Tüm işlemlerinin sonucunda elimizde saniyeler için tutarlı verilerimiz var. Bundan sonraki aşama size kalmış durumda uygulama ara yüzü ile test işlemlerinize başlayabilirsiniz.

Performans sorguları oluşturabilirsiniz.

Yararlı olması dileğiyle

 

 

 

 

Tarih : 16 Eylül 2018 Pazar 18:37 Yayınlayan: Omer Carnacar

Yorumlar

 

Hakan UZUNER

Elinize sağlık

Eylül 16, 2018 23:25
 

Bilgehan POYRAZ

Elinize sağlık, özel bir konu, güzel bir konu.

Eylül 17, 2018 09:54
 

Bilgehan POYRAZ

Değişik ama güzel bir konu. Elinize sağlık.

Eylül 18, 2018 12:28
Kimliksiz yorumlar seçilemez kılınmış durumdadır.

Hızlı aktarma

Etiketler