Dari pandangan matematis, mengingat bahwa sebuah tabel memiliki paling banyak satu kunci primer, tampaknya menjadi keputusan desain picik untuk merujuk ke kunci primer dengan beberapa nama arbitrer alih-alih properti tabel sederhana.
Sebagai konsekuensi untuk mengubah kunci utama dari nonclustered ke clustered atau sebaliknya, Anda harus terlebih dahulu mencari namanya, daripada menjatuhkannya dan akhirnya membacanya.
Apakah ada keuntungan menggunakan nama arbitrer yang tidak saya lihat atau ada DBMS yang tidak menggunakan nama arbitrer untuk kunci utama?
Edit 2011-02-22 (22/2/2011 untuk mereka yang tidak ingin mengurutkan tanggal di sana):
Biarkan saya menunjukkan fungsinya, yang dengannya Anda dapat memperoleh nama-nama kunci utama dari nama tabelnya (menggunakan tabel sistem sql-sever alias sybase awal):
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
Sebagai gbn menyatakan tidak ada orang yang benar-benar menyukai nama yang dihasilkan, ketika Anda tidak memberikan nama eksplisit:
create table example_table (
id int primary key
)
select dbo.get_pk('example_table')
saya baru saja dapat
PK__example___3213E83F527E2E1D
Tetapi mengapa nama dalam sysobject harus unik. Sangatlah OK untuk menggunakan nama yang persis sama untuk tabel dan kunci utamanya.
Melakukannya dengan cara itu, kami tidak perlu membuat konvensi penamaan, yang bisa dilanggar secara tidak sengaja.
Sekarang jawaban untuk Marian:
- Saya hanya menggunakan tugas mengubah clustered menjadi kunci primer nonclustered sebagai contoh di mana saya perlu tahu nama sebenarnya dari pk untuk dapat menjatuhkannya.
- Hal-hal tidak perlu memiliki nama yang tepat, itu sudah cukup jika mereka dapat dengan mudah dilambangkan secara unik. Itu adalah dasar dari abstraksi. Pemrograman berorientasi objek berjalan seperti ini. Anda tidak perlu menggunakan nama yang berbeda untuk properti serupa dari kelas yang berbeda.
- Ini arbitrer, karena ini adalah properti dari sebuah tabel. Nama tabel adalah semua yang perlu Anda ketahui jika Anda ingin menggunakannya.