Yetenek Uyumunu İnşa Etmek – Bölüm 2: Salesforce’ta Nesneler, İlişkiler ve Alanlar
Yetenek Uyumunu İnşa Etmek serimizin ikinci bölümüne hoş geldiniz! Bu makalede, bir yetenek yönetim sisteminin kalbi olan veri modelini Salesforce platformunda nasıl kuracağımızı ele alacağız. Özel nesneler (Custom Objects), ilişkiler (Relationships) ve alanlar (Fields) gibi temel yapı taşlarını adım adım inceleyeceğiz. Sağlam bir veri modeli, sisteminizin esnekliğini ve ölçeklenebilirliğini garanti eder. Salesforce’un güçlü veri modelleme yetenekleriyle yetenek uyum sistemimizin temelini atmaya hazır olun!
Salesforce Veri Modelinin Temelleri ve Yetenek Uyumuna Giriş
Her başarılı uygulamanın temelinde, iyi tasarlanmış bir veri modeli yatar. Salesforce platformu, standart nesneleriyle (Account, Contact, Opportunity vb.) zengin bir temel sunarken, özel iş ihtiyaçlarını karşılamak için özel nesneler (Custom Objects) oluşturma esnekliği sağlar. Yetenek uyum sistemi gibi spesifik bir çözüm geliştirirken, bu esneklik kritik öneme sahiptir.
Salesforce Veri Modelinin Önemi
Salesforce veri modeli, organizasyonunuzun tüm verilerini yapılandırmanın ve depolamanın omurgasıdır. Doğru bir modelleme, veri bütünlüğünü sağlar, raporlama ve analiz yeteneklerini artırır, otomasyon süreçlerini kolaylaştırır ve kullanıcı deneyimini iyileştirir. Yanlış tasarlanmış bir model ise performans sorunlarına, veri tutarsızlıklarına ve gelecekteki geliştirmelerde zorluklara yol açabilir.
Yetenek Uyum Sistemi Bağlamı
Yetenek uyum sistemi, çalışanların yeteneklerini, projelerin veya rollerin gerektirdiği yetenekleri ve bu ikisi arasındaki eşleşmeleri yönetmeyi hedefler. Bu bağlamda, “Yetenek”, “Çalışan”, “Proje”, “Rol” gibi kavramları Salesforce içinde nesneler olarak modellememiz gerekecektir. Bu nesneler arasındaki mantıksal bağlantılar (ilişkiler) ve her bir nesnenin sahip olduğu özellikler (alanlar) sistemin işlevselliğini belirleyecektir.
Özel Nesneler (Custom Objects) ile Yetenek Yönetimi
Özel nesneler, Salesforce’ta işinize özgü verileri depolamanın ve yönetmenin temel yoludur. Yetenek uyum sistemi için aşağıdaki gibi özel nesneler tanımlayabiliriz:
Yetenek (Skill__c) Nesnesi Oluşturma
Her bir yeteneği (örneğin, ‘Apex Geliştirme’, ‘Proje Yönetimi’, ‘Veri Analizi’) temsil edecek bir nesneye ihtiyacımız var. Bu nesne, yeteneğin adını, açıklamasını ve belki de bir kategorisini içerecektir.
- Nesne Adı: Yetenek (Skill)
- API Adı:
Skill__c - Kullanım Alanı: Şirket bünyesindeki tüm yeteneklerin merkezi bir listesini tutmak.
Çalışan (Employee__c) veya Kullanıcı (User) Nesnesi İlişkisi
Çalışanlarımızın yeteneklerini takip etmek için, çalışanları temsil eden bir nesneye ihtiyacımız var. Bu, mevcut User nesnesini kullanmak veya bir Employee__c özel nesnesi oluşturmak şeklinde olabilir. Genellikle User nesnesi tercih edilir, ancak ek çalışan detayları için Employee__c nesnesi oluşturulup User ile ilişkilendirilebilir.
- Nesne Adı: Çalışan (Employee) – Eğer User nesnesi yeterli değilse.
- API Adı:
Employee__c - Kullanım Alanı: Çalışanlara özgü yetenek bilgilerini depolamak.
Proje (Project__c) veya Rol (Role__c) Nesnesi
Yeteneklerin hangi projelerde veya rollerde gerektiğini belirlemek için bu nesnelere ihtiyacımız var. Bir proje veya rol, belirli yetenek setleri gerektirebilir.
- Nesne Adı: Proje (Project)
- API Adı:
Project__c - Kullanım Alanı: Şirket projelerini ve bu projelerin gerektirdiği yetenekleri listelemek.
Benzer şekilde, bir Role__c nesnesi de tanımlanabilir.
Nesneler Arasındaki İlişkiler (Relationships) ile Veri Bütünlüğü ve Bağlantı
Nesneler arasındaki ilişkiler, verilerinizin birbiriyle nasıl bağlantılı olduğunu tanımlar. Bu, raporlama, veri bütünlüğü ve kullanıcı deneyimi için hayati öneme sahiptir. Salesforce’ta iki ana ilişki türü vardır:
Lookup İlişkileri
Lookup ilişkileri, iki nesne arasında gevşek bir bağlantı kurar. Bir nesne, diğer nesnedeki bir kayda “bakar” ancak bu kaydın varlığına bağlı değildir. Örneğin, bir Employee__c nesnesinin bir Department__c nesnesine lookup ilişkisi olabilir. Departman silinse bile çalışan kaydı varlığını sürdürebilir.
- Kullanım: İlgili kayıtlar arasında bağımsızlık gerektiğinde.
- Örnek: Bir
Project__cnesnesininProject Manager (User)ile lookup ilişkisi.
Master-Detail İlişkileri
Master-Detail ilişkileri, iki nesne arasında güçlü bir ebeveyn-çocuk (parent-child) bağlantısı kurar. Çocuk (detail) kaydı, ebeveyn (master) kaydına tamamen bağımlıdır. Ebeveyn kayıt silindiğinde, tüm çocuk kayıtları da otomatik olarak silinir. Ayrıca, çocuk kayıtlardaki alanlar (örneğin, toplam değerler), ebeveyn kayıtta özet (rollup summary) alanları olarak gösterilebilir.
- Kullanım: Güçlü bağımlılık ve veri bütünlüğü gerektiğinde, özet alanlarına ihtiyaç duyulduğunda.
- Örnek: Bir
Invoice__cnesnesininInvoice Line Item__cnesnesi ile master-detail ilişkisi.
Çoktan Çoka İlişkiler (Junction Objects)
Yetenek uyum sistemi için en kritik ilişki türlerinden biri çoktan çoka (many-to-many) ilişkilerdir. Örneğin, bir çalışan birden fazla yeteneğe sahip olabilir ve bir yetenek birden fazla çalışan tarafından bilinebilir. Bu tür bir ilişkiyi doğrudan kurmak mümkün değildir. Bunun yerine, bir “birleşim nesnesi” (junction object) kullanılır.
- Kullanım: İki nesne arasında birden çok bağlantı kurulması gerektiğinde.
- Örnek:
EmployeeSkill__cadında bir birleşim nesnesi oluşturarakEmployee__cveSkill__cnesneleri arasında çoktan çoka bir ilişki kurabiliriz. Bu nesne, hangi çalışanın hangi yeteneğe sahip olduğunu ve belki de o yetenekteki seviyesini tutar.
Örnek Birleşim Nesnesi Yapısı:
Nesne: EmployeeSkill__c
Alanlar:
- Employee (Master-Detail to Employee__c veya User)
- Skill (Master-Detail to Skill__c)
- Skill Level (Picklist: Başlangıç, Orta, İleri, Uzman)
- Son Kullanım Tarihi (Date)
Alanlar (Fields) ile Detaylı Yetenek Verisi Yakalama
Nesneler, verileri depolamak için bir çerçeve sağlarken, alanlar bu verilerin spesifik özelliklerini tanımlar. Salesforce, metin, sayı, tarih, onay kutusu gibi birçok farklı alan türü sunar.
Metin ve Sayı Alanları
Bu alanlar, temel metinsel ve sayısal verileri depolamak için kullanılır.
- Metin (Text): Yetenek adı, açıklama.
- Metin Alanı (Text Area): Daha uzun açıklamalar.
- Sayı (Number): Yıl deneyimi, puanlama.
Seçim Listesi (Picklist) ve Çoklu Seçim Alanları
Bu alanlar, kullanıcının önceden tanımlanmış bir değer listesinden seçim yapmasını sağlar, veri tutarlılığını artırır.
- Seçim Listesi (Picklist): Yetenek seviyesi (Başlangıç, Orta, İleri, Uzman), yetenek kategorisi.
- Çoklu Seçim Listesi (Multi-Select Picklist): Bir çalışanın birden fazla sertifikaya sahip olması gibi durumlarda kullanılabilir, ancak genellikle birleşim nesneleri daha esnek çözümler sunar.
Tarih, Onay Kutusu ve Diğer Alan Türleri
Çeşitli veri türleri için farklı alanlar mevcuttur.
- Tarih (Date): Yeteneğin kazanıldığı tarih, sertifikanın son geçerlilik tarihi.
- Onay Kutusu (Checkbox): Yetenek doğrulanmış mı?
- Para Birimi (Currency): Yetenekle ilgili maliyetler (eğitim ücreti).
- URL: Sertifika bağlantısı.
Yetenek Uyumunu Modelleme: Pratik Bir Senaryo
Şimdiye kadar öğrendiklerimizi birleştirerek, basit bir yetenek uyum sistemi için temel veri modelini oluşturalım. Amacımız, çalışanların sahip olduğu yetenekleri ve bu yeteneklerdeki seviyelerini takip etmektir.
Temel Nesne ve İlişki Tasarımı
Bu senaryoda, üç ana nesneye ve aralarındaki ilişkilere odaklanacağız:
- User (Standart Nesne): Çalışanlarımızı temsil eder.
- Skill__c (Özel Nesne): Şirketteki tüm yetenekleri listeler.
- EmployeeSkill__c (Birleşim Nesnesi): Hangi kullanıcının hangi yeteneğe sahip olduğunu ve ilgili detayları tutar.
İlişkiler:
EmployeeSkill__cnesnesindenUsernesnesine bir Master-Detail ilişkisi (veya Lookup).EmployeeSkill__cnesnesindenSkill__cnesnesine bir Master-Detail ilişkisi (veya Lookup).
Master-Detail kullanmak, EmployeeSkill__c kayıtlarının User ve Skill__c kayıtlarına bağımlı olmasını sağlar, bu da veri bütünlüğü için iyidir.
Gerekli Alanların Tanımlanması
Her nesne için tanımlayacağımız bazı temel alanlar:
Skill__c Nesnesi:
Name(Standart): Yeteneğin Adı (Örn: "Salesforce Apex")Description__c(Text Area): Yeteneğin Detaylı AçıklamasıCategory__c(Picklist): Yetenek Kategorisi (Örn: "Yazılım Geliştirme", "Proje Yönetimi")
EmployeeSkill__c Nesnesi:
Employee__c(Master-Detail to User): Hangi çalışanSkill__c(Master-Detail to Skill__c): Hangi yetenekSkill_Level__c(Picklist): Yetenek Seviyesi (Örn: "Başlangıç", "Orta", "İleri", "Uzman")Years_of_Experience__c(Number): Bu yetenekteki deneyim yılıLast_Used_Date__c(Date): Yeteneğin en son kullanıldığı tarihVerified__c(Checkbox): Yetenek bir yönetici tarafından onaylandı mı?
Örnek Veri Modeli Şeması (Basitleştirilmiş)
+-----------------+ +-----------------------+ +-----------------+
| User | | EmployeeSkill__c | | Skill__c |
+-----------------+ +-----------------------+ +-----------------+
| - Id |<------| - Id |------>| - Id |
| - Name | | - Employee__c (M-D) | | - Name |
| - Email | | - Skill__c (M-D) | | - Description__c|
| ... | | - Skill_Level__c | | - Category__c |
| | | - Years_of_Experience__c| | |
| | | - Last_Used_Date__c | | |
| | | - Verified__c | | |
+-----------------+ +-----------------------+ +-----------------+
Veri Modeli Tasarımında En İyi Uygulamalar ve İpuçları
Sağlam ve sürdürülebilir bir Salesforce veri modeli oluşturmak için bazı en iyi uygulamaları takip etmek önemlidir.
İsimlendirme Kuralları ve Açıklamalar
Nesnelerin ve alanların adlandırılması tutarlı ve açıklayıcı olmalıdır. API adları (__c ile bitenler) genellikle İngilizce ve CamelCase formatında olurken, etiketler (labels) kullanıcıların anlayacağı dilde olmalıdır. Her özel alan ve nesne için açıklama eklemek, gelecekteki yöneticiler ve geliştiriciler için paha biçilmez bir referans sağlar.
Gereksiz Alanlardan Kaçınma
Yalnızca gerçekten ihtiyaç duyulan alanları oluşturun. Her ek alan, depolama, performans ve yönetim açısından ek yük getirir. Bir alanın gerçekten gerekli olup olmadığını sorgulayın ve daha sonra eklenebileceğini unutmayın.
Güvenlik ve Erişilebilirlik
Veri modelini tasarlarken, hangi kullanıcı profillerinin hangi nesnelere ve alanlara erişebileceğini, hangi işlemleri (okuma, yazma, silme) yapabileceğini düşünün. Field-Level Security (FLS) ve nesne izinleri, hassas verileri korumak için kritik öneme sahiptir.
Ölçeklenebilirlik ve Esneklik
Veri modelinizi sadece bugünkü ihtiyaçlar için değil, gelecekteki olası genişlemeler ve değişiklikler için de düşünün. Esnek bir yapı, yeni özellikler eklendiğinde veya iş süreçleri değiştiğinde adaptasyonu kolaylaştırır.
Sonuç
Bu makalede, Yetenek Uyumunu İnşa Etmek serimizin ikinci bölümünde, Salesforce platformunda güçlü bir yetenek yönetim sisteminin temelini oluşturan veri modelini detaylı bir şekilde inceledik. Özel nesnelerin (Custom Objects) nasıl tanımlanacağını, nesneler arası ilişkilerin (Relationships) veri bütünlüğünü nasıl sağladığını ve farklı alan türlerinin (Fields) detaylı veri yakalama yeteneklerini nasıl artırdığını öğrendik. Özellikle, çalışanların ve yeteneklerin çoktan çoka ilişkisini yönetmek için birleşim nesnelerinin (Junction Objects) kritik rolünü vurguladık. Sağlam bir veri modeli, sisteminizin performanslı, esnek ve geleceğe hazır olmasını sağlayacaktır. Bir sonraki bölümde, bu veri modelini temel alarak kullanıcı arayüzünü ve otomasyon süreçlerini nasıl inşa edeceğimizi keşfedeceğiz. Veri modeliniz hazır, şimdi inşa etmeye devam edelim!
SSS (Sıkça Sorulan Sorular)
1. Neden özel nesneler (Custom Objects) kullanmalıyız?
Salesforce'un standart nesneleri (Account, Contact, Opportunity vb.) birçok iş ihtiyacını karşılar. Ancak, işinize özgü, benzersiz veri yapıları (örneğin, Yetenek, Çalışan Yeteneği) gerektiğinde özel nesneler oluşturmanız gerekir. Bu, verilerinizi doğru şekilde yapılandırmanıza ve iş süreçlerinize tam uyum sağlamanıza olanak tanır.
2. Master-Detail ve Lookup ilişkileri arasındaki temel fark nedir?
Master-Detail: İki nesne arasında güçlü bir ebeveyn-çocuk bağımlılığı kurar. Çocuk kayıt, ebeveyn kayıt olmadan var olamaz ve ebeveyn silindiğinde çocuk da silinir. Ayrıca özet (rollup summary) alanlarına izin verir.
Lookup: İki nesne arasında daha gevşek bir bağlantı kurar. Çocuk kayıt, ebeveyn kayıt silinse bile varlığını sürdürebilir ve özet alanları desteklemez. Veri bütünlüğünün daha az kritik olduğu veya bağımsızlık gerektiği durumlarda tercih edilir.
3. Çoktan çoka (Many-to-Many) ilişkiler ne zaman kullanılır ve nasıl oluşturulur?
Çoktan çoka ilişkiler, bir kaydın birden fazla başka kayıtla, ve o diğer kaydın da birden fazla ilk kayıtla ilişkili olabileceği durumlarda kullanılır (örneğin, bir öğrenci birden fazla derse kaydolabilir ve bir derste birden fazla öğrenci olabilir). Salesforce'ta bu, iki ana nesne arasına bir "birleşim nesnesi" (Junction Object) yerleştirilerek oluşturulur. Birleşim nesnesi, her iki ana nesneye de Master-Detail (veya Lookup) ilişkisiyle bağlıdır.
4. Yetenek seviyelerini (Başlangıç, Orta, İleri) nasıl takip edebiliriz?
Yetenek seviyelerini takip etmek için genellikle birleşim nesnesi (örneğin, EmployeeSkill__c) üzerinde bir Seçim Listesi (Picklist) alanı oluşturulur. Bu Picklist alanı, "Başlangıç", "Orta", "İleri", "Uzman" gibi önceden tanımlanmış değerleri içerir. Bu sayede veri tutarlılığı sağlanır ve raporlama kolaylaşır.
5. Veri modelini daha sonra değiştirebilir miyim?
Evet, Salesforce'ta veri modelinizi daha sonra değiştirebilirsiniz. Yeni alanlar ekleyebilir, mevcut alanların türünü değiştirebilir (bazı kısıtlamalarla), yeni nesneler oluşturabilir veya ilişkileri düzenleyebilirsiniz. Ancak, özellikle çok fazla veri içeren canlı bir sistemde büyük değişiklikler yapmadan önce dikkatli planlama, test ve yedekleme yapmanız önemlidir. İlişki türünü değiştirmek (örneğin Lookup'tan Master-Detail'a) bazı durumlarda veri kaybına yol açabilir veya ek adımlar gerektirebilir.