Last chance! 50% off DataCamp Premium
Sale ends in
Bir veritabanı şeması, veri yapısını tablolar, alanlar ve ilişkiler halinde göstererek bir veritabanının bir bölümünü veya tamamını mantıksal olarak tanımlar. Bunu, bir kuruluşun veri kaynaklarını anlamak için bir plan olarak düşünebilirsiniz.
Bu yazıda, veritabanı şemalarını kolayca tasarlayıp yönetebilmeniz için bilmeniz gereken her şeyi paylaşacağız. Başlarken, ufkunuzu geniş tutmak için son derece kapsamlı veri mühendisliği kurslarımıza da göz atmanızı öneririz: Introduction to Data Engineering ve Understanding Data Engineering.
Bir veritabanı şeması, bir veritabanındaki yapı ve ilişkilerin planıdır. Verilerin tablolarda, alanlarda, veri türlerinde ve bu öğelerin ilişkilerinde nasıl düzenleneceğini belirtir. Temel bileşenlerinin neler olduğuna ve genel veritabanı şemasına nasıl katkı sağladıklarına bakalım:
İyi tasarlanmış bir veritabanı şeması, verilerin doğru olmasını, sorgu performansının optimize edilmesini ve veritabanınızın iş büyümesini desteklemesini sağlar.

Verileri tablolara ayırma. Görsel: Yazar
Peki iyi tasarlanmış bir veritabanı şeması nasıl görünür? Bilmeniz gerekenler şunlardır:
Birden fazla veritabanı şeması türü vardır ve her biri farklı bir amaca hizmet eder, çeşitli organizasyon düzeyleri sunar. Kimi zaman şemalar genel veritabanı yapıları için daha gündelik bir dille tartışılırken kimi zaman belirli mimari unsurları ve tasarım ayrıntılarını ifade eder. Yüksek soyutlama düzeyinde, veritabanı şemaları kavramsal, mantıksal ve fiziksel olmak üzere üç türe ayrılabilir.
Kavramsal veritabanı şeması, veri türleri veya kısıtlar gibi uygulama ayrıntılarını göstermeden, veritabanı sisteminin tamamına genel bir bakış sağlayan üst düzey bir şemadır. Kurum içindeki veri akışını anlamaya yardımcı olur ve hem teknik hem de teknik olmayan kullanıcılar için işleri kolaylaştırır.
Mantıksal şema, veritabanındaki verilerin mantıksal yapısını ortaya koyar. Verilerin nasıl organize edildiğini ve veriler arasındaki ilişkileri, fiziksel olarak nasıl saklandığını göstermeden tanımlar. Bu şema türü, veritabanı tasarım aşamasında girişleri doğrulamak için veri türlerini ve kısıtları belirleyerek veri tutarlılığını ve bütünlüğünü korur.
Fiziksel veritabanı şeması, verilerin bir sistem içinde nerede bulunduğunu açıklar. Bu, büyük miktarda veriyi işlerken en yüksek performansı sağlamak için dosya konumlarını, indeksleme stratejilerini ve her tablo için depolama biçimlerini kapsayabilir.
Verileri düzenlemeye gelince tek tip bir yaklaşım yoktur. Farklı veri ambarlarının farklı iş ihtiyaçları vardır; bu nedenle farklı veritabanı şemalarına ihtiyaç duyarlar. En popüler biçemlerden bazıları yıldız şema, kar tanesi şema, hiyerarşik şema ve ilişkisel şemadır.
Yıldız şema, büyük veri kümelerini iki temel ilkeye göre düzenler ve yönetir: olgular ve boyutlar. Olgular, satış rakamları veya işlem hacimleri gibi, ardındaki itici faktörlerin dikkate alındığı iş operasyonları gibidir. Boyutlar ise bu olguları betimleyici bir bağlamla genişletir. Zaman, konum veya ürün ayrıntıları olabilir.

Yıldız şema. Görsel: Yazar.
Kar tanesi şema, yıldız şemaya benzer. Çok sayıda boyut tablosuna bağlı merkezi bir olgu tablosu vardır ancak küçük bir fark bulunur. Kar tanesi şemada, tüm boyutlar düz değildir—her boyut tablosu daha fazla normalleştirilmiş, birbiriyle ilişkili birçok tabloya ayrılmıştır. Bu, her boyut tablosunun daha küçük ve ilişkili tablolara bölündüğü anlamına gelir.

