개발/대덕인재개발원

대덕 241004 - 자바:컬렉션 / DB:트리거

월은 2024. 10. 4. 17:42

<자바> 

컬렉션 프레임워크

일반적으로 배열과 비슷한 구조를 가지지만, Map은 조금 다르다

우리가 자바로 프로그래밍하면서 데이터를 많이 다루게 되면, 변수 하나에 데이터를 저장하는 것으로는 부족하다.

그동안은 배열을 써왔지만, 배열의 단점은 크기를 한번 정하면 조정을 못한다는 것이다. 

예를 들어 배열의 크기를 10으로 정하였다가 도중에 바꾸고 싶다면 프로그램을 다시 수정하여 새로운 배열을 만들어 옮기는 불편한 조정의 과정이 불가피하다는 것이다. 이러한 배열의 단점을 보완한 list컬렉션,set컬렉션,map컬렉션 등을 사용하면 많은 데이터를 편리하게 관리할 수 있다. 즉 배열이 가진 불편함을 해결하기 위해 제공되는 것이 컬렉션 프레임워크이다.

 

List 컬렉션 

Collection들은 객체만 저장 가능하다.

 

- 객체를 인덱스로 관리

- 객체 자체를 저장하는 것이아닌 객체 번지 참조

List<String> list = ...;
list.add("홍길동");        // 맨 끝에 객체 추가
list.add(1, "신용권");    // 지정된 인덱스에 객체 삽입
String str = list.get(1); // 인덱스로 객체 검색
list.remove(0);           // 인덱스로 객체 삭제
list.remove("신용권");    // 객체 삭제

 

ArrayList 

가장 많이 쓰는 리스트.

ArrayList 객체 생성

List<String> list = new ArrayList<String>();
List<String> list = new ArrayList<>();

- ArrayList에 객체를 추가하면 1번부터 차례로 저장

 

Vector

- 저장할 객체 타입을 타입 파라미터를 표기하고 기본 생성자 호출하여 생성

 

LinkedList

추가, 삭제 빈번시 활용하면 좋을

- ArrayList와 사용 방법은 같으나 내부 구조가 다르다. 서로 배열이 아닌 노드로 연결되어있으며 서로를 가리키며 참조한다. 이 리스트의 장점은  중간에 데이터 하나가 사라져도 배열처럼 전부 위치가 수정되는 것이 아니라 중간에 링크 위치만 수정되면 되므로 나머지 링크는 변경되지 않는다

 

Set 컬렉션

List컬렉션에서 배열 관련 명령이 빠진것과 유사

List가 책꽂이라고 하면, Set은 주머니이다. 주머니에서 데이터를 꺼낸다고 하면, 저장 순서가 유지되지 않으며(=인덱스가 없으며) 중복되 데이터가 저장되지 않고, 하나의 null값만 저장 가능하다.

 

HashSet

- Set 인터페이스의 구현 클래스

이러한 컬렉션은 제네릭 타입으로 만들지 않으면 오브젝트 타입으로 만들어지므로 불러올떄마다 형변환을 해야해서 불편하므로

제네릭 타입으로 사용해야 한다

 

 

Map컬렉션 

 

 

- 키와 값으로 구성된 Map.Entry객체 저장하는 구조 가짐

- 키는 중복 저장될 수 없으나 값은 중복 저장할 수 있음

- 기존 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대체된다

Map 인터페이스 메소드

 

<DB> 

트리거 의사레코드

1.트리거 의사레코드(PSEUDO RECORD) - 행단위 트리거에서만 사용 
-----------------------------------------
  의사레코드       의미
-----------------------------------------
   :NEW         INSERT, UPDATE 에 사용되면 데이터가 삽입(갱신)될때
                새로 들어오는 자료를 지칭함
                DELETE 에 사용되면 모든 컬럼이 NULL이 됨
   :OLD             INSERT, UPDATE 에 사용되면 데이터가 삽입(갱신)될때
                이미 존재하고 있던 자료를 지칭함
                INSEERT 에 사용되면 모든 컬럼이 NULL이 됨                    
------------------------------------------

2.트리거 함수
 - 이벤트(insert,update,delete)의 종류를 판별하기 위한 함수 
------------------------------------------
   함수           내용
------------------------------------------
  INSERTING     이벤트가 INSERT이면 참(true)을 반환
  UPDATING      이벤트가 UPDATE이면 참(true)을 반환
  DELETING      이벤트가 DELETE이면 참(true)을 반환

SQL 끝? 

 

데이터베이스 설계 

목차)

- 데이터베이스 설계 단계

- 요구 사항 분석

- 개념적 설계

- 논리적 설계

- 물리적 설계와 구현

 

객체 지향 프로그래밍의 선구자들이 3명 있었는데 산에 올라가는 방식이 다 다르듯 목적은 같았지만 방법론이 제각각이었는데,

때문에 합쳐서 만든 것이 UML(Unified Modified Language)이다. 이것은 여러가지 시스템의 정적,동적,인터랙티브한 상황들을

다이어그램화 하는 것이다. 정적이란 시스템의 단면도를 그린 것이며, 동적이란 시퀀스 다이어그램과 같은 형태 등등..

이 중 우리가 먼저 배울 유스케이스 다이어그램은 정적과 동적 중간쯤에 위치해 있으며, 시스템의 기능을 설명해주는

테스트케이스로 사용되는 것이다. 유스케이스 자체가 하나의 기능이다.  이것을 그렸을 때 잘 그려지면 시스템이 제 기능을 하는 것으로 받아들여지기도 한다.

 

요구 사항 분석에서는 엔터티(커서 테이블이 될 놈),관계(커서 컬럼이 될 놈),속성(커서 인스턴스가 될 놈)을 추출해야 하는데 이 과정이 어렵다..(추출=>개념ERD)(개념 ERD => 논리 ERD)

 

논리 정규화 과정)

데이터베이스 설계 구축에는 정규화가 필요한데 5정규화까지 있지만 보통은 3정규화 이상은 현실에서

일어날 일이 많지 않기 때문에 3정규화까지만 하는 편이다

(4정규:다가 속성 해결, 5정규화: 조인 종속을 없앰,보이스코드 정규:3정규화의 특별한 형태).

 

물리적 설계 단계)

-튜닝을 하는 사람들에게는 주된 업무이다

- 초심자들은 건너뛰는 경우도 많음