개발자 끄적끄적
데이터베이스 응용(2023.10.2) 본문
<Key>
- a group of one or more attributes that uniquely identifies a row
- ACTIVITY relation
- Combination of two attributes become a key
- must consult the users to decide a key
- Every relation has at least one key
- Unique Attribute may not be the key of the table
<중간고사 문제>
2. 유일성을 갖는 속성(예를 들어 주민등록번호)을 키 값으로 정하는 직관적 방식이 부적절한 이유에 대해 간단히 설명
Sol) 유일성을 갖는 속성일지라도 그 속성이 여러 개의 다른 속성을 결정하는 관계(다중값 결정)가 있는 경우 키 값으로서
역할을 할 수 없고 키의 구성요소가 된다
<Normalization(정규화)>
- Undesirable relation -> desirable relation
- Undesirable relation = Modification Anomalie -> 갱신이상 현상
- deletion anomaly : 삭제이상 -> 내가 원하지 않은 데이터까지 함께 삭제되는 것
- insertion anomaly : 삽입이상 -> 어떤 정보를 입력하고 싶은데 입력에 문제가 생기는 것
- 정보의 중복에 따른 이상
- 특정정보의 표현불가
- NULL값의 보유
- 정보의 부정확
- 정규화 : 독립적으로 관련 있는 속성들은 별개의 table로 표현
- 실무자들이 일반적으로 사용할 수 있는 table 형태는 3NF
- ERD -> 3NF로의 변환 : ERD의 Entity는 실세계인 overall view로서 파악된 것이므로
개체내부 속성 간의 관계에의한 효율을 고려해서 tune-up 시킬 필요가 있다
ex_1) ACTIVITY(SID, Activity, Fee)
KEY : SID -> 학생 한명이 오직 한 개의 특별활동만 할 수 있는 경우
ex_2) ACTIVITY(SID, Activity, Fee)
KEY : SID, Activity -> 학생 한명이 여러 개의 특별활동을 할 수 있는 경우
- Modification Anomalie Solution(갱신이상 해결 방법)
- Sol) dividing the relation into two relations
ex) STU_ACT(SID, Activity)
KEY : SID, Activity
------------------------------------
ACT-COST(Activity, Fee)
KEY : Activity
- 주의) Referential integrity constraint(참조무결성 원칙) -> Table과 Table사이에 일관성을 유지해야한다
- STU_ACT는 ACT-COST의 부분집합
- before we allow an Activity to b entered into STU-ACT, we must check to make sure
that it is already present in ACT-COST
<Essence of Normalization>
- Anomlies(이상현상 발생 이유) occurs because ACTIVITY contains facts about 'two different themes(주제)'
- two themes
- the student who participate in each activity
- how much each activity costs
- we must add date about two themes at once and delete data about two themes
- Each relation must have a single theme(테이블은 한 개의 주제만 갖아야한다)
<Classes of Relations>
- Normal forms : classes of relations and the techniques for preventing anomalies
- E.F.Codd : 1NF, 2NF, 3NF
- Boyce-Codd : BCNF, 4NF, 5NF
- No theory guaranteed that any of them would eliminate all anomalies
- R.Fagin : Domain/Key normal form(DK/NF)
<Relationship of the Normal Forms>
1NF < 2NF < 3NF < BCNF < 4NF < 5NF
<First through Fifth Forms>
- 1NF
- Any table of data that meets the definition of a relation
- Definition of a relation
- All cells of the table must have of a single value
- Repeating groups and arrays are not allowed as values
- All entries in any attribute must be of the same kind
- Each column must have a unique name (order of the column is insignificant)
- No two rows in a table may be identical (order of the row is insignificant)
- 2NF
- Definition : if all non-key attributes in a relation are dependent on all of the key a relation is in second normal form
<정규화를 하기 위한 판단 근거>
1. 함수종속성(Functional dependency)
- 한 relation에 있는 2개의 속성 A와 B사이에 다음의 관계가 성립하면 A->B라 한다
1) 한 tuple 상에서 A값에 대해 하나의 상응하는 B의 값이 존재
2) 임의의 두 tuple A가 같으면 tuple의 B값도 반드시 동일
A->B 단 AB가 R의 부분집합 r일 때
r에 속한 모든 tuple들 t1과 t2에서
if t1[A]=t2[A] then
t1[B]=t2[B]이다
ex) Student(S_num, S_name, S_phone, S_dept, S_grade)
S_num -> S_name, S_dept(역은 성립x)
<완전/부분 종속>
- 완전 종속 : Relation의 Key에 의해 종속될 때
- 부분 종속 : Key의 일부분에 의해 종속될 때
ex) 수강(학번, 과목번호, 학과, 성적)에서 학번, 과목번호가 Key값일 때,
F = {(학번, 과목번호) -> 성적, 학번 -> 학과
학번, 과목번호 -> 성적(완전함수종속)
학번 -> 학과(부분함수종속)
학과 -> 학과번호(부분함수종족도 아니고 완전함수종속도 아니다) 왜냐하면, 학과가 Key가 아니기 때문
<Minimal cover>
- FD를 단순화시킨다
1. F중의 FD의 오른쪽은 단순속성
ex) A -> B, C / A->B, A->C
2. F중의 FD의 왼편은 extraneous attribute가 없다
ex) CD->E, if C->E or D->E를 체크
3. F중에는 중복이 없다
ex) A->B, B->C이면 'A->C' 불필요한 중복관계
<Lossless-Join Decomposition(무손실 분해)>
- 만일 table R이 R1과 R2로 분해된 경우 다음 중의 하나를 만족하면 lossless-decomposition된 것이다
1. R1과 R2의 Intersection이 -> R1
2. R1과 R2의 Intersection이 -> R2
- R1과 R2의 Intersection이 R1을 결정한다는 말은 R1과 R2의 Intersection이 key임을 암시한다
ex)
R=(지점명, 자산, 위치, 대부번호, 고객명, 액수)
R1=(지점명, 자산, 위치) 지점명은 R1의 key
R2=(지점명, 대부번호, 고객명, 액수)
지점명은 R2에서 FK가 된다
즉, R1와 R2의 교집합 -> '지점명'으로 R1의 key가 된다
R1, R2로의 분할은 lossless-join decomposition이다
- N-ary decomposition : relation R이 n개의 sub-relation으로 decomposition되었을 때
R -> R1, R2, ..., Rn
Table T를 R에 대해서 구성한다
ex) 주어진 R과 F가 다음과 같을 때
R=(E, S, P, O)
F={E->P, S->O}
R1=(E, S)
R2=(E, P, O)
R3=(S, P, O)
E S P O
R1 Ve Vs null null
R2 Ve null Vp Vo
R3 null Vs Vp Vo
세 개의 행 가운데 하나의 행이 distinguished varable로 구성이 되면 lossless-join decomposition이다
R1의 경우에 Ve, Vs만 distinguished varable
R2의 경우에 Ve, Vp, Vo만 distinguished varable
R3의 경우에 Vs, Vp, Vo만 distinguished varable
E -> P를 결정하면, E값(결정자)이 동일하면 P값(피결정자)도 동일하다
S -> O를 결정하면 S값(결정자)이 동일하면 O값(피결정자)도 동일하다
따라서 3*4열 테이블을 변환하면
E S P O
R1 Ve Vs Vp Vo -> distinguished varable로 구성 => lossess-join decomposition(무손실 분해)
R2 Ve null Vp Vo
R3 null Vs Vp Vo
ex)
R=(A, B, C, D)
F={C->D, A->B, B->C} KEY=A
R1=(C,D), R2=(B,C), R3=(A,B)
A B C D
R1 n n Vc Vd
R2 n Vb Vc n
R3 Va Vb n n
첫 번째 함속관계를 적용 : C->D
두 번째 함수관계를 적용 : A->B
세 번째 함수관계를 적용 : B->C
A B C D
R1 n n Vc Vd
R2 n Vb Vc n->Vd
R3 Va Vb n->Vc n->Vd
1) C->D에 의해 R2의 D값이 치환
2) B->C에 의해 R3의 C값이 치환
3) C->D에 의해 R3의 D값이 치환
함수종속관계의 적용이 더이상 변화를 주지 않을 때까지 반복 적용
'데이터베이스의 응용' 카테고리의 다른 글
데이터베이스 응용 정의 (0) | 2023.08.29 |
---|