Kar tanesi şema. Görsel: Yazar
Bu şema, mantık ve işlevlerden ziyade nesnelerle ilgili verileri daha değerli gören nesne yönelimli programlama dilleri için en uygunudur. İlişkisel veritabanı şemasında, her nesneye kendi tablosu atanır ve bu tabloların tümü birbirine bağlanır.

İlişkisel veritabanı modeli. Görsel: Yazar.
Örneğin bir e-ticaret veritabanında ürünler, müşteriler, siparişler ve incelemelerle ilgili tablolar bulunur—hepsi birbiriyle ilişkilidir. Yıldız veya kar tanesi şemadan farklı olarak merkezi bir olgu tablosu yoktur. Bunun yerine, verileri yönetme ve getirme verimliliğini artırmak için nesneler arasında esnek ilişkiler bulunur.
Bu şemada, bir kök tablo tam olarak bir ebeveyne sahip birden çok alt tabloya bağlanır.

Veritabanı şemasının hiyerarşik modeli. Kaynak: Wikipedia
Örneğin, bir üniversite sisteminde kök tablo bölümleri içerebilir; her bölüm ise öğretim üyeleri ve dersler için alt tablolara bağlanır. Öğretim üyeleri yalnızca bir bölüme bağlı olabilir, ancak dersler belirli bir öğretim üyesine atanır. Bu yapı, ders programları ve öğretim üyesi bilgileri gibi sık kullanılan verilere erişimi kolaylaştırır.
Veritabanı şemaları, ilişkileri, kısıtları ve veri depolamayı açıkça tanımlayarak genel sistem performansını ve güvenliğini artırır. İyi tasarlanmış veritabanı şemalarının bazı başlıca avantajları şunlardır:
Bir veritabanı için şema tasarlamak aşağıdaki adımları içerir.
İyi bir veritabanı tasarlamak için önce temel amacını belirlemeniz gerekir: hangi verileri içereceği ve kimin kullanacağı. Paydaşlarla görüşerek ihtiyaç duyulan spesifik veriler, bu veriler üzerinde çalıştırılacak sorgu türleri ve üretilecek raporlar gibi ayrıntılı gereksinimleri toplayabilirsiniz. Böylece net bir proje kapsamı elde eder ve veritabanının gereksiz karmaşıklık olmadan kullanıcı ihtiyaçlarını karşılamasını sağlarsınız.
Artık gereksinimleri bildiğinize göre, veritabanınızın kavramsal bir görünümünü veya modelini oluşturun. Bunu, bir veritabanı şeması içindeki tabloların veya varlıkların nasıl ilişkilendiğini gösteren Varlık-İlişki Diyagramı (ERD) kullanarak yapabilirsiniz.

Örnek Varlık-İlişki Diyagramı. Kaynak: Wikimedia Commons
Varlıklar arasında üç tür ilişki vardır:
Sonraki adım, verilerinizi tablolara düzenlemektir. Veritabanınızdaki her varlık için bir tablo oluşturun ve bu varlıklarla ilgili her özniteliği tutacak sütunları belirtin. Her tabloya bir birincil anahtar verin ki her kaydın benzersiz bir tanımlayıcısı olsun ve verilere kolayca erişilebilsin.
Normalizasyon, veritabanınızdaki verileri yinelenen verileri azaltıp bütünlüğünü artırarak optimize eder. Birden fazla normal form vardır (1NF, 2NF, 3NF, BCNF ve daha fazlası), ancak üçüncü normal forma (3NF) kadar normalleştirmelisiniz.
Üç normalleştirme formuna ve amaçlarına burada bakın:

Veritabanında normalizasyon. Görsel: Yazar
Sağlam veritabanı güvenliği için, veritabanına kimin erişebileceğini ve okuma, yazma veya silme gibi hangi izinlere sahip olduklarını net biçimde tanımlayın. Böylece erişimi yalnızca yetkili kullanıcılarla sınırlar ve yetkisiz kişilerin hassas verileri görmesini veya değiştirmesini önlersiniz. Ayrıca, hassas verileri beklemede ve aktarım sırasında şifrelemek, bilgiyi karıştırarak yetkisiz kişilerce ele geçirilse bile okunamaz hale getirerek güvenliği daha da güçlendirir.
Veritabanı tasarımını tanımlarken—tablolar, sütunlar, indeksler ve diğer nesne adlandırma kuralları—tutarlı olmalıdır. İsimler, bir tablo veya sütunda tam olarak ne tutulduğunu ima edecek kadar açıklayıcı olmalı, böylece kullanıcılar zahmetsizce hızlıca anlayabilmelidir. Bu, sizin veya ekipten başka birinin veritabanı işlemlerini yaparken olası çakışmaları önleyecektir.
Her şeyi tamamladıktan sonra, şemayı örnek verilerle kapsamlı biçimde test ederek işlemleri ve sorguları çalıştırın ve performansını ölçün. Bu test aşamasından topladığınız geri bildirimlere göre şemayı gerektiği gibi iyileştirin ve ayarlayın. Bu sayede olası sorunları belirleyip çözersiniz ve veritabanı şemanızın verimli olmasını sağlarsınız.
İyi tasarlanmış bir şema, verimli bir veritabanı sisteminin temelidir. Ancak doğru bir şema tasarlamak çeşitli zorluklar da barındırabilir. Öyleyse bunlara ve çözümlerine bakalım.
Tablolar arasındaki ilişkiler net tanımlanmadığında, yapılandırılmış sorgular çok karmaşık hale gelir. Bu durum sorgu yürütmeyi yavaşlatır ve uygulamanın genel performansını etkiler. Örneğin, sahipsiz kayıtlar ve güncelleme tutarsızlıkları veri doğruluğunu ve kaliteyi bozar. Bu sorunlardan kaçınmak için, şeffaf ve verimli ilişki yapıları tanımlamak ve karmaşık ilişkileri daha etkili yönetmek üzere grafik veritabanları gibi gelişmiş modelleme araçlarını uygulamalısınız.
Veritabanları, hassas bilgileri tehlikeye atabilecek SQL enjeksiyonlarına ve veri ihlallerine karşı savunmasızdır. Verilerinizi güvende tutmak için, gelişmiş veri şifreleme yöntemleri ve yapay zeka tabanlı anomali tespit sistemlerini içeren çok katmanlı güvenlik stratejileri uygulayın. Bu, potansiyel tehditleri belirlemeye ve hafifletmeye yardımcı olur. Buna ek olarak, varsa potansiyel tehditleri izlemek için düzenli güvenlik denetimleri gerçekleştirin.
Farklı normalizasyon düzeyleri, sorgu performansını etkiler ve bakımı karmaşıklaştırır. Ayrıca, aşırı normalizasyon karmaşık birleştirmelere yol açabilirken yetersiz normalizasyon veri anomalilerine neden olabilir. Bu sorunları çözmek için, veri erişim desenine dayalı esnek normalizasyon stratejileri uygulamalısınız. Mevcut normalizasyon durumunu düzenli olarak gözden geçirmek ve gerekirse normalizasyon düzeyini ayarlamak için veritabanı yeniden düzenleme araçlarını kullanın. Böylece normalleştirilmiş ve denormalize yapılar arasında denge kurarak en iyi performansı elde edebilirsiniz.
Açık bir dokümantasyon olmadan, veritabanı şemasındaki değişiklikler riskli hale gelebilir ve daha fazla zaman alabilir. Bu yüzden, dokümantasyonu düzenli olarak güncelleyerek doğru olduğundan ve en güncel veritabanı yapılarıyla senkronize olduğundan emin olun.
Zayıf indeksleme, yavaş sorgu performansına ve yazma işlemlerinin etkilenmesine yol açabilir. Uygun indeksler olmadan veritabanı genelinde arama yapmak çok zaman alır. Bu zorluğun üstesinden gelmek için, sorgu desenlerini analiz eden ve indeks oluşturmayı öngörülü olarak optimize eden query store gibi otomatik indeksleme araçlarını kullanabilirsiniz. Bu araçlar, kullanım desenlerine göre indeksleri ayarlayan makine öğrenimi algoritmalarına sahiptir.
İyi yapılandırılmış bir veritabanı şeması, artan veri hacimleri ve karmaşıklıklarla başa çıkmak için sağlam bir çerçeve sunarak veri bütünlüğünü korur ve ölçeklenebilirliği destekler.
Kendinizi geliştirmek istiyorsanız, bu yolculukta size yardımcı olacak harika DataCamp kursları mevcut. Managing Databases in PostgreSQL öğreticimiz, en güçlü açık kaynak veritabanı sistemlerinden biri olan PostgreSQL hakkında pratik içgörüler sunar. Using PostgreSQL in Python öğreticimiz, veritabanı yönetimi ile programlama arasındaki boşluğu kapatır. Bir veritabanı yöneticisiyseniz, SQL for Database Administrators yetkinlik yolumuza başlayabilirsiniz. Veri hazırlığıyla ilgilenenler ise Cleaning Data in PostgreSQL Databases kursumuza göz atmalıdır.
Karmaşık konuları basitleştirmeyi seven bir içerik stratejistiyim. Splunk, Hackernoon ve Tiiny Host gibi şirketlerin hedef kitleleri için ilgi çekici ve bilgilendirici içerikler üretmelerine yardımcı oldum.
Bir tablo, veritabanı içinde satır ve sütunlar halinde düzenlenmiş verileri içerir. Öte yandan, bir veritabanı şeması veritabanı yapısının genel planıdır. Tabloların, alanların ve veritabanının farklı bölümleri arasındaki ilişkilerin nasıl düzenlendiğini tanımlar.
Bir e-ticaret uygulaması için örnek bir veritabanı şeması, Customers, Orders, Products ve OrderDetails gibi tabloları içerir. Bu tablolar, verilerin düzenli kalması için ilişkilerle birbirine bağlanır.
Bir veritabanı şemasının temel bileşenleri tablolar, alanlar, veri türleri ve ilişkilerdir. Tablolar ilgili verileri satır ve sütunlarda saklar, alanlar bir tablodaki sütunları temsil eder, veri türleri bir alanın barındırabileceği veri türünü belirtir ve ilişkiler tabloların birbirleriyle nasıl etkileşime girdiğini tanımlar.
Veritabanı şemaları üç ana türe ayrılabilir: kavramsal, mantıksal ve fiziksel şemalar. Kavramsal şemalar uygulama ayrıntıları olmadan veritabanına genel bir bakış sunar, mantıksal şemalar verilerin yapısını ve ilişkilerini ortaya koyar, fiziksel şemalar ise verilerin nerede ve nasıl saklandığını açıklar.
Veritabanı şemalarının en yaygın biçemleri yıldız şema, kar tanesi şema, hiyerarşik şema ve ilişkisel şemadır. Her biçem, belirli iş ihtiyaçlarını karşılamak için verileri kendine özgü bir şekilde düzenler.
Bir yıldız şemada, boyut tablolarına bağlı merkezi bir olgu tablosu bulunur; bu boyutlar düzdür ve normalleştirilmemiştir. Buna karşılık, bir kar tanesi şemada da merkezi bir olgu tablosu vardır ancak boyut tabloları, daha küçük ilişkili tablolara normalleştirilir ve daha karmaşık bir yapı oluşur.
İlişkisel şema, nesne yönelimli programlama için tasarlanmıştır ve verileri, merkezi bir olgu tablosu olmadan birbirleriyle ilişkili tablolara düzenler. Buna karşılık hiyerarşik şema, verileri bir kök tablonun birden çok alt tabloya bağlandığı ve her alt tablonun yalnızca bir ebeveyne sahip olduğu ağaç yapısında organize eder.
Bir veritabanı şeması tasarlamak, gereksinimlerin toplanması, varlık-ilişki diyagramlarının (ERD) oluşturulması, bilgilerin tablolara düzenlenmesi, veritabanının normalleştirilmesi, güvenlik önlemlerinin uygulanması, adlandırma kurallarının tanımlanması ve şemanın örnek verilerle test edilmesi gibi birkaç adımdan oluşur.
Veritabanı şemaları, tabloları ve alanları dikkatle organize ederek, yinelenmeyi azaltmak için verileri normalleştirerek, verimli indeksleme stratejileri uygulayarak ve veri erişim desenleri ile performans testlerine dayalı olarak şemayı düzenli şekilde yeniden düzenleyerek optimize edilebilir.
DataCamp ile öğrenin
{count, plural, one {Kurs} other {Kurs}}
{count, plural, one {Program} other {Program}}
{count, plural, one {Kurs} other {Kurs}}

{count, plural, one {blog} other {blog}}
Abid Ali Awan
14 dk.
{count, plural, one {blog} other {blog}}
Dario Radečić
15 dk.
{count, plural, one {Eğitim} other {Eğitim}}
Kurtis Pykes
8 dk.
{count, plural, one {Eğitim} other {Eğitim}}
Adel Nehme