loading
0%
Tarihçe, .Net Framework vs .Net Core vs .Net5
.NET 5 Kurulumu
Visual Studio Code kurulumu
Http Protokolü
Restful Servisler
Restful vs Soap
JSON (JavaScript Object Notation)
Örnek Web Api Yaratmak
Startup ve Program Sınıfları
Ortam dosyaları
Controller Sınıfı
Route Kavramı
Action Methodlar
Okunabilir API tasarımı
Swagger Nedir? Nasıl Kullanılır?
Postman Nedir? Nasıl Kullanılır?
Api Debug Nasıl Yapılır?
Get ve GetById endpoint'lerinin yazılması
Put ve Post endpoint'lerinin yazılması
Delete endpoint'inin yazılması
İlişkisel ve NoSql Veritabanları
Table,Primary Key, Foreign Key Kavramları
Tablo İlişkileri
Temel SQL
ORM Nedir? ORM Araçları Nelerdir? Entity Framework Core'a Giriş
Örnek Projeye EF Core Dahil Etmek
DB Context kullanarak CRUD işlemler
Auto Increment ID kolonunun eklenmesi
Linq ile Crud İşlemler
Entity Kavramı
ViewModel ve Dto Kavramı
Ödev - Model Kullanımı
Ödev Çözümü - Model Kullanımı
AutoMapper
Modellerin Doğrulanması ve FluentValidation Kütüphanesi
Model Validasyonu - Ödev
Model Validasyonu - Ödev Çözümü
Middleware Kavramı
Custom Exception Middleware Yaratılmak
Dependency Nedir ?
Dependency Injection (DI) Kavramı
DI Container Kavramı
.NET Core DI Container (Services)
Projeye DI Container Kullanarak Logger Servis Eklemek
Pratik - Projeye Genre Controller ve Servislerin Eklenmesi
Ödev - Projeye Author Controller ve Servislerin Eklenmesi
Test Kavramı ve Çeşitleri
TDD (Test Driven Development) Nedir ?
Örnek Test Yazımı
Pratik - Command ve Validator Sınıflarının Testlerinin Yazılması
Ödev - Projenin eksik testlerinin tamamlanması
Token Bazlı Kimlik Doğrulama ve Access Token Kullanımı
Refresh Token Kullanımı
Proje Ödevi - Movie Store Uygulaması
Proje Ödevi 2 - Serbest Proje Seçimi
Coderbyte Challenge

Tablo İlişkileri

Tablo İlişkileri


İlişkisel bir veritabanı ile çalışırken veriyi olabildiğince atomik tutmak ve çoklanmasının önüne geçmemiz gerekir. Böylece bir veriyi güncellediğimizde ilişkili tüm bilgileri de güncellemiş ve veri bütünlüğünü sağlamış oluruz. Bunu sağlayabilmemiz için de tablolar arasında doğru ilişkileri kurmamız gereklidir. Dataları konumlandıracağımız tablolar, içerdikleri alanlar ve tablolar arası ilişkilerin tasarımı sürecine normalizasyon adı verilir.

Temel olarak 3 tip tablo ilişkisi bulunmaktadır.


1-1 İlişki


Bu ilişki tipinde tablolar arasında 1-1 bir ilişki bulunmaktadır. Genel olarak Temel Bilgi - Detay Bilgi şeklinde gruplanabilecek verileri 2 farklı tabloda konumlandırdığımızı ve ilişkilendirdiğimizi düşünebilirsiniz. 1-1 ilişkide temel olarak A tablosundaki PK, B tablosunda da PK'dır. Bu durumda B tablosunun PK'si aynı zamanda A tablosundaki PK ya işaret eden bir FK'dır.


Örnek verecek olursak; Books tablosunda bir kitap ile ilgili temel bilgilerin varolduğunu düşünelim. Kitaba ait daha fazla detay bilgiyi ise BookDetails tablosunda tuttuğumuzu düşünelim. Bu durumda kitap-kitap detayı için 1-1 ilişki mevcut denebilir. İlişkinin örnek görseli ise aşağıdaki gibi olacaktır.


Bu ilişkiye sahip bir veriyi aslında her iki tablonun kolonlarına sahip tek bir tablo içerisinde tutuluyor gibi düşünebiliriz. Bu nedenle bu ilişki tipine çok da sık rastlamayabilirsiniz. Uygulamamızın duyduğu ihtiyaca göre bu şekilde bir 1-1 ilişki kurup kurmama kararı vermemiz gerekebilir.


1-1 Relation


1-N İlişki


Bu ilişki tipinde tablolar arasında 1-N bir ilişki bulunmaktadır. Temel olarak A tablosundaki PK'nın, B tablosunda bir FK karşılığı vardır. Fakat B tablosunun kendine ait ayrı bir PK tanımı vardır.


Örnek verecek olursak; Books tablosunda bir kitabın temel bilgilerini tuttuğumuzu düşünelim. Kitaba ait her bir baskıyla ilgili bilgileri ise BookEditions tablosunda tuttuğumuzu düşünelim. Bu durumda kitap-kitap baskısı için 1-N ilişiki mevcut diyebiliriz. İlişkinin örnek görseli ise aşağıdaki gibi olacaktır.


