BCNF에 대한 질문좀(데이터 베이스)

inviolable의 이미지

7.5.1.1 Testing for BCNF
Testing of a relation to see if it satisfies BCNF can be simplified in some cases:
-To check if a nontrivial dependency a->b causes a violation of BCNF, compute a+(the attribute closure of a), and verify that it includes all attributes of R; that is, it is a superkey of R.
-To check if a relation schema R is in BCNF, it suffices to check only the dependencies in the given set F for violation of BCNF, rather than check all dependencies in F+.
we can show that if none of the dependencies in F causes a violaton of BCNF, then none of the dependencies in F+ will cause a violation of BCNF either
Unfortunately, the latter procedure does not work when a relation is decomposed
That is, it does not suffice to use F when we test a relation Ri, in a decompositon of R, for violation of BCNF. For example, consider relation schema R(A,B,C,D,E), with functional dependencies F containing A->B and BC->D. Suppose this were decomposed into R1(A,B) and R2(A,C,D,E). Now, neither of the dependencies in F contains only attributes from (A,C,D,E) so we might be misled into thinking R2 satisfies BCNF. In fact, there is a dependecies AC->D in F+(which can be inferred using the pseudotransitivity rule from the two dependencies in F), that shows that R2 is not in BCNF. Thus, we may need a dependency that is in F+, but is not in F, to show that a decomposed relation is not in BCNF

용어 설명
F+ : 함수 종속 집합 F에서 추론될 수 있는 모든 함수종속 집합
a+ : a->b꼴의 함수 종속에서 함수 종속 집합 F로부터 a를 좌변으로 하는 모든 가능한 우변의 집합

그러니까 릴레이션 스키마 R이 BCNF를 만족하는지 검사하는 간략화된 검사로써 릴레이션 스키마가 가지는 함수종속 F가 BCNF를 침해하는지만 검사하면 되는데 분해된 릴레이션의 경우에는 이 방법이 통하지 않는다
예를 들어 함수종속 F : A->B와 BC->D를 가지는 릴레이션 R(A,B,C,D,E)이 두 릴레이션 R1(A,B)와 R2(A,C,D,E)으로 분리되었을 때 함수종속 F의 어떠한 종속도 A,C,D,E의 속성만으로 이루어진게 없기 때문에 R2는 BCNF를 만족한다고 오인할 수 있다. 그러나 F+에 AC->D라는 종속이 있기 때문에(이는 F에서 가이행규칙에 의해 유도될 수 있음) R2는 BCNF를 만족하지 않는다.
이 말인데 이게 무슨 말인지 모르겠습니다 제가 이해가 안되는 부분은 "함수종속 F의 어떠한 종속도 A,C,D,E의 속성만으로 이루어진게 없기 때문에 R2는 BCNF를 만족한다고 오인할 수 있다." 이 부분입니다.

어제부터 6~7시간 동안 생각해봤는데도 전혀 모르겠습니다. 좀 도와주세요

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.