Kas052009

SQL Server View Kullanımı

Yazar: Gökhan ÖZİÇ Yayınlanma Saati: 07:09
Kategori(ler): MSSQL

Merhaba; Bu yazımda sizlere view oluşturmayı, neden gereksinim duyulabileceğini ve kullanımını anlatmaya çalışacağım. Lafı fazla uzatmadan başlıyayım. SQL Server View yapısı sanal tablo olarak adlandırılabilir. Bu tablo aslında veritabanınızda varolmuyor; ancak gerçek bir tablo gibi sorgulanabiliyor. Böyle bir yapıya da bazen ihtiyaç duyulabiliyor. Örneğin, birden fazla tablo barındıran ilişkisel bir veritabanı dizaynı yaptınız. Bu ilişkisel veriabanında, iki ayrı tabloda olan verileri birleştirerek (inner ya da outer join yoluyla) sorgulmak istiyorsunuz. Ama bu birleştirmeyi projenizde sıklıkla kullanacaksınız. Her seferinde inner/outer join yapmak yerine bu sorguyu sanal olarak sorgulayabileceğiniz bir yapı olsa fena olmaz mıydı? İşte tam burada View yapısı devreye giriyor. Şimdi örnek üzerinden devam edelim. İlişkisel ve üç tablolu bir veritabanınız olduğunu farzedelim.   Tablolar yukarıda imagelerde görüldüğü gibi olsun. Bunları oluşturmak için gerekli olan t-sql kodları ise:   CREATE TABLE Department( DepartmentID INT PRIMARY KEY IDENTITY(1, 1) NOT NULL, DepartmentName CHAR(20) NOT NULL) CREATE TABLE Employee( EmployeeID INT PRIMARY KEY IDENTITY(1, 1) NOT NULL, Name CHAR(20) NOT NULL, Surname CHAR(20) NOT NULL, DepartmantID INT FOREIGN KEY REFERENCES Department NOT NULL) CREATE TABLE Bonus( ID INT PRIMARY KEY IDENTITY(1, 1) NOT NULL, EmployeeID INT FOREIGN KEY REFERENCES Employee NOT NULL, BonusAmount MONEY NOT NULL)   Diyelim ki çalışanlarınızın departmanlarıyla birlikte aldıkları toplam primleri de tek bir tabloda görmek ve üzerinde sorgu yapmak istiyorsunuz. Bu sorguyu da sürekli kullanacaksınız. O zaman bir View yapısına ihtiyacımız var. İlk önce tablolarımıza gerçek olmayan birkaç kayıt girelim.   Şimdi gelelim View yapımıza. View yapısını oluşturmak için gereken t-sql kodu: CREATE VIEW TotalBonus AS SELECT e.EmployeeID, e.Name, e.Surname, e.DepartmentID, d.DepartmentName, SUM(b.BonusAmount) AS TotalBonus FROM (Employee e INNER JOIN Department d ON e.DepartmentID = d.DepartmentID) INNER JOIN Bonus b ON e.EmployeeID = b.EmployeeID GROUP BY e.EmployeeID, e.Name, e.Surname, e.DepartmentID, d.DepartmentName Artık tüm çalışanlarımızın aldığı toplam primleri ve hangi departmana bağlı olduğunu aynı anda görebileceğimiz sanal bir tablomuz var.   Artık View yapımızı aynen fiziksel varolan bir tablo gibi sorgulayabiliriz. Örneğin; “SELECT * FROM TotalBonus WHERE EmployeeID = 2” diye bir sorgulama yaptığınızda, alacağınız output;   Bir başka yazıda daha görüşmek üzere.

Etiket(ler): , , ,