1-N ilişki en çok kullanılan ilişki tiplerinden birisidir. Günümüzde farkında olmadan sıkça kullandığımız 1-N ilişki türlerini aşağıda bulabilirsiniz :)


  • User -> Posts
  • Post -> Comments/Reactions
  • User -> PaymentMethods
  • User -> Addresses

1-N Relation

N-N İlişki


Bu ilişki tipinde tablolar arasında N-N bir ilişki bulunmaktadır. Bu ilişkiyi 2 tablo arasında kurabilmek için 3. bir tabloya ihtiyacımız bulunmaktadır. Temel olarak A tablosundaki PK ile B tablosundaki PK'yı barındıran C tablosu üzerinden bu ilişki kurulur. C tablosunda hem A hem de B tablosuna işaret eden FK'lar vardır.


Books örneğimiz üzerinden devam edecek olursak; bir kitabın birden fazla yazarı olabileceği gibi, aynı yazar yada yazarların da birden fazla kitap yazabileceğini düşündüğümüzde yazar bilgisini direkt olarak Books tablosu ile ilişkilendirmemiz doğru olmayacaktır. Bu durumda yazar bilgileri için de Authors adında bir tablomuz olmalı ve kitap(lar)-yazar(lar) bilgisi için BookAuthors gibi ayrı bir tablo oluşturmamız gerekir. BookAuthors tablosu sayesinde kitap-yazar arasında N-N ilişkiyi sağlamış oluruz. İlişkinin örnek görseli ise aşağıdaki gibi olacaktır.


N-N Relation

0%
+ .NET 5 Giriş
Tarihçe, .Net Framework vs .Net Core vs .Net5
+ Kurulumlar
.NET 5 Kurulumu
Visual Studio Code kurulumu
+ Http Protokol
Http Protokolü
Restful Servisler
Restful vs Soap
JSON (JavaScript Object Notation)
+ Örnek Web Api Yaratmak
Örnek Web Api Yaratmak
+ Proje Dosyalarını Tanıma
Startup ve Program Sınıfları
Ortam dosyaları
+ Controllers, Route ve Action Methodlar
Controller Sınıfı
Route Kavramı
Action Methodlar
Okunabilir API tasarımı
+ Swagger ve Postman kullanımı
Swagger Nedir? Nasıl Kullanılır?
Postman Nedir? Nasıl Kullanılır?
Api Debug Nasıl Yapılır?
+ BookStore Projesi Yaratmak
Get ve GetById endpoint'lerinin yazılması
Put ve Post endpoint'lerinin yazılması
Delete endpoint'inin yazılması
- Veritabanı Yönetim Sistemleri
İlişkisel ve NoSql Veritabanları
Table,Primary Key, Foreign Key Kavramları
Tablo İlişkileri
+ Orm ve Entity Framework Core
Temel SQL
ORM Nedir? ORM Araçları Nelerdir? Entity Framework Core'a Giriş
Örnek Projeye EF Core Dahil Etmek
DB Context kullanarak CRUD işlemler
Auto Increment ID kolonunun eklenmesi
Linq ile Crud İşlemler
+ Entity, Model ve Mapper Kullanımı
Entity Kavramı
ViewModel ve Dto Kavramı
Ödev - Model Kullanımı
Ödev Çözümü - Model Kullanımı
AutoMapper
+ Fluent Validation Kullanarak Modellerin Doğrulanması
Modellerin Doğrulanması ve FluentValidation Kütüphanesi
Model Validasyonu - Ödev
Model Validasyonu - Ödev Çözümü
+ Middleware Kavramı
Middleware Kavramı
Custom Exception Middleware Yaratılmak
+ Dependency Injection
Dependency Nedir ?
Dependency Injection (DI) Kavramı
DI Container Kavramı
.NET Core DI Container (Services)
Projeye DI Container Kullanarak Logger Servis Eklemek
+ Projeye Genre Controller ve Servislerin Eklenmesi
Pratik - Projeye Genre Controller ve Servislerin Eklenmesi
+ Ödev - Projeye Author Controller ve Servislerin Eklenmesi
Ödev - Projeye Author Controller ve Servislerin Eklenmesi
+ TDD (Test Driven Development)
Test Kavramı ve Çeşitleri
TDD (Test Driven Development) Nedir ?
Örnek Test Yazımı
Pratik - Command ve Validator Sınıflarının Testlerinin Yazılması
+ Ödev - Projenin eksik testlerinin tamamlanması
Ödev - Projenin eksik testlerinin tamamlanması
+ Kimlik Doğrulama ve Yetkilendirme Protokolleri
Token Bazlı Kimlik Doğrulama ve Access Token Kullanımı
Refresh Token Kullanımı
+ Proje Ödevi 1- Movie Store Uygulaması
Proje Ödevi - Movie Store Uygulaması
+ Proje Ödevi 2 - Serbest Proje Seçimi
Proje Ödevi 2 - Serbest Proje Seçimi
+ Coderbyte Challenge
Coderbyte Challenge
chat

Comments

rocket

0

woman-dancing

0

thinking-face

0

exploding-head

0

Max character number is 255.

You need to log in to be able to comment!