문제

SQL Server의 사용자 정의 데이터 유형은 중간 SQL 사용자가 알고 사용해야하는 것입니까?

UDT 사용의 장단점은 무엇입니까?

도움이 되었습니까?

해결책

그것들을 사용하지 않는 것은 나의 조언입니다. 당신이 정의를 바꿔야한다면 당신은 상처의 세계에 있습니다. 아마도 이것은 SQL Server 2000 이후 개선되었고 최신 버전에 더 친숙한 사람은 이제 물에 들어가는 것이 안전한 지 여부를 알려줄 수 있지만, 이것을 확인하고 테스트를 통해 직접 확인할 때까지 나는 '내 생산 시스템에 넣었습니다.

자세한 내용은이 질문을 확인하십시오.SQL Server 2005에서 기본 유형의 UDT를 변경하는 방법은 무엇입니까?

다른 팁

그래요 ~ 아니다 추가 복잡성이 장점을 보증한다고 생각하지 않기 때문에 코드 기반 UDT를 사용하십시오. 나 하다 T-SQL UDT를 사용하여 추가 복잡성이 거의 없으므로 장점이 노력할 가치가 있습니다. (내 원래 게시물이 불완전하다고 지적 해 주신 Marc_s에게 감사합니다!)

코드 기반 UDT에 대해

이런 식으로 생각하십시오 : 프로젝트가 관리 된 코드 구성 요소 (앱)와 데이터베이스 구성 요소 (SQL Server)가있는 경우 데이터베이스에서 관리 코드를 정의함으로써 어떤 실제 이점을 얻습니까? 내 경험에? 없음.

DB 배포에 어셈블리를 추가하고 SQL 서버 내에서 어셈블리를 변경하고 파일을 추가해야하기 때문에 배포가 더 어렵습니다. 또한 SQL Server에서 CLR을 켜야합니다 (큰 문제는 아니지만 성능/메모리 페널티가 없다는 것이 나에게 증명되지 않았습니다). 결국, 당신이 이것을 응용 프로그램의 코드에 단순히 설계 한 경우에 가지고 있었던 것과 정확히 일치 할 것입니다. 성능 향상이있을 수 있지만 실제로는 조기 최적화의 사례로 나를 놀라게합니다. 특히 전반적인 CLR이 켜져 있기 때문에 성능은 어려움을 겪습니다.

참고 : SQL Server의 CLR을 사용하여 유형을 정의한다고 가정합니다. HLGEM은 SQL Server 2000에 대해 이야기하지만 2000에 익숙하지 않으며 외부 정의 된 DLL에는 UDF가 있고 UDT가 없다고 생각했습니다 (그러나 나를 인용하지 마십시오 ... 정말 익숙하지 않습니다!).

t-sql udts에 관해

T_SQL UDT는 SQL 단독으로 정의 할 수 있습니다 (SQL Server Management Studio의 "프로그래밍 가능성 | 유형 | 사용자 정의 데이터 유형"으로 이동). 표준 UDT의 경우 i ~일 것이다 실제로 당신은 그들을 마스터하는 것이 좋습니다. 그것들은 매우 쉽고 DDL을보다 자체 문서화로 만들 수 있으며 무결성 제약을 시행 할 수 있습니다. 예를 들어, 나는 성별 분야에서 적절한 데이터 만 허용되도록하기 위해 "젠더 타이프"(char (1), 무효가 아닌 "m"또는 "f"를 보유 함)를 정의합니다.

UDT는 전반적으로 매우 쉽지만 이 기사 UDT에서 허용되는 데이터를 제한하기 위해 규칙을 정의하여 다음 단계로 가져가는 방법에 대한 좋은 예를 제공합니다.

원래이 질문에 대답했을 때 복잡한 코드 정의 된 유형의 아이디어에 고정되었습니다.이마에 손바닥을 뿌립니다). 그래서 ... 감사합니다.

사용자 정의 유형의 전문가는 다음과 같습니다 꽤 잘 해결되었습니다 Alex Papadimoulis에 의해. 단점은 여기에 잘 언급되었습니다.

나는 또한 그것을 지적하고 싶습니다 sp_bindrule Alex의 게시물에서 언급 한대로 함수가 더 이상 사용되지 않았습니다. 누가 더 이상 사용되지 않았는지 잘 모르겠지만 지금입니다. 실제로 규칙은 전체적으로 더 이상 사용되지 않습니다.

제한 사항이있는 유형을 만들고 싶었으므로 적절한 열에 확인 제약 조건이있는 사용자 정의 테이블 유형을 사용하는 것이 좋습니다. 이것은 또한 복잡한 데이터 유형을 구축하는 방법을 제공합니다.

MSSQL에서 성장하고 다른 DBMS로 마이그레이션 할 때 더 어려워지는 SQL 구현 특정 기능을 사용하는 것이 실제로 권장되지 않습니다. DWH DBS의 경우 우리는 MSSQL을 시작하여 Oracle로 이주했으며 작년부터 HP Vertica로 졸업했습니다.

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