13 Ekim 2016 Perşembe

Eksik Foreign Key 'leri Nasıl Buluruz?

Referanslar veritabanının kalbidir. Çoğu zaman kod yazarak olması gereken veriyi hatasız bir şekilde veritabanına yazabiliriz. Ancak referansları kod yazarak doğruluğunu kontrol etmek zor bir iştir. Üstelik bir ekiple birlikte çalışıyorsanız, siz hata yapmasanız bile ekipten birileri mutlaka hata yapacaktır. En ufak bir kodsal kaçakta veritabanında hatalı veriler oluşmaya başlayacak ve büyük ihtimalle bu sorun büyüyene kadar kimse tarafından farkedilmeyecektir. Bu yüzden referansları kodsal olarak kontrol etmekten ziyade veritabanına foreign key constraintleri oluşturmalıyız. Veritabanında referans kolonların isimlendirilmesinde genelde kolon isminin sonuna "Id" eklenir. Bu şekilde o kolonun foreign key olduğunu anlarız. Aşağıdaki kod kolon isminin sonunda 'Id' bulunan ancak hiçbir Primary key veya foreign keyin bir parçası olmayan kolonları listeler.


SELECT C.TABLE_SCHEMA,C.TABLE_NAME,C.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS C
       INNER JOIN INFORMATION_SCHEMA.TABLES T ON C.TABLE_NAME = T.TABLE_NAME AND T.TABLE_TYPE = 'Base Table' AND T.TABLE_SCHEMA = C.TABLE_SCHEMA
       LEFT JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE U ON C.TABLE_NAME = U.TABLE_NAME AND C.COLUMN_NAME = U.COLUMN_NAME AND U.TABLE_SCHEMA = C.TABLE_SCHEMA
WHERE U.COLUMN_NAME IS NULL
       AND C.COLUMN_NAME LIKE '%id'
ORDER BY C.TABLE_SCHEMA, C.TABLE_NAME, C.COLUMN_NAME