[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

E-mail | Permalink | Trackback | Yazı RSSRSS comment feed 2 Yorumlar

Haz292009

MCP:.NET Framework 3.5, ASP.NET Application Development Ünvanı Sahibi Oldum

Yazar: Gökhan ÖZİÇ Yayınlanma Saati: 19:59
Kategori(ler): ASP.NET | C# | Kuruluşlar | MSSQL | Web Service | XML

     Merhaba;      Microsoft DreamSpark programı, 30 Haziran 2009 tarihine kadar DreamSpark keyleri ile elde edilebilen Voucher Number’lar ile bir kereye mahsus herhangi bir Microsoft sertifika sınavına bedava girme hakkı vermişti. Bende bu fırsattan yararlandım ve bugün BilgeAdam’da girdiğim 070-562 Microsoft .NET Framework 3.5, ASP.NET Application Development sertifika sınavını verip MCP ünvanı sahibi oldum. Aslında potansiyel bir MCTS ünvanı adayı da oldum denebilir. Hep girmek istediğim bir sertifika sınavına DreamSpark programı sayesinde girebildim. Sıradaki hedefim ise MCTS ünvanını da alabilmek için 070-536 sınavını da vermek.

Etiket(ler): , , , ,



[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

E-mail | Permalink | Trackback | Yazı RSSRSS comment feed 7 Yorumlar

May162009

Havayolu Şirketi Bilet Rezervasyon Sistemi

Yazar: Gökhan ÖZİÇ Yayınlanma Saati: 06:56
Kategori(ler): ASP.NET | C# | MSSQL | Proje | Web Service | XML

     Web Development dersinin dönem projesini sonunda tamamladım. Ufak tefek eksiklikleri olsa da projem şu anda sorunsuz çalışıyor. Aslında çoğunuzun aklına neden daha yeni ve farklı birşey yapmadın diye bir soru gelebilir. Bunun nedeni, ASP.NET’e ve C#’a biraz daha hakim olabilmek ve öğrenebilmekti. Bu yüzden yapılmış ve birçok örneği bulunan bir sistem seçtim. Böylelikle öğrenme sürecimde bana kaynak olabilecek birçok imkanım oluştu.      Projem, yazının başlığından da anlaşılacağı üzere bir bilet ayırtma sistemi. İnternet üzerinden bir havayolları şirketinin sistemine girip, üye olup, istediğiniz uçuşa istediğiniz tarihe bay ya da bayan, istediğiniz koltuğa bilet ayırtabiliyorsunuz. Kullandığım teknolojiler ASP.NET, C#, XML, MSSQL ve Web Service’ler.      Sistemde karşılaştığım en büyük sorun aslında, kullanıcının keyfi bilet ayırtmasını engellemekti. İnsanların çocukken rastgele numara çevirip birilerini işletmeye çalıştığı gibi, bazı kullanıcılar da keyfi bilet ayırtmaları yapabilir. Bunun önüne geçmek için web service kullanmaya karar verdim. Oluşturduğum web service sayesinde, sisteme kayıt esnasında kullanıcıdan TC Kimlik No’su isteniyor. Sorgulama düğmesi ile bu TC Kimlik No sayesinde, web service’den kişinin ad ve soyadı çekiliyor ve kayıt olurken ad ve soyadın yazılması gereken textbox’lar otomatik olarak dolduruluyor. Zaten kayıt sayfasına girildiğinde ad ve soyad textbox’ları disabled halde karşımıza geliyor. Böylelikle bu alanların doldurulması sadece yazılan TC Kimlik No’nun sorgulanması ile yapılabiliyor. Bu da kullanıcının caydırılması yönünde güzel bir yapı haline geliyor. Sistemi denettiğim çoğu arkadaşımdan da caydırıcı olduğuna dair güzel eleştiriler aldım. Tabii bu fake bir web service. TC Nüfus Müdürlüğü’nün web service’lerini kullanmadım ders projesi için. Bu web service’i kullanmak için hem belirli bir miktar para ödemeniz; hem de dilekçe ile başvurmanız gerekiyor ki bu dilekçe kabul edilmeyebilirde.      Sisteme sadece login olmuş kullanıcılar bilet ayırtma sayfasına ulaşabiliyor. Nereden ve Nereye kısımlarını doldurduktan sonra gitmek istediği tarihi giren kullanıcı, boş koltukları görebiliyor. İstediği boş koltuğu seçip bilet ayırt diyen kullanıcının bileti ayırtılmış oluyor. Kişi, ayırttığı biletleri profil sayfasından görebiliyor. Hangi tarihte, hangi saatte, nereden ve nereye şeklinde bir table halinde tüm ayırttığı biletler profil sayfasında oluşuyor. Ayrıca sistem, tarihi geçmiş biletieri de otomatik olarak temizliyor. Böylelikle profil sayfasına giren kullanıcı, tarihi geçmiş biletlerin silinmesiyle profil sayfasını her zaman düzenli görme imkanına sahip oluyor.      Bunların haricinde, üyeliğin yapıldığı tüm sistemlerde olan kullanıcı bilgilerini düzenleme, şifre değiştirme, hesap silme gibi tüm kullanıcı işlemleri de sistemde mevcut.      Sistemle ilgili hertürlü sorunuzu bana yazabilirsiniz.      Not: Projemde kullandığım ve sitemde paylaştığım yukarıdaki resimlerde görülen tüm şirket bilgileri hayal ürünüdür.

Etiket(ler): , , , , , , , ,



[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

E-mail | Permalink | Trackback | Yazı RSSRSS comment feed 9 Yorumlar