Veri Yönetişimi 2 | Veri Modelleme ve Tasarım

Muhammet Şancı
8 min readAug 4, 2023

--

Veri modelleme, veri gereksinimlerini keşfetme, analiz etme ve ardından veri modeli adı verilen kesin bir biçimde temsil etme ve iletme sürecidir.

Veri Modelleme Nedir?

Bir veri modeli, bir kuruluşun verilerini, kuruluşun anladığı veya kuruluşun olmasını istediği şekilde tanımlar.

Yani bu modeller, kuruluşun veri yönetim süreçlerine ve iş gereksinimlerine, bir diğer deyişle çıkarlarına uygun şekilde tasarlanır; verilerin birbirleriyle ilişkisini belgeler.

Verileri modellemek, aşağıdaki etkileri sağlayarak maliyetleri azaltır:

  • Formal Tanımlama: Verilerde oluşabilecek anomalileri azaltarak kullanım risklerini ve maliyetlerini azaltan disiplinli bir yapı sağlar.
  • Etki Alanı Belirleme: Verilerin sınırlarını belirleyerek projelerin ve mevcut sistemlerin etki alanlarını açıklamaya yardımcı olur.
  • Metaveri Oluşturma: Veri yönetimi süreçleri için değerli bir kaynak olan metaverilerin çoğu, modelleme sürecinde ortaya çıkar.
  • Dokümantasyon Sağlama: Proje yöneticilerinin, analistlerin, modelleyicilerin ve geliştiricilerin ortamdaki veri yapısını anlamalarına yardımcı olacak bir referans haline gelir.
  • Referans Alınma: Bir projenin özelleştirilmesi, entegrasyonu, hatta değiştirilmesi için referans alınacak bir başlangıç noktası olur.

Model ve Notasyon Türleri

En çok kullanılan altı modelleme türü aşağıdaki gibidir:

  • Relational: Verileri aralarındaki ilişkilerle tanımlayan model. En yaygın kullanılan modelleme türüdür; veri depolama ve yönetmede etkilidir.
  • Dimensional: Verileri olası boyutlarıyla tanımlayan model. Veri analizi ve iş zekası uygulamalarında sıkça kullanılır; hızlı sorgulama sağlar.
  • Object-Oriented: Verileri nesneler ve sınıflarla tanımlayan model. Yazılımların veri yönetimi ve tasarımında büyük kolaylık sağlar.
  • NoSQL: Verileri graph, tree, ya da key-value eşleriyle tanımlayan model. Ölçeklenebilirlik, yüksek performans ve esnek veri yapıları sunar.
  • Fact-Based: Verileri gerçek hayat olay ve olgularıyla tanımlayan model. İş süreçlerini analiz etmede ve iş kurallarını modellemede etkilidir.
  • Time-Based: Verileri zaman boyutuyla tanımlayan model. Zamana bağlı veri değişimini anlamak ve geçmiş trendleri analiz etmek için idealdir.

Bu modeller kullanım alanlarına bağlı olarak en etkili modelleme türleri olup, verileri yönetmek konusunda en etkini ve en yaygın kullanılanı relational (ilişkisel) modeldir. Yazının devamında relational model ve bu modelin information engineering notasyonu kullanılacaktır.

Veri Modelleme Bileşenleri

Veri modelleri; varlıkları, ilişkileri, nitelikleri ve bunların yapılarını temsil etmek üzere çok sayıda model bileşeni barındırır.

A. Entity

Entity kavramı, relational modellerde yer alan varlıkları temsil eder.

━ A.1. Gösterim

Varlıklar, içerisinde varlığın adı yazılı dikdörtgenler ile temsil edilir.

ÖRNEK
Bir üniversite veri modelinde “Student”, “Course” ve “Instructor” varlıkları aşağıdaki gibi gösterilir:

B. Relationship

Relationship kavramı, relational modellerde yer alan varlıkların arasındaki ilişkileri temsil eder.

━ B.1. Gösterim

İlişkiler, varlık dörtgenleri arasında çizgilerle gösterilir. Bu çizgiler üzerlerinde cardinality sembollerini taşır.

ÖRNEK
Üniversite veri modelinde “Student”, “Course” ve “Instructor” varlıkları arasındaki anlamsal ilişkiler aşağıdaki gibi olabilir:

━ B.2. Cardinality

Cardinality kavramı, ilişkideki varlıkların, ilişkiye katılım oranlarını belirler. Cardinality sembolleri ve anlamları aşağıdaki gibidir:

