Ana içeriğe geç

Db İsimlendirme Kuralları

Temel Kurallar

  • Genel ilke: Tüm isim parçaları PascalCase (her kelimenin ilk harfi büyük, bitişik yazım) kullanılarak oluşturulur. (Id dahil)

  • Bölümlü yapı: Nesne adları _ (alt çizgi) ile ayrılan segmentlerden oluşur. Her segment PascalCase olmalıdır.

    • Şablon: [Prefix]_[Rn | RnPj]_[ModulKodu]_[NesneAdi]
    • Örnek: Tb_Rn_Inventory_Items, Sp_RnPj_Production_CreateBomCost
  • İngilizce ifade edilir: İsimlerde İngilizce kullanılır.

  • Geçici yapılar: Geçici tablo/view adları ilgili Tmp öneki ile başlar.

  • Türkçe karakter yok: İsimlerde Ç, Ğ, İ, Ö, Ş, Ü ve boşluk kullanılmaz; ASCII karakterler tercih edilir.

  • Çoğul isimler: Tablo adları çoğul olur: Items, Orders.

  • Birincil anahtarlar: [TekilTabloAdi]Id biçimindedir (ör. ItemId, OrderId).

  • Metin alanlar: 'NVARCHAR' tipi kullanılır. (örn. NVARCHAR(50), NVARCHAR(100), NVARCHAR(250), gerektiğinde NVARCHAR(MAX)). Tüm Unicode sabitleri N'...' biçiminde yazılmalıdır

  • Tarih/zaman alanları: Date, DateTime, UtcDateTime son ekleri kullanılır (ör. AddDate, UpdateDate, UpdateDateTime). Datetime tercih edilir. smalldatetime tipinden kaçınılmalıdır.

  • Mantıksal alanlar: Is* ile başlar ve bit tipindedir(ör. IsActive, IsFinished). 'Tiynint' tipinden kaçınılmalıdır.

  • Sayısal Alanlar: Tamsayı için 'int', virgüllü sayı için 'decimal(18,6)' tipi kullanılır. 'Tiynint' tipinden kaçınılmalıdır.

  • Terim seçimi (tip/tür/grup): Aynı anlama gelebilecek ifadeler arasında tip (İngilizce karşılığı: Type) tercih edilir. “Tür”, “grup”, “sınıf”, “kategori” gibi kelimeler isimlendirmede kullanılmaz.

    • Doğru: ItemTypeId, PriceTypeId, OperationTypeId
    • Yanlış: ItemTurId, PriceGroupId, OperationClassId
  • Sabit/standart kısaltmalar: Kullanılmamaya çalışılır. Ancak gerekli olduğunda, herkesçe bilinen ve proje genelinde tutarlı bir liste ile sınırlandırılır:

    • İzin verilenler (örnek): Id, No (numara), Qty (miktar), Avg, Min, Max, Net, Gross, Ref, Code, Desc (gerekliyse).
    • Kaçınılacaklar: ...
    • Birim/simge kısaltmaları: Teknik/uluslararası standartlar aynen kullanılır (Kg, Mm, Cm, Usd, Eur).
    • Kısaltma ilkesi: Açık isim > kısaltma. Kısaltma yalnızca isim çok uzunsa, tekrar eden bir desen ise veya alanda yer kısıtı varsa kullanılır.
    • Tutarlılık: Bir kez seçilen kısaltma tüm şema boyunca aynı anlamda kullanılmalıdır.
    • Örnekler:
    • Sıra No: LineNumber
    • Açıklama: Notes
    • KullanıcıId: @sssip (Sp lerde)
    • BypassTrig: Bir tabloda Update trigger' ı varsa 'BypassTrig' adında bir alan açılır.

Nesne Türleri

  • Tablo
  • View
  • Stored Procedure
  • Function
  • Trigger
  • Index
  • Foreign Key (FK)
  • Default Constraint
  • Sequence

Genel Şablon

[Prefix]_[Rn | RnPj]_[ModulKodu]_[NesneAdi]

Prefixler

PrefixTürNot
Tablolar
TbTabloKalıcı tablolarda kullanılır
TmpGeçici TabloOturum/geçici içerikler
View
PvViewPrimary (operasyonel) view
SvSeçim (Lookup) ViewŞimdilik kullanılmıyor
CvRapor Katalog ViewŞimdilik kullanılmıyor
TmpPvGeçici ViewGeçici tablolara bakan view
Stored Procedure
SpStored Procedureİş kuralı/proses
Function
FnFunctionSkalar/table-valued

