어떤 테이블 R에서 X와 Y를 각각 R의 속성 집합의 부분 집합이라 하자.
속성 X의 값 각각에 대해
시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때
Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고
X -> Y로 표기한다.
학번 --> 이름
학번 --> 학년
학번 --> 학과
=> 학번 --> 이름, 학년, 학과
X -> Y의 관계를 갖는 속성 X와 Y에서
X를 결정자(Determinant) / Y를 종속자(Dependent)라고 한다.
Anomaly이란 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고
이 중복으로 인해 테이블 조작 시 문제가 생기는 현상을 의미
이상의 종류
삽입 이상 (Insertion Anomaly)
삭제 이상 (Deletion Anomaly)
갱신 이상 (Update Anomaly)
Join은 2개의 테이블에 대해
연관된 튜플들을 결합하여 새로운 릴레이션을 반환한다.
Join은 크게 Inner & Outer Join 으로 구분된다.
해당 글에서는 Inner Join에 대해서 알아본다.
Innerr Join은 Inner Join이란? 글을 참고하자.
Join 조건에 만족하지 않는 튜플도 결과로 출력하기 위한 방법이다.
Left Outer Join, Right Outer Join, Full Outer Join이 있다.
Inner Join의 결과를 구한 후
우측 릴레이션의 어떤 튜플과도 맞지 않는
좌측 릴레이션에 있는 튜플들에 NULL 값을 붙여 Inner Join 결과에 추가한다.
SELECT [테이블명1.]속성명, [테이블명2.]속성명
FROM 테이블명1 Left Outer Join 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;
SELECT [테이블명1.]속성명, [테이블명2.]속성명
FROM 테이블명1, 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명(+);
Join은 2개의 테이블에 대해
연관된 튜플들을 결합하여 새로운 릴레이션을 반환한다.
Join은 크게 Inner & Outer Join 으로 구분된다.
해당 글에서는 Inner Join에 대해서 알아본다.
Outer Join은 Outer Join이란? 글을 참고하자.
Problem URL : 2048
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int map[20][25];
int n,ans;
void s(int idx, int (*m)[25]){
int tm[20][25];
memset(tm, -1, sizeof(tm));
if( idx == n+1 ){
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
ans = ans < m[i][j] ? m[i][j] : ans;
}
}
return ;
}
}
int main(){
memset(map, -1, sizeof(map));
cin >> n;
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
scanf("%d",&map[i][j]);
}
}
s(0,map);
return 0;
}
int (*m)[20]
이 아니라 int (*m)[25]
이다.