ÖRNEK
Bir “Instructor”, birden fazla “Course” verebilir ya da hiç vermeyebilir. Ama bir “Course” tek bir “Instructor” tarafından mutlaka ve mutlaka verilmelidir. Bu katılım oranlarını aşağıdaki cardinality sembolleri gösterir:

━ B.3. Arity

Arity kavramı, tek bir ilişkiye katılan varlık sayısını temsil eder. Unary (tekil), binary (ikili) ve ternary (üçlü) ilişkiler, en sık karşılaşılanlardır.

━━ B.3.1. Unary Relationship

Unary (aynı zamanda self-referencing olarak da bilinir), bir varlığın kendisiyle ilişkilendirilmesidir.

ÖRNEK
Bir üniversitede “Analysis of Algorithms” dersi, ön şart olarak “Algorithms” dersini almayı gerektirebilir. Yani bir “Course” varlığı, pre-requisite olarak yine bir “Course” varlığıyla ilişki kurabilir, bu bir unary ilişki örneğidir:

━━ B.3.2. Binary Relationship

Binary, iki varlığın birbirleriyle doğrudan ilişkilendirilmesidir. En yaygın ilişki türüdür.

ÖRNEK
Üniversite veri modelinde “Student” ve “Course” arasındaki binary relationship aşağıdaki gibi olabilir:

━━ B.3.3. Ternary Relationship

Ternary, üç varlığın birbirleriyle ilişkilendirilmesidir. Üçlü olarak temsil etmektense iki tane binary ilişki tercih edildiğinden ötürü az görülür.

ÖRNEK
Üniversite veri modelinde “Student”, “Course” ve “Semester” arasındaki ternary relationship aşağıdaki gibi olabilir:

ÖRNEK
Böyle bir ternary relationship yerine aşağıdaki gibi birden fazla binary relationship kullanılması, ya da associative entity eklenmesi daha efektiftir:

C. Attributes

Attribute kavramı, relational modellerde yer alan varlıkların niteliklerini, özelliklerini temsil eder.

━ C.1. Gösterim

Nitelikler, varlığı temsil eden dörtgenin altına listelenir.

━ C.2. Identifier Keys

Bir key, bir varlığın bir örneğini benzersiz bir şekilde tanımlayan bir veya daha fazla niteliğin oluşturduğu kümedir.

━━ C.2.1. Simple Key

Simple key, bir varlığı benzersiz olarak tanımlayan doğal niteliktir.

ÖRNEK
“TurkishID” niteliği, bir “Student” varlığını benzersiz olarak tanımlayan doğal bir niteliktir. Çünkü bir öğrenci bu numaraya zaten sahiptir ve bu numara kişiye özeldir.

━━ C.2.2. Surrogate Key

Surrogate key, bir varlığı benzersiz olarak tanımlayan yapay niteliktir.

ÖRNEK
“StudentID” niteliği, bir “Student” varlığını benzersiz olarak tanımlayan yapay bir niteliktir. Çünkü bir öğrenci bu numaraya normalde sahip değildir; okula kaydolduğunda sistem tarafından kişiye özel üretilmiştir.

━━ C.2.3. Super Key

Super key, bir varlığı benzersiz olarak tanımlayabilen nitelikler kümesidir.

ÖRNEK
Nitelikler kümesi “StudentID — Name — Surname”, bir “Student” varlığını benzersiz olarak tanımlayabilir. İçerisinde bir ya da daha fazla benzersiz nitelik taşıması yeterlidir.

━━ C.2.4. Candidate Key

Candidate key, bir varlığı benzersiz olarak tanımlayabilen, en az elemana sahip nitelik kümeleridir.

ÖRNEK
“TurkishID” ve “StudentID”; bir “Student” varlığını benzersiz olarak tanımlayabilen, en az elemana sahip nitelik kümeleridir. Benzersiz olmak için içerisinde simple ya da surrogate key içerir.

━━ C.2.5. Primary Key

Primary key, bir varlığı benzersiz olarak tanımlaması için seçilmiş olan candidate key’dir.

ÖRNEK
Üniversite veritabanında bir “Student” varlığını benzersiz olarak tanımlaması için “StudentID” kullanılır.

━━ C.2.6. Foreign Key

Foreign key, bir varlığın, başka bir tablodaki bir varlığın primary key’ine işaret eden niteliğidir.