Modül Kodları

PrefixModülÖrnek
Ana Modüller
SalesSiparişTb_Rn_Sales_Order
PlanningPlanlamaTb_Rn_Planning_WorkOrder
InventoryStok & Ürün AğacıTb_Rn_Inventory_Item
ProductionÜretimTb_Rn_Production_Bom
PurchaseSatın AlmaTb_Rn_Purchase_Order
SystemSistemTb_Rn_System_User

Diğer Nesneler İçin İsim Şablonları

AdıSözdizimi (Syntax)Örnek
Trigger[TabloAdi]_[Islev]Tb_Rn_Sales_Order_UpdateAudit
IndexIx_[TabloAdi]_[Kolon1]_[Kolon2]...Ix_Tb_Rn_Sales_Order_OrderCode
Unique IndexUix_[TabloAdi]_[Kolon1]_[Kolon2]...Uix_Tb_Rn_System_User_UserName
Foreign KeyFk_[TabloAdi]_[RefTabloAdi]_[AlanAdi]Fk_Tb_Rn_Sales_Order_Tb_Rn_Inventory_Item_ItemId
Default ConstraintDf_[TabloAdi]_[KolonAdi]Df_Tb_Rn_System_User_IsActive
SequenceS_[TabloAdi]_[AlanAdi]S_Tb_Rn_Sales_Order_OrderNo

Not: TabloAdi, RefTabloAdi, AlanAdi segmentlerinin tümü PascalCase olmalıdır.


Örnekler

  • Tablo: Tb_Rn_Inventory_Item
  • View: Pv_Rn_Production_BomTree
  • SP: Sp_Rn_Purchase_CreateOrder
  • FN: Fn_Rn_System_DivideByZero
  • Trigger: Tb_Rn_Quality_SsTransactionItems_UpdateLock
  • Index: Ix_Tb_Rn_Inventory_Item_ItemCode
  • FK: Fk_Tb_Rn_Production_Bom_Tb_Rn_Inventory_Item_ItemId
  • DF: Df_Tb_Rn_System_User_AddDate
  • Sequence: S_Tb_Rn_Finance_ExchangeRate_RateNo

Stil Denetim Listesi (Hızlı Kontrol)

  • Segmentler _ ile ayrıldı mı?
  • Her segment PascalCase mi?
  • Türkçe karakter yok mu?
  • Entity adları tekil mi?
  • PK/FK, tarih ve bit alan isimleri kurala uygun mu?
  • Prefix ve modül kodu doğru mu?

Snippet

Redgate Sql Prompt

ipucu

Snippet’larla hızlı ve tutarlı Sql yazın. İsimlendirme kurallarına %100 uyumlu Sql kodu yazmak için şu repo’daki hazır şablonları kullanın: ReniumYazilim / SQL-DEV / SQL-PROMPT / Snippets

Hızlı Seç: Senaryo → Snippet

SenaryoKullanılacak Snippet
Tablo oluşturmasnp_CreateTable-a27c8d44-5ecc-475a-90a1-caf7b22dbe24.json
SP oluşturmasnp_CreateSp-0c85b39e-3122-44db-9de0-603b18f4bec6.json
TvFn / Fnxxx / Function_TvFn_Template.sql
Triggerxxx
Index / Unique Indexxxx

Editörlerde (Ssms / Visual Studio) snippet’ları nasıl kullanırım?

  1. Repoyu klonlayın veya ZIP olarak indirin.
  2. Editörde snippet dosyasını açın ve kendi tablo/nesne adınızla düzenleyin.
  3. İsimlendirme kontrol listemize göre alan adlarını gözden geçirin.
  4. Kaynağı “şablon” olarak saklayın; yeni nesnelerde doğrudan kopyalayıp doldurun.
ipucu

Renium kullanıcıları. ...\OneDrive - RENIUM\Belgeler - Proje\General\GitHub\SQL-DEV\SQL-PROMPT\Snippets klasöründen daha hızlı ve isimlendirme standartlarına uygun SQL snippet’lara erişebilirsiniz:::