문제

을 만드는 사용자 정의 형식을 대신 사용하는 기존의 형식이 최상의 방법?에 미리 모든 작업 장소 기본적인 유형들은 미리 정의된,그것은 최고의 연습을?어떤 장점이고 무엇이 단점입니다.
많은 감사!

도움이 되었습니까?

해결책

MS SQL Server-아이디어는 좋은 것입니다.그러나,가 그들에게:변경할 수 없습니다면 그들을 그들에 사용하기 때문가 없 ALTER TYPE .... 문입니다.이 될 수 있습니다.

이것을 고려하십시오:당신이 서점 응용 프로그램은 사용자 정의 형식 ISBN=VARCHAR(10)-안드로이드를 지원합니다.이제 국제위원회의 결정을 increate ISBN 필드를 13 자-불행하게도 없 ALTER TYPE ISBNType..... 그래서 당신의 유일한 선택은 기본적으로 모든 열의 유형에 당신의 모든 데이터베이스,다시 만들의 형식에 새로운 형태,그리고 다시 만들어 모든 열을 다시합니다.

아이디어가고 싶지만 사용-그러나 현재 상태에서,그것은 다음을 사용할 수 없게,내 생각에는 불행한 일이다.

마크

다른 팁

조금 늦었지만 .. 내 2 cts.

사용자 정의 유형은 개념 및 논리 모델에서 도메인의 역할을 충족하므로 실제 데이터베이스에서 논리적 데이터 모드를 구현하려면 사용자 정의 유형의 사용이 가장 근사치가됩니다. 이는 UDT를 사용하지 않고 수행 할 수있는 것보다 자동으로 구현으로 전송할 수있는 그래픽 모델을 사용하는 것과 같은 이점을 제공합니다.

도메인을 사용하면 우편 번호를 SSN 필드에 저장하려는 시도를 감지하고 런타임 (또는 컴파일 시간)에 데이터베이스에 잡힐 수 있습니다. 이를 통해 회사의 광범위한 비즈니스 규칙을 시행 할 수 있습니다. 데이터가 스토리지에 도달하는 시점에서. 다른 곳에서는 사용자에게 제공되지만 여기서는 아무도 아무도 그들을 돌아 다니도록하기 위해 절대적으로 시행되어야합니다.

또한, ANSI SQL : 1999에 정의 된 UDT는 방법을 캡슐화하고 서브 타입으로 만들 수있다. 즉, 구현을 터치하지 않고도 제약 조건을 다루는 비즈니스 규칙의 특정 변경 사항이 데이터베이스에서 변경 될 수 있습니다.

그러나 ... 현재 구현 된 UDT는 많은 것을 원합니다. SQL Server가 설명대로 표준을 구현하고 Oracle에 대해서는 확실하지 않습니다. 그리고 그들이 그렇게하더라도, BI 툴링, ETL 툴링 또는 기타 간단한 도구를 사용하면 UDT를 사용하는 단점은 즉시 분명해질 것입니다. 일반적으로 UDT를 이해하지 못하고 그렇게하더라도 그렇지 않을 것입니다. 대다수는 기본 유형 (int, char 및 date/time)을 기반으로하기 때문에 사용할 수 있습니다.

보고 도구에 관해서는 필드 조합이있는 UDT를 고려해 봅시다. 이제 데이터베이스 공수 ETL-Tool이 어떻게 유형을 이해할 수 있을까요? 구조를 표시하거나 계산에 사용하려면 구조를 이해할 수 있어야합니다. 그리고 모든 지원되는 데이터베이스 - 어려운 작업입니다. 그리고 아무도 UDT를 사용하지 않기 때문에 그들은 이것을하지 않을 것입니다. 그것은 악의적 인 원이지만, 우리는 여전히 그것과 함께 살아야합니다.

그 외에도 대부분의 데이터베이스에서 UDT 지원이 그렇게 뜨거운 것은 아닙니다. 변화하는 유형은 상당히 어려울 수 있습니다. 구문은 어디에서나 동일해야하지만, 그들의 행정은 SQL : 1999에서 정의되지 않으므로 모든 곳에서 다릅니다. 예를 들어 SQL Server에서 UDT의 소유자를 변경해보십시오. SQL Server 2016에 대해서는 확실하지 않지만 UDT가 초점 영역처럼 보이지 않기 때문에 그 영역에서 큰 개선을 기대하지는 않습니다.

마지막으로, UDT에 정말 복잡한 코드를 추가하면 디버깅 옵션이 부족한 환경에서 프로그래밍하는 오래된 문제가 발생합니다. 그것은 도움이되지 않습니다.

따라서 : 데이터베이스를 완전히 제어하고 모든 상호 작용이 소프트웨어를 통과하는 경우 UDT가 매우 도움이 될 수 있습니다. 그렇지 않다면 목에 큰 고통이 될 수 있습니다. 시나리오에서 어떤 경우가 있는지, 당신이 말할 수있는 것입니다.

MS SQL Server에서 사용자 정의 데이터 유형은 얼마나 멋진가요?

개인적으로, 나는 그것들을 사용하지 않지만 나는 그들을 보았습니다. 한 가지 문제는 클라이언트 코드가 적어도 MS SQL Server의 기본 유형 인 IIRC 만 인식한다는 것입니다. 및 버전의 휴대 성/동작.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top