문제

이것은 제가 만든 예일 뿐입니다.이것이 내가 가지고 있는 관계라고 가정합니다:

0NF 자동차(CarID PK, (TireID,Tire_Colour, Tire_Punctured), 안전) 여기서 TireID, Tire_Colour, Tire_Punctured는 반복되는 그룹의 일부입니다.

타이어가 모두 펑크나지 않으면 자동차는 안전한 것으로 간주됩니다.

다음 기능 종속성이 올바른가요?

카드ID, TireID, Tire_Punctured -> {안전함}

정규화를 계속하고 관계를 별도의 테이블로 분해하면 테이블 전체에서 Safe의 종속성을 어떻게 표시할 수 있습니까?

Sample Data
------------
CarID   |  TireID  |   Tire_Colour   |   Tire_Punctured   |   Safe   |  
   1          23             black              false            true  
   1          11             blue               false            true  
   1          29             black              false            true  
   1           1             black              false            true  

   2           4             red                false            false  
   2          34             purple             false            false  
   2          24             black              true             false  
   2          64             black              false            false  
도움이 되었습니까?

해결책

고전 정규화 이론은 스키마의 (TireID, Tire_Colour, Tire_Punctured) 부분을 나타내는 것으로 간주하는 경우에만 이 시나리오에 적용될 수 있습니다. *하나의* 속성/열, 해당 속성/열 자체가 다음 작업을 수행합니다. *관계(/테이블) 값 *.현대 이론에서는 관계 가치 속성(Relation-valued attribute, RVA)을 줄여서 표현합니다.

이 경우 두 FD의 carID -> yourRVA 및 yourRVA -> safe가 있습니다.

전자는 우리가 말하는 자동차를 알면 어떤 타이어 세트(및 그 상태)가 관련되어 있는지 알 수 있다는 사실을 표현하고, 두 번째는 타이어 상태에 따라 타이어 상태가 (모두 자체적으로) 결정된다는 사실을 표현합니다. 차가 안전한지 아닌지.

이 디자인(*)을 보다 전통적인 디자인으로 "해제"하면(RVA 속성을 포함된 스칼라 속성으로 교체하여) yourRVA -> 안전한 FD는 더 이상 표현할 수 없습니다. 분명히 yourRVA가 더 이상 존재하지 않기 때문입니다.그러한 디자인에서 그러한 규칙을 지정하는 것은 기능적 종속성의 범위를 벗어나며 수행될 수 없습니다.

(*) SQL 시스템에서 이를 구현하려는 경우 SQL 시스템(및 SQL 언어 자체도)은 일반적으로 기본 테이블에서 RVA를 지원하지 않기 때문에 그렇게 해야 합니다.

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