수학적 관점에서 볼 때, 테이블에 기본 키가 하나 이상 있다고 가정하면 간단한 테이블 속성 대신 임의의 이름으로 기본 키를 참조하는 근시안적인 디자인 결정 인 것 같습니다.
결과적으로 기본 키를 비 클러스터형에서 클러스터형으로 또는 그 반대로 변경하면 먼저 키를 삭제 한 다음 읽기보다는 이름을 검색해야합니다.
내가 보지 않은 임의의 이름을 사용하는 데 어떤 이점이 있습니까, 아니면 기본 키에 임의의 이름을 사용하지 않는 DBMS가 있습니까?
2011-02-22 (2011/02/22 날짜를 정렬하지 않으려는 경우 편집 ) :
필자는 테이블 이름에서 기본 키 이름을 파생시킬 수있는 기능을 보여 드리겠습니다 (일명 sql-sever 일명 sybase 시스템 테이블 사용).
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은 명시 적 이름을 제공하지 않으면 생성 된 이름을 좋아하는 사람이 없다고 말합니다.
create table example_table (
id int primary key
)
select dbo.get_pk('example_table')
방금 받았어
PK__example___3213E83F527E2E1D
그러나 sysobjects의 이름이 고유해야하는 이유는 무엇입니까? 테이블과 기본 키에 정확히 동일한 이름을 사용하는 것이 좋습니다.
그렇게하면 우연히 위반 될 수있는 명명 규칙을 설정할 필요가 없습니다.
이제 마리안에게 대답하십시오.
- 클러스터를 클러스터되지 않은 기본 키로 변경하는 작업을 pk를 삭제할 수 있도록 pk의 실제 이름을 알아야하는 예로 사용했습니다.
- 사물에는 적절한 이름이 필요하지 않으며, 쉽게 고유하게 표시 할 수 있으면 충분합니다. 이것이 추상화의 기초입니다. 객체 지향 프로그래밍은 이런 식으로 진행됩니다. 다른 클래스의 유사한 속성 에 다른 이름을 사용할 필요는 없습니다 .
- 테이블의 속성이므로 임의적입니다. 테이블 이름은 사용하려는 경우 알아야 할 모든 것입니다.