public class Main {
public static void check(int[] x, int[] y) {
if(x==y) System.out.print("O");
else System.out.print("N");
}
public static void main(String[] args) {
int a[] = new int[] {1, 2, 3, 4};
int b[] = new int[] {1, 2, 3, 4};
int c[] = new int[] {1, 2, 3};
check(a, b);
check(b, c);
check(a, c);
}
}
🖍 NNN
코드 분석:
Java에서 배열을 비교할 때 참조(reference)를 비교하기 때문이다. 내용을 비교하는 것이 아니라, 두 배열이 같은 메모리 위치를 가리키는지를 확인한다.
1.check(a, b);
:
- 배열
a
와b
는 모두 같은 내용{1, 2, 3, 4}
을 가지고 있지만, 서로 다른 객체.==
연산자는 배열이 같은 메모리 위치를 가리키는지 확인하는데,a
와b
는 각각 다른 배열로 메모리 위치가 다름.- 따라서
if(x==y)
조건은false
가 되고,N
이 출력.
check(b, c);
,check(a, c)
:
- 배열
b
와c
,a
와c
는 각각{1, 2, 3, 4}
와{1, 2, 3}
으로 내용도 다른, 서로 다른 객체.==
연산자는 참조를 비교하므로, 두 배열은 다른 메로리 위치에 있기에 조건이 false가 되고,
N`이 출력.
==
연산자
==
연산자는 객체의 참조를 비교한다.
배열의 내용이 같은지 확인하려면Arrays.equals()
메서드를 사용해야 한다.
( )는/은 시스템의 성능을 향상시키고 개발 및 운영의 편의성 등을 높이기 위해 정규화된 데이터 모델을 의도적으로 통합, 중복, 분할하여 정규화 원칙을 위배하는 행위를 말한다.
🖍 반졍규화
[테이블]
사원 [사원번호(PK), 이름, 나이, 부서]
부서 [사원번호(PK), 이름, 주소, 나이]
① 신입사원이 들어와서 부서 테이블에 추가
INSERT INTO 부서 (사원번호, 이름, 주소, 나이) ( ① ) (240728, 'Kim', '서울', 20);
② 부서에서 신입사원을 검색한 후 사원 테이블에 추가
INSERT INTO 사원 (사원번호, 이름, 나이, 부서)
( ② ) 사원번호, 이름, 나이, '개발' FROM 부서 WHERE 이름 = 'Kim';
③ 퇴사한 사원 삭제
DELETE ( ③ ) 부서 where 사원번호 = 240728;
④ 사원의 퇴사로 인해 부서에 해당하는 값을 '퇴사'로 변경
UPDATE 사원 ( ④ ) 부서 = '퇴사' WHERE 사원번호 = 240728;
🖍 ①VALUES, ②SELECT, ③FROM , ④SET
Table 생성
CREATE TABLE 사원 ( 사원번호 NUMBER NOT NULL, 이름 VARCHAR2(10) NOT NULL, 나이 NUMBER NULL, 부서 VARCHAR2(10) NULL, PRIMARY KEY (사원번호) ); CREATE TABLE 부서 ( 사원번호 NUMBER NOT NULL, 이름 VARCHAR2(10) NOT NULL, 주소 VARCHAR2(10) NULL, 나이 NUMBER NULL, PRIMARY KEY (사원번호) );
다음 테이블에서 카디널리티(Cardinality)와 디그리(Degree)를 구하시오.
학번 | 이름 | 성적 | 지도교수 |
---|---|---|---|
1001 | Kim | 89 | P1 |
1002 | Lim | 92 | P1 |
3001 | Park | 76 | P2 |
3002 | Kang | 88 | P3 |
3005 | Kim | 91 | P2 |
🖍 카디널리티: 5, 디그리: 4
- 튜플의 수를 Cardinality(카디널리티)라고 하며, 튜플(Tuple)은 릴레이션을 구성하는 각각의 행을 말함.
- 속성의 수를 Degree(디그리)라고 하며, 속성(Attribute)은 데이터 항목 또는 데이터 필드를 말함.
🖍 IPsec