Z matematycznego punktu widzenia, zakładając, że tabela ma co najwyżej jeden klucz podstawowy, wydaje się, że krótkowzroczna decyzja projektowa odnosi się do kluczy podstawowych o dowolnej dowolnej nazwie zamiast prostej właściwości tabeli.
W konsekwencji, aby zmienić klucz podstawowy z nieklastrowego na klastrowy lub odwrotnie, musisz najpierw wyszukać jego nazwę, a następnie upuścić ją i w końcu przeczytać.
Czy jest jakaś korzyść z używania dowolnych nazw, których nie widzę, czy też DBMS nie używa dowolnych nazw dla kluczy podstawowych?
Edytuj 22.02.2011 (22.02.2011 dla tych, którzy nie chcą sortować tam daty):
Pozwól, że pokażę funkcję, za pomocą której możesz uzyskać nazwy klucza podstawowego z jego nazw tabel (używając wczesnych tabel systemowych sybase, zwanych też sql-sever):
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
Jak głosi gbn, nikt tak naprawdę nie lubi wygenerowanej nazwy, jeśli nie podasz wyraźnej nazwy:
create table example_table (
id int primary key
)
select dbo.get_pk('example_table')
Właśnie dostałem
PK__example___3213E83F527E2E1D
Ale dlaczego nazwy w obiektach systemowych muszą być unikalne. Byłoby całkowicie OK, aby użyć dokładnie tej samej nazwy dla tabeli i jej klucza podstawowego.
W ten sposób nie musieliśmy konfigurować konwencji nazewnictwa, które mogłyby zostać przypadkowo naruszone.
Teraz odpowiedzi dla Mariana:
- Użyłem tylko zadania zmiany klastra w nieklastrowany klucz podstawowy jako przykład, w którym muszę znać rzeczywistą nazwę pk, aby móc go upuścić.
- Rzeczy nie muszą mieć odpowiednich nazw, wystarczy, że można je łatwo jednoznacznie opisać. To jest podstawa abstrakcji. Programowanie obiektowe idzie w tym kierunku. Nie musisz używać różnych nazw dla podobnych właściwości różnych klas.
- Jest to arbitralne, ponieważ jest własnością tabeli. Nazwa tabeli jest wszystkim, co musisz wiedzieć, jeśli chcesz z niej korzystać.