2011-07-17 2 views
0

나는 데이터베이스에 관한 강의를 듣고 있으며 전산 문제에 대한 몇 가지 질문을 가지고 있습니다. 어떤 통찰력이라도 대단히 감사하겠습니다.DB 정규화 및 하위 쿼리

먼저, 나는 무손실이고 의존성을 보존하는 BCNF로 관계를 변환하는 알고리즘이 없다는 말을 듣는다. 그 이유는 어떤 관계에서는 BCNF에 원하는 속성과의 관계가 존재하지 않기 때문입니다. 같은 논리를 사용하는 이차 방정식의 두 가지 실제 솔루션을 찾을 수있는 알고리즘이 없다고 말할 수 있다는 의미에서 오해의 소지가 있습니다. 물론 당신은 할 수 없습니다. 그러나 정규화 문제에 대해서는 BCNF에 두 속성 (결정 문제)이있는 변환이 있는지 여부를 결정할 수 있어야한다고 생각합니다. 의사 결정 문제가 "예"이면 알고리즘이 동등한 BCNF 표현을 계산하십시오. 내 생각이 옳은가요? 아니면 내가 잘못 말한 것입니까?

내 두 번째 질문은 하위 쿼리에 관한 것입니다. 하위 쿼리를 포함하는 SQL의 모든 쿼리를 하위 쿼리없이 다시 작성할 수 있습니까? 나는 이것이 잘 형성되지 않았다는 것을 안다. 나는 기본 SQL (대부분의/모든 시스템이 공유하는 것)을 고수하고 최상위 레벨에 종속 된 명령문을 선택하도록 하위 쿼리를 제한한다고 가정한다. .

답변

0

1 - 내가 아는 한, 관계를 BCNF로 변환 할 수 있는지 여부를 결정하는 알고리즘은 하나도 없습니다. 그러나 기존의 것들도 결합하여 원하는 것을 얻을 수 있습니다.

관계 분해 알고리즘을 사용하여 관계를 분해 한 다음 종속성을 확인할 수 있습니다. 의존성이 유지되면 결과를 얻을 수 있습니다. 그렇지 않으면 단계를 역 추적하여 원래의 관계 상태를 반환 할 수 있습니다.

나는 당신이 원하는 답변을 알고 있지만 해결책으로 사용할 수 있습니다.

2 - 중첩 된 쿼리를 의미하는 경우 예에서 하위 쿼리를 사용하는 일부 쿼리는 하위 쿼리를 사용하지 않고 작성할 수 있습니다.

+0

감사합니다. 첫 번째로, 나는 별개의, 의미있는 분해의 유한 수가 있다고 생각하고 있습니다. 그래서 알고리즘은 그것들을 모두 생성하고 확인하는 것입니다. 두 번째로 ... 우리는 하위 쿼리를 제거 할 수있는 쿼리가 있음에 동의합니다. 하위 쿼리만으로 할 수있는 일이 있습니까? – Patrick87