개념 : Constraint란 데이터 무결성 유지를 위하여 사용자가 지정할 수 있는 성질이다. 모든 Constraint은 데이터 사전에 저장된다. 의미있는 이름을 부여했다면 Constraint을 참조하기 쉽게 된다. Constraint의 이름은 표준 객체 명명법을 따르는게 좋다. Constraint의 이름은 한 사용자 내에서 중복될 수 없다. Constraint의 이름을 생략했다면 ORACLE은 SYS_Cn형식의 이름을 만든다. 정의 방법 : 컬럼 [CONSTRAINT 제약조건 이름] 제한조건 유형, 컬럼,... [CONSTRAINT 제약조건 이름] 제한조건 유형(컬럼1, 컬럼2...) 종류 : NOT NULL : 컬럼이 널값을 가질 수 없음 NOT NULL 제약 조건은 NULL 값을 칼럼에 사용할 수 없게 한다. NOT NULL 제약 조건이 없는 칼럼은 NULL 값을 가질 수 있다. NOT NULL 제약 조건은 칼럼 레벨로만 정의할 수 있다. UNIQUE : 컬럼이나 컬럼의 조합이 테이블의 모든 행에서 고유한 값을 가져야 함 UNIQUE 제약조건은 칼럼이나 컬럼의 조합을 고유 키로 지정한다. 테이블에는 이 키에 대한 같은 값을 갖느느 행이 하나 밖에 없다. UNIQUE 키는 한 칼럼에 대한 것이라면 NULL 값을 쓸 수 있다. 칼럼 레벨이나 테이블 레벨에서 모두 정의할 수 있다. UNIQUE 칼럼에 대해 UNIQUE 인덱스가 자동으로 생성된다. PRIMARY KEY : 컬럼이나 컬럼의 조합이 테이블의 각 행을 유일하게 구별시켜 줌 테이블에 단 하나의 Primary key만 허용한다. 여러 칼럼일지도 NULL값을 허용하지 않는다. 테이블이나 칼럼 레벨에서 정의할 수 있다. UNIQUE 인덱스를 자동으로 생성한다. FOREIGN KEY : 컬럼이나 컬럼의 조합이 다른 테이블의 컬럼이나 컬럼의 조함을 참조함 foreign key는 자식(child) 테이블에 정의한다. 부모 테이블의 값과 일치하거나 NULL이어야...
Collection: 가장 상위 인터페이스이다. Set : 중복을 허용하지 않는 집합을 처리하기 위한 인터페이스이다. SortedSet : 오름차순을 갖는 Set 인터페이스이다. List : 순서가 있는 집합을 처리하기 위한 인터페이스이기 때문에 인덱스가 있어 위치를 지정하여 값을 찾을 수 있다. 중복을 허용하며, List 인터페이스를 상속받는 클래스 중에 가장 많이 사용하는 것으로 Vector가 있다. Queue : 여러 개의 객체를 처리하기 전에 담아서 처리할 때 사용하기 위한 인터페이스이다. 기본적으로 FIFO를 따른다. Map : Map은 키와 값의 쌍으로 구성된 객체의 집합을 처리하기 위한 인터페이스이다. 이 객체는 중복되는 키를 허용하지 않는다. SortedMap : 키를 오름차순으로 정렬하는 Map 인터페이스이다. Set HashSet : 데이터를 해쉬 테이블에 담는 클래스로 순서 없이 저장된다. TreeSet : red-black이라는 트리에 데이터를 담는다. 값에 따라서 순서가 정해진다. HashSet보다 성능상 느리다. 데이터를 담으면서 동시에 정렬할 때 유용하다. LinkedHashSet : 해쉬 테이블에 데이터를 담는데, 저장된 순서에 따라서 순서가 결정된다. List Vector : 크기를 객체 생성시 지정할 필요가 없는 배열 클래스이다. ArrayList : Vector와 비슷하지만, 동기화 처리가 되어 있지 않다. LinkedList : ArrayList와 동일 하지만, Queue 인터페이스를 구현했기 때문에 FIFO큐 작업을 수행한다. Map Hashtable : 데이터를 해쉬 테이블에 담는 클래스이다. 내부에서 관리하는 해쉬 테이블 객체가 동기화되어 있으므로, 동기화가 필요한 부분에서는 이 클래스를 사용하기 바란다. TreeMap : red-black 트리에 데이터를 담는다. TreeSet과 다른 점은 키에 의해서 순서가 정해진다는 것이다. LinkedHashMap : HashMap과 거의 동일하며 이중 연결 리스트라는 방식을 사...
액티비티
사용자 인터페이스를 작성할 때는 액티비티라는 구성요소를 활용한다. 데스크탑 애플리케이션에서 윈도우 또는 대화상자라고 부르는 요소와 비슷하다고 볼 수 있다.
컨텐트 프로바이더
컨텐트 프로바이더는 기기에 들어 있는 각종 데이터에 대한 추상적인 인터페이스를 제공하며, 여러 애플리케이션이 사용할 수 있다. 안드로이드 개발 모델은 애플리케이션이 사용하는 데이터를 해당 애플리케이션뿐만 아니라 다른 애플리케이션에서도 사용할 수 있도록 열어주는 편이 좋다고 권장한다. 컨텐트 프로바이더를 구성하면 데이터에 대한 통제권은 충분히 확보한 상태에서 이와 같이 개발 중인 애플리케이션뿐만 아니라 다른 애플리케이션에서도 접근 가능하도록 기능을 제공할 수 있다.
인텐트
인텐트는 기기 내부를 쭉 훑으면서 특정 이벤트가 발생했다는 사실을 각 애플리케이션에 알려주는 시스템 메시지다. 예를 들어 하드웨어 상태가 변경되거나, 외부에서 데이터를 수신하거나, 특정 애플리케이션에서 발생하는 이벤트를 모두 포함한다. 각 애플리케이션은 인텐트에 대응할 수 있을 뿐만 아니라, 인텐트를 생성해 다른 액티비티를 싱핼하거나, 아니면 특정 조건에 대한하는 상황인지를 확인할 수도 있다.
서비스
액티비티나 컨텐트 프로바이더, 인텐트 리시버 등은 모두 필요한 시간 동안만 동작하는 구성 요소이고, 언제고 종료도리 가능성이 있다. 이와 반대로 서비스는 필요한 경우 종료되지 않고 특정 액티비티와 관계없이 항상 동작하도록 만들어진 구성 요소다. RSS 피드에 업데이트된 내용이 있는지 확인하는 서비스도 만들어 낼 수 있겠고, MP3 음악을 선택하는 액티비티가 종료돼도 백그라운드에서 계속해서 음악을 틀어주는 기능도 서비스에 해당된다.
댓글
댓글 쓰기