{{위키데이터 속성 추적}}
'''다치 종속'''은 [[릴레이션]] 내의 두 어트리뷰트 집합 사이 성립하는 제약조건 중의 하나이다.

[[함수 종속]]과 달리 '''다치 종속'''은 어떠한 조건을 만족하는 [[투플]]이 릴레이션 안에 있을 것을 요구한다. 그러므로 다치 종속은 [[투플|튜플]]이 만들어내는 "종속" 중의 한 종류로 분류할 수 있다.

[[제4정규형|제4정규화]]에서 중요한 역할을 한다.

다치 종속은 머리가 두 개인 이중 화살표(double arrow) [[파일:twoheadrightarrow.gif]]로 표기한다. <math>A</math> [[파일:twoheadrightarrow.gif]] <math>B</math>일 때, A가 B를 '''다치 결정'''한다고 말하고, 다른 말로는 B가 A에 '''다치 종속'''된다고 말한다.

예를 들어 {과목} [[파일:twoheadrightarrow.gif]] {교재}일 때, 과목 어트리뷰트가 교재 어트리뷰트의 값 하나를 결정하는 것이 아니라, 여러 개의 값, 즉 값의 집합을 결정한다는 뜻이다.
<ref name="Lee1">{{서적 인용|제목=데이터베이스시스템|저자=이석호|출판사=정익사|페이지=194,195 7.4.1 (제4정규형)}}
</ref>

== 정의 ==

<blockquote>
<math>R</math>을 릴레이션 스키마라고 하자. <math>\alpha \subseteq R</math> 이고 <math>\beta \subseteq R</math>라 하자. 만약 어떤 릴레이션 <math>r(R)</math>에 대해, <math>t _1[\alpha]=t _2[\alpha]</math>인 <math>r</math> 안의 모든 튜플의 쌍 <math>t _1</math> 과 <math>t _2</math>에 대해,
<math>r</math> 안에 다음과 같은 식이 성립하는 <math>t _3</math> and <math>t _4</math>가 존재하면,<br/>

<math>t _1[\alpha] = t _2 [\alpha] = t _3 [\alpha] = t _4 [\alpha]</math></br>
<math>t _3[\beta] = t _1 [\beta]</math></br>
<math>t _3[R - \beta] = t _2 [R - \beta]</math></br>
<math>t _4[\beta] = t _2 [\beta]</math></br>
<math>t _4[R - \beta] = t _1 [R - \beta]</math>
<br/><br />
다치 종속<br/>
<math>\alpha </math> [[파일:twoheadrightarrow.gif]] <math>\beta</math> <br/>
가  <math>R</math>에 대해 성립한다. <br/>

<ref>Silberschatz, Korth, Sudarshan. ''Database System Concepts'', 5th Edition</ref></br>
</blockquote>

== 예제 ==

다음 예제를 보라. 수업 부호와, 수업에서 권장되는 교재와, 강사 이름을 모아 놓은 데이터베이스이다:
<blockquote>
{| style="text-align:center" border="0"
|+''Teaching database''
|-
!수업!! 교재 !! 강사
|-
| AHA || Silberschatz || John D
|-
| AHA || Nederpelt || John D
|-
| AHA || Silberschatz || William M
|-
| AHA || Nederpelt || William M
|-
| AHA || Silberschatz || Christian G
|-
| AHA || Nederpelt || Christian G
|-
| OSO || Silberschatz || John D
|-
| OSO || Silberschatz || William M
|}
</blockquote>

수업에 연계된 강사들과, 수업에 연계된 교재들이 서로 독립적이므로, 이 데이터베이스 설계에는 다치 종속이 존재한다; AHA 수업에 새로운 교재 하나를 추가한다면, 그 수업의 강사들 각각에 대해 레코드 하나씩을 추가해주는 등의 식으로 일을 해줘야 한다.
<br>위 데이터베이스에는 두 개의 다치 종속이 존재한다. 그 두 개는 {수업} [[파일:twoheadrightarrow.gif]] {교재} 및 {수업} [[파일:twoheadrightarrow.gif]] {강사}이다.
<br>다치 종속을 가진 데이터베이스는 결국 중복성을 보인다. [[데이터베이스 정규화]] 과정 중 [[제 4 정규형]]이 다치 종속이 존재하지 않을 것을 요구한다.

<!--Example showing how to model the above in a Fourth Normal Form compliant way goes here-->


== 성질 ==
* 만약 <math>\alpha </math> [[파일:twoheadrightarrow.gif]] <math>\beta</math> 이면 <math>\alpha </math> [[파일:twoheadrightarrow.gif]] <math>R - \beta</math>이다.
* 만약 <math>\alpha </math> [[파일:twoheadrightarrow.gif]] <math>\beta</math> 이고 <math>\gamma \subseteq \delta</math> 이면,  <math>\alpha \delta</math> [[파일:twoheadrightarrow.gif]] <math>\beta \gamma</math>이다.
* 만약, <math>\alpha </math> [[파일:twoheadrightarrow.gif]] <math>\beta</math> 이고, 만약 <math>\beta </math> [[파일:twoheadrightarrow.gif]] <math>\gamma</math> 이면,  <math>\alpha </math> [[파일:twoheadrightarrow.gif]] <math>\gamma - \beta</math>이다.

다음 두 성질은 [[함수 종속]]과 관련있다.
* 만약 <math>\alpha</math> <math>\rightarrow</math> <math>\beta</math>이면, <math>\alpha </math> [[파일:twoheadrightarrow.gif]] <math>\beta</math>이다.
* 만약 <math>\alpha </math> [[파일:twoheadrightarrow.gif]] <math>\beta</math>이고 <math>\beta</math> <math>\rightarrow</math> <math>\gamma</math>이면, <math>\alpha</math> <math>\rightarrow</math> <math>\gamma - \beta</math>이다.

또한, 다음이 성립한다.
* R에서 X [[파일:twoheadrightarrow.gif]] Y 가 성립한다는 것과, R을 (X,Y) 및 (X,R-Y)로 분해하는 것이 무손실 분해이라는 것은 동치이다.

== 각주 ==
{{각주}}

== 외부 링크 ==
* [https://web.archive.org/web/20071129092334/http://www.almaden.ibm.com/cs/people/fagin/tods77.pdf Multivalued dependencies and a new Normal form for Relational Databases] (PDF) - Ronald Fagin, IBM Research Lab

[[분류:데이터 모델링]]