Bir tablonun en fazla bir birincil anahtara sahip olduğu kabul edilen matematiksel bir görünümden bakıldığında, birincil anahtarlara basit bir tablo özelliği yerine rastgele bir adla atıfta bulunmak dar görüşlü bir tasarım kararı gibi görünmektedir.
Birincil anahtarı kümelenmemişten kümelenmiş veya tam tersine değiştirmek için, önce adını aramaktan, sonra onu okumanızdan ve daha sonra okumaktan önce.
Görmediğim rasgele adları kullanmanın avantajı var mı veya birincil anahtarlar için rasgele adlar kullanmayan DBMS var mı?
2011-02-22'yi düzenleyin (o tarihte sıralamak istemeyenler için 22/02/2011):
Birincil anahtarın adlarını tablo adından türetebileceğiniz işlevi göstereyim (erken sql-sever aka sybase sistem tablolarını kullanarak):
create function dbo.get_pk (@tablename sysname)
returns sysname
as
begin
return (select k.name
from sysobjects o
join sysobjects k on k.parent_obj = o.id
where o.name = @tablename
and o.type = 'U'
and k.type = 'k')
end
go
Gbn'nin belirttiği gibi, açık bir ad sağlamadığınızda, hiç kimse oluşturulan adı gerçekten sevmez:
create table example_table (
id int primary key
)
select dbo.get_pk('example_table')
Yeni aldım
PK__example___3213E83F527E2E1D
Ama neden nesnelerdeki isimler benzersiz olmalı? Tablo ve birincil anahtarı için tam olarak aynı adı kullanmak mükemmel olur.
Bunu yaparak, yanlışlıkla ihlal edilebilecek adlandırma kuralları oluşturmamız gerekmiyordu.
Şimdi Marian cevaplar:
- Bir kümeyi kümelenmemiş bir birincil anahtara değiştirme görevini, örnek olarak bırakabilmek için pk'nin gerçek adını bilmem gereken bir örnek olarak kullandım.
- İşlerin uygun isimlere sahip olması gerekmez, kolayca benzersiz bir şekilde ifade edilebilirlerse yeterlidir. Bu soyutlamanın temelidir. Nesneye yönelik programlama bu şekilde devam eder. Farklı sınıfların benzer özellikleri için farklı adlar kullanmanız gerekmez .
- Bir tablonun bir özelliği olduğu için keyfidir. Tablonun adı, kullanmak isteyip istemediğinizi bilmeniz gereken tek şeydir.