2009-03-15 5 views
1

은 데이터 무결성 이외의 다른 데이터베이스 도움말에서 적절한 관계를 설정합니까?데이터베이스 관계

성능을 향상 시키거나 방해합니까?

답변

1

적절한 관계는 사람들이 데이터를 생략하는 것보다 데이터를 이해하는 데 도움이 될 것이라고 말하고 싶습니다. 특히 전체 비용이 유지하는 데에는 상당히 부족합니다.

존재 여부가 아키텍처 측면을 제외하고 성능을 저해하지는 않습니다 (다른 사람이 지적했듯이 데이터 무결성으로 인해 때때로 외부 키 위반이 발생하지만 일부 영향을 미칠 수 있음) IMHO는 많은 이점 (올바르게 사용 된 경우)보다 중요합니다. .

난 당신이 FKS 사용 여부를 묻는되지 않은 알고 있지만 난 그냥 (결과를 처리하고있다)를 사용하는 이유에 대한 관점의 몇 가지 추가 거라고 생각 :이

을 ORM (나중에)을 사용할 계획이라면 외래 키가 필요합니다. 또한 ETL/데이터 가져 오기 및 내보내기, 나중에보고 및 데이터웨어 하우징에 매우 유용 할 수 있습니다.

외래 키가 기본 비즈니스 로직을 구현하기 때문에 다른 응용 프로그램에서 스키마를 사용하는 경우에도 유용합니다. 따라서 애플리케이션 (및 다른 애플리케이션)은 관계를 인식하고 (그리고이를 존중해야 함) 필요합니다. 데이터 일관성을 유지하고 소비하는 응용 프로그램의 데이터 오류 수를 줄입니다.

마지막으로 FK 값으로 테이블 데이터를 조회 할 가능성이 높으므로 마지막으로 인덱스를 어디에 배치해야하는지 알 수 있습니다.

0

데이터베이스의 관계가 성능을 향상 시키거나 방해합니까?

도구 상자의 모든 도구와 마찬가지로 사용 방법에 따라 결과가 달라집니다. 올바르게 지정된 관계와 잘 설계된 논리 데이터베이스는 성능에 큰 도움이 될 수 있습니다. 예를 들어 정규화 된 데이터와 비정규 화 된 데이터를 통한 검색의 차이를 고려하십시오.

+0

OP는 외래 키가 정의되지 않은 정규화 된 데이터에 대해 이야기하고 있다고 생각합니다. –

+0

예, 그 관계가 사용되지 않는 경우에 대해 이야기하고있었습니다. –

3

외래 키에 해당하는 명백한 색인이있는 경우 성능에 지각할만한 부작용이 없어야합니다. 이 데이터베이스는 작업해야하는보다 완벽한 데이터베이스 기능 중 하나입니다.

1

중요한 방식으로 성능을 저하시키지 않습니다. 유일한 장애는 삽입/업데이트/삭제할 때 무결성 검사입니다.

외부 키는 일관성을 보장하기 때문에 데이터베이스 디자인에서 중요한 부분입니다. 응용 프로그램을 망칠 수있는 데이터 손상에 대해 가장 낮은 수준의 보호 기능을 제공하기 때문에이를 사용해야합니다. 또 다른 이점은 데이터베이스 도구 (시각화/분석/코드 생성)가 외래 키를 사용하여 데이터를 관련시키는 것입니다.

0

데이터베이스 엔진에 따라 외래 키 제약 조건을 통해 정의 된 관계가 성능에 도움이 될 수 있습니다. 제약 조건을 통해 엔진은 키의 부모 측 테이블에있는 데이터의 존재에 대해 특정 가정을 수행 할 수 있습니다.

MS SQL Server에 대한 간단한 설명은 http://www.microsoft.com/technet/abouttn/flash/tips/tips_122104.mspx에서 찾을 수 있습니다. 다른 엔진에 대해서는 잘 모르지만 다른 플랫폼에서는이 개념이 타당합니다.

+0

좋은 점은 null 열과 동일하며 쿼리 최적화 프로그램을 돕는 것입니다. – tuinstoel

0

신고 여부와 관계없이 데이터의 관계가 존재합니다. FK 제약 조건을 통해 관계를 선언하고 적용하면 삽입/업데이트/삭제가 발생할 때 데이터를 확인하는 데 드는 작은 비용으로 특정 종류의 오류를 방지 할 수 있습니다.

관계를 통해 계단식 삭제를 선언하면 데이터를 삭제할 때 특정 종류의 오류가 발생하지 않습니다.

관계를 알고 있으면 쿼리를 작성할 때 데이터를 유연하고 정확하게 사용하는 데 도움이됩니다.

테이블을 잘 디자인하면 관계를보다 분명하고 유용하게 만들 수 있습니다. 데이터에서 관계를 사용하는 것은 우선 관계형 데이터베이스를 사용하는 주된 힘입니다.

0

성능에 미치는 영향 : 다중 사용자 응용 프로그램을 사용하고 관계를 사용하여 많은 참조 무결성을 수행하는 경우 MS Access 2003 경험을 통해 최종 응답 시간 측면에서 큰 타격을받을 수 있습니다 -사용자.

참조 무결성을 적용하는 방법에는 여러 가지가 있습니다. 관계에서 몇 가지 규칙을 지키기로 결심하고 프런트 엔드에 더 많은 집행을하고 RI를 약간 잃어 버려 살았습니다. 물론 다중 사용자 환경에서는 자유의 작은 부분에 매우 조심해야합니다.

0

성능에 민감한 데이터베이스를 구축 한 경험에 의하면, 외래 키는 성능 저하의 원인이됩니다. 참조 레코드가 삽입/업데이트되거나 마스터 레코드가 삭제 될 때마다 확인해야하기 때문입니다. 증거가 필요하면 실행 계획을 살펴보십시오.

문서 및 도구 사용을 위해 계속 사용하지만 일반적으로 응용 프로그램 계층을 통해서만 DB에 액세스 할 수있는 고성능 시스템에서는 사용하지 못하도록합니다.

관련 문제