ÖRNEK
Bir “Course” varlığının “SemesterNo” niteliği; “Semester” varlığındaki bir primary key’e işaret ederek o “Course” varlığının ait olduğu dönem bilgisini belirtir.

D. Domain

Domain kavramı, bir niteliğin alabileceği olası değerlerin tam kümesidir, bu değerlerin standardize edilmesidir. Bu standartlar veri tipleri, yazım formatı, mantıksal kurallar gibi faktörlerle belirlenebilir.

ÖRNEK
Bir “PhoneNumber” niteliği 11 haneli bir sayı olmak zorundadır, içerisinde alfabetik karakter barındıramaz.

ÖRNEK
Bir “BirthDate” niteliği, formatı GG.AA.YYYY olacak şekilde belirlenebilir.

ÖRNEK
Bir “BirthDate” niteliğinin taşıdığı tarih formatı doğru olsa bile, bugünden sonraya ait bir değer belirtemez. Örneğin, 03.08.2050 olamaz.

Veri Modelleme Seviyeleri

Yüksek seviyeden makine seviyesine doğru üç temel modelleme seviyesi, sırasıyla aşağıdaki gibidir:

  1. Conceptual (Kavramsal) Model: Yüksek seviye veri gereksinimlerini barındırır. Önemli varlıklar, nitelikler ve aralarındaki ilişkileri içerir.
  2. Logical (Mantıksal) Model: Kavramsal modelin ayrıntılı bir temsilidir. Tüm varlıkları, varlıkların niteliklerini ve aralarındaki ilişkileri içerir.
  3. Physical (Fiziksel) Model: Mantıksal modeli referans alarak, belirli bir veri depolama teknolojisine özel uyarlanan ayrıntılı teknik çözümdür.

Diğer Modelleme Kavramları

A. Views

View tabloları bir veya daha fazla tablodan istenilen verileri istenilen şekillerde alarak oluşturulan sanal tablolardır. Sorguları basitleştirmek, veri erişimini kontrol etmek, verileri birleştirmek ve tablo sütunlarını yeniden adlandırmak için kullanılır; çalışma altyapısında SQL bulunur.

B. Normalization

Normalization, gereksizliği azaltmak ve veri bütünlüğünü iyileştirmek için veri modelini düzenleme işlemidir. Verilerin verimli ve doğru bir şekilde depolanmasını sağlayarak, tutarsızlıkları ortadan kaldırır.

1NF, 2NF, 3NF, 4NF, BCNF gibi normalization formları olup, ayrıntılarına buradan bakılabilir.

Normalize edilmiş bir veri modelinde sorgu performanslarını iyileştirmek için, gereksiz olsa bile bazı verilerin tekrar etmesine izin verilir, ya da özellikle tekrar etmeleri sağlanır. Buna denormalization denir.

C. Abstraction

Abstraction, mantıksal bir veri modeli, fiziksel bir veri modeline çevrilirken uygulanan işlemlerden biridir. Abstraction kapsamında bazı varlıkların, önemli temel özellikleri korunarak, etki alanları genişletilir ya da daraltılır. Bunlara generalization ve specialization denir.

ÖRNEK
“Car”, “Truck”, “Bus” varlıklarını “Vehicle” adı altında tek bir varlığa toplamak generalization, tam tersini yapmak ise specialization işlemidir.

Veri Modellemesinin Uygulanması

A. Planlama

Veri modelini tasarlamak üzere ilk olarak kullanılacak veritabanı teknolojisine ve veri gereksinimlerine uygun bir modelleme türü seçilmelidir.

Ardından bu modelin tasarlanmasında kullanılacak notasyon seçilmeli ve diyagram standartları belirlenmelidir.

