Từ quan điểm toán học, cho rằng một bảng có nhiều nhất một khóa chính, dường như đó là một quyết định thiết kế thiển cận để tham chiếu các khóa chính bằng một số tên tùy ý thay vì thuộc tính bảng đơn giản.
Do đó, để thay đổi một khóa chính từ không bao gồm thành cụm hoặc ngược lại, trước tiên bạn phải tìm kiếm tên của nó, hơn là thả nó và cuối cùng lấy lại nó.
Có một số lợi thế trong việc sử dụng các tên tùy ý mà tôi không thấy hoặc có DBMS không sử dụng các tên tùy ý cho các khóa chính không?
Chỉnh sửa 2011 / 02-22 (22/02/2011 cho những ai không muốn sắp xếp ngày ở đó):
Hãy để tôi hiển thị hàm, trong đó bạn có thể lấy được tên của khóa chính từ tên bảng của nó (sử dụng các bảng hệ thống sybase sql-sever aka đầu tiên):
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
Vì gbn tuyên bố không có người thực sự thích tên được tạo, khi bạn không cung cấp tên rõ ràng:
create table example_table (
id int primary key
)
select dbo.get_pk('example_table')
Tôi vừa có
PK__example___3213E83F527E2E1D
Nhưng tại sao tên trong sysobjects là duy nhất. Sẽ hoàn toàn ổn khi sử dụng chính xác cùng tên cho bảng và khóa chính của nó.
Làm theo cách đó, chúng tôi không cần thiết lập các quy ước đặt tên, có thể vô tình bị vi phạm.
Bây giờ câu trả lời cho Marian:
- Tôi chỉ sử dụng nhiệm vụ thay đổi một cụm thành khóa chính không bao gồm như một ví dụ mà tôi cần biết tên thực tế của pk để có thể thả nó.
- Những thứ không cần phải có tên riêng, nó là đủ nếu chúng có thể dễ dàng được ký hiệu duy nhất. Đó là cơ sở của sự trừu tượng. Lập trình hướng đối tượng đi theo cách này. Bạn không cần sử dụng các tên khác nhau cho các thuộc tính tương tự của các lớp khác nhau.
- Nó là tùy ý, bởi vì nó là một thuộc tính của một bảng. Tên của bảng là tất cả những gì bạn cần biết nếu bạn muốn sử dụng nó.