문제

응용 프로그램에 표시되는 모든 데이터에 대해 백엔드에 SQL Server DB를 사용하여 Silverlight를 사용하여 웹 기반 애플리케이션을 구현하고 있습니다. 응용 프로그램을 쉽게 확장 할 수 있도록하고 싶고 이것으로 들어가야 할 방향은 데이터베이스를 느슨하게 결합하고 모든 것을 외국 키로 묶지 않도록하는 것입니다. 몇 가지 예를 찾아 보려고했지만 아무 소용이 없습니다.

누구든지 내가 이것으로 지상에서 내릴 수 있도록 정보 나 좋은 출발점/샘플/예제가 있습니까?

대단히 감사합니다.

친절한 안부,

도움이 되었습니까?

해결책

데이터웨어 하우스와 같이 한 번에 엄청난 양의 인서트를 수행하지 않는 한 외국 키를 사용하십시오. 표준화 미친 듯이 비늘을 늘리면 그것을 활용해야합니다. 외국 키는 빠르며 한 번에 수백만의 레코드에 수백만을 삽입하는 경우 제약 조건은 실제로 당신을지지합니다.

클러스터 된 인덱스가있는 정수 키를 사용하고 있는지 확인하십시오. 이것은 결합 테이블을 매우 빠르게 만들어야합니다. 외국 열쇠없이 스스로를 감싸는 문제는 많고 실망 스럽습니다. 방금 주말 내내 그렇게했는데, 우리는 외국 열쇠를 갖지 않기 위해 의식적인 선택을했습니다 (우리는 테라 바이트의 데이터가 있습니다).

다른 팁

나는 당신이 당신의 용어를 조금 혼합하고 있다고 생각합니다. "느슨하게 결합 된"은 서로에 의존하지 않는 소프트웨어 구성 요소가있는 것이 바람직 함을 말합니다. 동일한 데이터베이스에서 테이블 간의 관계를 설명하는 데 사용되는 용어를 본 적이 없습니다.

"정규화"와 "정규화"라는 용어를 검색하면 더 나은 결과를 얻을 수 있다고 생각합니다.

그런 것을 생각하기 전에 데이터 무결성에 대해 생각해야합니다. 기본 데이터가없는 경우 레코드를 테이블에 넣을 수 없도록 외국 키가 존재합니다. 외국 키를 사용하지 않으면 조만간 (아마도 조만간) 고객이 누구인지 알지 못하기 때문에 쓸모없는 데이터로 끝날 것입니다. 외국 키는 데이터 보호이며 사용하지 않는 것을 고려해서는 안됩니다.

그리고 모든 데이터가 응용 프로그램에서 나올 것이라고 생각하지만 실제로는 사실이 아닙니다. 데이터는 다수의 데이터 가져 오기, 쿼리 창에서 여러 응용 프로그램에서 나옵니다 (누군가가 사용자 인터페이스에서 한 번에 한 번에 한 번의 가격을 수행하지 않을 모든 가격을 업데이트하기로 결정한 경우 생각). 데이터는 많은 소스에서 데이터베이스로 들어갈 수 있으며 데이터베이스 수준에서 보호되어야합니다. 덜하는 것은 전체 응용 프로그램과 데이터를 위험에 빠뜨리는 것입니다.

데이터베이스 스크립트와 같은 외부 소스를 통해 데이터가 입력 될 때 데이터베이스 보안에 대한 주석 주석.

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