B. Modelleme

  1. CDM Tasarımı:
    Modelleme türü ve notasyonlar belirlendikten sonra en yüksek seviyedeki veri gereksinimleri yakalanarak conceptual model oluşturulmaya başlanır.
  2. İş Terminolojisi:
    Alt seviye modellemeye devam etmeden önce CDM modelleme sürecinden yararlanarak bir iş terminolojisi oluşturulmalı; kuruluş perspektifi, isimlendirme gibi konularda standartlar oluşturulmalı, tutarsızlıkların önüne geçilmelidir.
  3. Associative Entity:
    Bir alt seviyeye, yani logical modellemeye gidilirken ilk olarak bazı ilişkiler, associative entity olarak yeniden yapılandırılmalıdır. Bu, ilişkideki varlıkların tanımlayıcı nitelikleri alınarak yalnızca varlıklar arasındaki ilişkiyi tanımlayan yeni bir varlığa koyma işlemidir, aynı zamanda mapping olarak da bilinir.
  4. Attribute Yapılandırma:
    Varlıklara gerekli diğer nitelikler eklenmelidir. Logical modele başarılı bir geçiş için tüm niteliklerin atomik (bölünemez) olmalarına dikkat edilmelidir. Örneğin “PhoneNum” niteliği atomik değildir, “CountryCode” — “AreaCode” — “Number” şeklinde ayrılabilir.
  5. Domain ve Key Belirleme:
    Tutarlılık sağlamak için, niteliklerin alabileceği değerlerin, yazım formatlarının, mantıksal kuralların belirlenmesi gerekir. Ardından varlıkların key’leri belirlenmeli, her biri için primary key seçilmelidir.
  6. Abstraction ve Ayrıntılar:
    Fiziksel modele geçiş sürecinde gerekli yerlerde abstraction işlemi yapılarak varlıklarda genelleme ya da özellemeye gidilmelidir. Ardından tüm varlıkların ve niteliklerin teknik karşılıkları olacak tablo ve sütun isimleri belirlenmeli, gerekli görülen alanlara veri ve yapı sınırlamaları eklenmelidir. Örneğin “StudentID” alanının NULL değer alması engellenmelidir.
  7. Denormalization ve Indexing:
    Performansı arttırmak için gerekirse denormalization uygulanmalı, sorgu performansını iyileştirmek için indexing yapılmalıdır. Bu, sorgu sırasında DBM sisteminin tüm veri satırlarını okumasındansa indexleri kullanarak daha hızlı sonuç getirmesini sağlar. Ayrıca veri erişimini kontrol etmek ve sorguları standartlaştırmak için viewler oluşturulabilir.

C. Değerlendirme ve Bakım

Bir model tasarlanırken her aşamada gözden geçirilmesi gerekir.

Model son hâlini alıp onaylandıktan sonra ise gereksinimleri karşılama konusunda sürekli güncel tutulmalı, performansını yüksek tutmak için bakımı yapılmalıdır.

D. Araçlar

  • Data Modeling Araçları: Modellemede yapılması gereken birçok görevi otomatikleştiren yazılımlardır. Bazı üst seviye modeling araçları, model seviyeleri arasındaki geçişleri de büyük oranda otomatik yapabilir.
  • Data Lineage Araçları: Her bir nitelik için veri modelindeki kaynak yapıların yakalanmasını ve yönetilmesini sağlar. Bir sistemde yapılan değişikliklerin diğer sistemlerde etkisi olup olmadığını görmek için kullanılabilir.
  • Data Profiling Araçları: Veri içeriğini keşfetmeye ve doğrulamaya yardımcı olur; veri kalitesinin ve eksikliklerinin belirlenmesini sağlar.
  • Endüstriyel Veri Modelleri: Sağlık, sigortacılık, bankacılık gibi sektörler için önceden oluşturulmuş veri modelleridir. Bu modeller genellikle kapsamlı ve çok detaylıdır. Satın alınarak kuruluşa özel uyarlanabilir.

Veri Yönetişimi İlişkisi

Veri modelleme işlemi, bilgi tüketicilerinin iş gereksinimleri ile veri üreticilerinin uygulama gereksinimlerini dengeler, ortaya koyduğu standartlar ile veri yönetimine düzen ve netlik getiren bir zemin hazırlar.

Veri tasarımcıları, bilgi tüketicileri ile verileri kullanılabilir biçimde yakalayan veri üreticileri arasında bir köprü görevi görür. Veri gereksinimlerinin karşılanabilmesi ve etkin veri yönetimi için, etkili bir veri modelleme gerekir.

Veri Yönetişimi 1 | Veri Mimarisi

Veri Yönetişimi 2 | Veri Modelleme ve Tasarım

Veri Yönetişimi 3 | Veri Depolama ve Operasyonlar

Veri yönetişimi üzerine yazdığım bu yazı, DAMA topluluğunun DMBoK2 kitabında bahsedilen data governance prensipleri üzerine dayanmaktadır. Grafikler tarafımca hazırlanmış olup, izin almak şartıyla kullanılabilir.

--

--

Muhammet Şancı

A developer who loves coffee, and a graphic designer who draws coffee.