반응형

이번 포스팅은 Vue.js에서 뷰 인스턴스에 대하여 알아보도록 하겠습니다.

 

#1. 뷰 인스턴스의 정의와 속성


뷰 인스턴스(Instance)는 뷰로 화면을 개발하기 위해 필수적으로 생성해야 하는 기본 단위입니다. 인스턴스는 뷰로 화면을 개발하기 위해 빠트릴 수 없는 필수 조건입니다.

뷰 인스턴스 생성

뷰 인스턴스를 사용하기 위해 아래쪽과 같은 형식으로 뷰 인스턴스를 생성합니다. 

new Vue ( {
    .....
} );

그럼 'Hello Vue.js' 샘플 코드에서 인스턴스와 관계된 부분을 다시 한번 살펴보도록 하겠습니다.

<html>
  <head>
    <title>Vue Sample</title>
  </head>
  <body>
    <div id="app">
      {{ message }}    
    </div>
    <scipt src="https://cdn.jsdeliver.net/npm/vue@2.5.2/dist/vue.js"></script>
    <script>
      new Vue ( {
        el : '#app',
        data : {
          message : 'Hello Vue.js'
        }
      } );
    </script>
  </body>
</html>

먼저 'Hello Vue.js' 텍스트를 화면에 표시하기 위해 new Vue()로 뷰 인스턴스를 생성하였습니다. 그리고 인스턴스 안에 el 속성으로 뷰 인스턴스가 그려질 지점을 지정하고, data 속성에 message값을 정의하여 화면의 {{ message }}에 연결하였습니다. 그럼 각 요소에 대해 자세히 알아보도록 하겠습니다.

뷰 인스턴스 생성자

new Vue()로 인스턴스를 생성할 때 Vue를 생성자라고 합니다. Vue 생성자는 뷰 라이브러리를 로딩하고 나면 접근할 수 있습니다. 생성자를 사용하는 이유는 뷰로 개발할 때 필요한 기능들을 생성자에 미리 정의해 놓고 사용자가 그 기능을 재정의하여 편리하게 사용하도록 하기 위해서입니다.

※ 생성자 : 생성자는 객체를 새로 생성할 때 자주 사용하는 옵션과 기능들을 미리 특정 객체에 저장해 놓고, 새로 객체를 생성할 때 기존에 포함된 기능과 기존 기능을 쉽게 확장하여 사용하는 기법입니다. 일반적으로 객체 지향 프로그래밍에서 사용하는 객체 정의 방식으로 미리 정의된 속성과 메서드를 재활용하기 위해 사용합니다.

 

#2. 뷰 인스턴스 옵션 속성


뷰 인스턴스 옵션 속성은 인스턴스를 생성할 때 재정의할 data, el, template 등의 속성을 의미합니다. 예를 들어 Hello Vue.js! 예제에서는 data라는 미리 정의되어 있는 속성을 사용하였습니다. 우리는 그 안에 message라는 새로운 속성을 추가하고 Hello Vue.js! 값을  주었을 뿐입니다. el속성 역시 미리 정의되어 있으며 뷰로 만든 화면이 그려지는 시작점을 의미합니다. 뷰 인스턴스로 화면을 렌더링할 때 화면이 그려질 위치의 Dom 요소를 지정해 주어야 합니다.

여기서 #app값은 화면의 Dom요소 중 app 이라는 id를 가진 요소를 의미합니다. 여기서 사용한 # 선택자는 CSS 선택자 규칙과 같습니다

※ CSS 선택자 중 # 선택자는 해당 id를 가진 Dom 요소를 검색할 때 사용합니다. 그리고 .선택자는 해당 클래스를 가진 Dom 요소를 검색할 때 사용합니다.

이 외 에도 template, methods, created 등 미리 정의되어 있는 속성을 사용할 수 있습니다.

속 성 설 명
template 화면에 표시할 HTML, CSS 등의 마크업 요소를 정의하는 속성. 뷰의 데이터 및 기타 속성들로 함께 화면에 그릴 수 있음
methods 화면 로직 제어와 관련된 메서드를 정의하는 속성. 마우스 클릭 이벤트 처리와 같이 화면의 전반적인 이벤트와 화면 동작과 관련된 로직을 추가할 수 있음
created 뷰 인스턴스가 생성되자마자 실행할 로직을 정의할 수 있는 속성. 

 

#3. 뷰 인스턴스의 유효 범위


인스턴스의 유효 범위

뷰 인스턴스를 생성하면 HTML의 특정 범위 안에서만 옵션 속성들이 적용되어 나타납니다. 이를 인스턴스의 유효 범위라고 합니다. 인스턴스의 유효 범위는 el 속성과 밀접한 관계가 있습니다.

인스턴스의 유효 범위를 이해하려면 인스턴스가 생성된 후 화면에 어떻게 적용되는지 알아야 합니다. new Vue()로 인스턴스를 생성하고 나서 화면에 인스턴스 옵션 속성을 적용하는 과정은 다음과 같습니다.

인스턴스가 화면에 적용되는 과정

이 과정을 이해하기 위해서 Hello Vue.js 샘플 코드의 인스턴스 정의 부분(노란색 음영 부분)을 자세히 살펴보겠습니다.

      new Vue ( {
        el : '#app',
        data : {
          message : 'Hello Vue.js'
        }
      } );

먼저 자바스크립트 코드 상에서 인스턴스 옵션 속성 el과 data를 인스턴스에 정의하고 new Vue()로 인스턴스를 생성합니다. 그리고 브라우저에서 위 샘플 코드를 실행하면 아래와 같이 el속성에 지정된 화면 요소(Dom)에 인스턴스가 부착됩니다.

el속성에 인스턴스가 부착되고 나면 인스턴스에 정의한 옵션 개체의 내용(data 속성)이 el속성에 지정한 화면 요소와 그 이하 레벨의 화면 요소에 적용되어 값이 치환됩니다.

data 속성의 message 값 Hello Vue.js가 {{ message }}와 치환됩니다.

<div id="app">
      Hello, Vue.js!   
    </div>

인스턴스의 유효 범위 확인

그런데 만약 인스턴스의 유효 범위를 벗어나면 어떻게 될까요? 앞에서 살펴본 코드를 살짝 변경해 보겠습니다.

<div id="app">

</div>
{{ message }}

브라우저에 "{{ message }}" 라는 텍스트가 보이게 됩니다.

message 속성의 값이 Hello Vue.js!로 바뀌지 않고 그대로 출력되는 이유는 인스턴스의 유효 범위 때문입니다.

현재 코드에서 인스턴스의 유효 범위는 el속성으로 지정한 <div id="app"> 태그 아래에 오는 요소들로 제한됩니다. 따라서 <div> 태그 바깥에 있는 {{ message }}는 뷰에서 인식하지 못 하기 때문에 Hello Vue.js!로 바뀌지 않고 {{ message }} 그대로 출력이 됩니다.

 

Reference

1.장기효 [예제로 이해하고 실전 프로젝트로 완성한다! Vue.js 입문]

반응형
반응형

#1. 데이터 모델의 중요성 및 유의점

1) 중복(Duplication) : 같은 시간, 같은 데이터 제공

2) 비유연성(Inflexibility) 

    - 사소한 업무 변화에 데이터 모델이 수시로 변경이 되면 안됨. (유지보수의 어려움이 있음)

    - 데이터 정의를 사용 데이터 사용 프로세스와 분리

3) 비일관성(Insonsistency) : 데이터 간 상호 연관 관계에 대해 명확히 정의  

 

#2. 데이터 모델링

1) 개념적 데이터 모델링 : 추상화 수준이 높고 업무 중심적이고 포괄적인 수준의 모델링 진행, 전사적 데이터 모델링, EA 수립시 많이 사용

2) 논리적 데이터 모델링 : 시스템으로 구축하고자 하는 업무에 대해 Key, 속성, 관계 등을 정확하게 표현, 재 사용성이 높음

3) 물리적 데이터 모델링 : 실제로 데이터베시으에 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려하여 설계

 

#3. 데이터 스키마 구조 3단계

1) 외부 스키마 (External Scheme) : 개개 사용자가 보는 개인적인 DB 스키마

2) 개념 스키마 (Concept Scheme) : 모든 사용자 관점을 통합적 전체 DB

3) 내부 스키마 (Internal Scheme) : 물리적 장치에서 데이터가 실제적 저장

 

#4. ERD (Entity-Relationship Design) 작성 순서

1) 엔티티를 그린다.

2) 엔티티를 적절하게 배치한다.

3) 엔티티간 관계를 설정한다.

4) 관계명을 기술한다.

5) 관계의 참여도를 기술한다.

6) 관계의 필수여부를 기술한다.

 

#5. 엔티티(업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것) 의 특징

1) 반드시 해당 업무에서 필요하고 관리하고 하는 정보이어야 한다. (예) 환자, 토익의 응시횟수 등

2) 유일한 식별자에 의해 식별이 가능해야 한다.

3) 영속적으로 존재하는 인스턴스의 집합이어야 한다. (두 개이상의 인스턴스 집합)

4) 엔티티는 업무 프로세스에 의해 이용되어야 한다.

5) 엔티티는 반드시 속성이 있어야 한다.

6) 엔티티는 다른 엔티티와 최소 한 개 이상의 관계가 있어야 한다. (통계성/코드성 엔티티는 관계 생략 가능)

 

#6. 발생 시점에 따른 엔티티 분류

1) 기본 엔티티(Key 엔티티) : 그 업무에 원래 존재하는 정보, 타 엔티티의 부모 역할, 자신의 고유한 주식별자를 가짐 ex) 사원, 부서

2) 중심 엔티티 : 기본 엔티티로부터 발생, 다른 엔티티와의 관계로 많은 행위 엔티티 생성 ex) 계약, 사고, 주문

3) 행위 엔티티 : 2개 이상의부모 엔티티로부터 발생, 자주 바뀌거나 양이 증가 ex) 주문목록, 사원변경이력

 

#7. 엔티티의 이름을 부여하는 방법

1) 현업 업무에서 사용하는 용어 사용 (약어 사용 금지)

2) 단수 명사 사용

3) 고유한 이름 사용

4) 생성 의미대로 부여

 

#8. 엔티티, 인스턴스 속성, 속성 값의 관계

1) 한 개의 엔티티는 두 개 이상의 인스턴스의 집합이어야 한다.

2) 한 개의 엔티니는 두 개 이상의 속성을 갖는다.

3) 한 개의 속성은 한 개의 속성값을 가진다.

 

#9. 속성(Attribute)

1)  업무에서 필요로 하는 인스턴스로 관리하고자 하는 의미상 분리되지 않는 최소의 데이터 단위

2) 엔티티에 대한 자세하고 구체적인 정보를 나타낸다.

3) 분류

   - 기본 속성(Basic Attribute) : 업무로부터 추출한 모든 일반적인 속성 (원래 가지고 있어야 하는 속성) ex) 원금, 이자율, 예치기간

   - 설계 속성(Designed Attribute) : 업무를 규칙화하기 위해 새로 만들거나 변형, 정의하는 속성 ex) 일련번호, 예금 분류

   - 파생 속성(Derived Attribute) : 다른 속성에 영향을 받아 발생하는 속성, 빠른 성능을 낼 수 있도록 원래 속성의 값을 계산, 적을 수록 좋음 ex) 합, 이자

 

#9.1 속성의 명칭 부여

1) 해당 업무에서 사용하는 이름을 부여한다.

2) 서술식 속성명은 사용하지 않는다.

3) 약어 사용은 가급적 제한한다.

4) 전체 데이터 모델에서 유일성 확보하는 것이 좋다. ex) 직원이름, 고객이름

 

#10. 도메인(Domain)

1) 각 속성은 가질 수 있는 값의 범위가 있는데 이를 그 속성의 도메인이라 함

2) 엔티티 내에서 속성에 대한 데이터 타입과 크기 그리고 제약사항을 지정하는 것

 

#11. 관계

1) 엔티티의 인스턴 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태, 관계 페어링의 집합

2) 표기법

  - 관계명 : 관계의 이름

  - 관계 차수 : 1:1, 1:M, M:N

  - 관계 선택성(관계 선택사항) : 필수관계, 선택관계

3) 체크 사항

   - 2개의 엔티티 사이에 관심있는 연관 규칙이 있는가?

   - 2개의 엔티티 사이에 정보의 조합 발생 한가?

   - 업무기술서, 장표에 관계 연결에 대한 규칙 서술이 가능한가?

   - 업무기술서, 장표에 관계 연결을 가능케 하는 동사가 있는가?   

 

반응형

'Development > DB' 카테고리의 다른 글

[DB] SQL의 기본과 활용 - 2  (0) 2022.09.02
[DB] SQL의 기본과 활용 - 1  (0) 2022.08.31
[DB] Oracle Listener  (0) 2020.04.08
[DB] DB Sequence 생성과 삭제  (0) 2020.04.08
[DB] ROWNUM과 ROWID  (0) 2020.04.08
반응형

#16. GROUP BY, HAVING 절의 특징

1) GROUP BY 절을 통해 소그룹별 기준을 정한 후 SELECT 절에 집계 함수를 사용한다.

2) 집계 함수의 통계 정보는 NULL값을 가진 행을 제외하고 수행한다.

3) GROUP BY 절에서는 ALIAS 사용 불가

4) 집계 함수는 WHERE 절에 올 수 없다.

5) HAVING 절에는 집계 함수를 이용하여 조건 표시 가능

6) HAVING 절은 일반적으로 GROUP BY 뒤에 위치

 

#16-1. ORDER BY

1) Oracle에서는 NULL을 가장 큰 값으로 취급

2) SQL Server에서는 NULL을 가장 적은 값으로 취급

 

#17. 문장 실행 순서

SELECT ALIAS -> FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY

 

#18. JOIN

1) 정의 : 두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것

 

#19. 집합 연산자

1) 두 개 이상의 테이블에서 JOIN을 사용하지 않고 연관된 데이터를 조회할 때 사용, SELECT 절의 컬럼 수가 동일하고 SELECT 절의 동일 우치에 존재하는 컬럼의 데이터 타입이 상호 호환할 때 사용 가능

2) 일반 집합 연산자

   - UNION : 합집합 (중복 행 1개) 정렬

   - UNION ALL : 합집합 (중복 행도 표시) 정렬 X

   - INTERSECT : 교집합 (중복 행 1개로)

   - MINUS : 차집합 (중복 행 1개로)

   - CROSS JOIN : 곱집합(PRODUCT)

3) 순수 관계 연산자 : 관계형 DB를 새롭게 구현

   - SELECT -> WHERE 절로 구현

   - PROJECT -> SELECT 절로 구현

  - NATRUAL JOIN -> 다양한 JOIN으로 구현

  - DIVIDE -> 사용 X

4) FROM절 JOIN 형태

   - INNER JOIN : JOIN 조건에서 동일한 값이 있는 행만 반환, USING 이나 ON 정을 필수적으로 사용

   - NATURAL JOIN : 두 테이블 간의 동일한 이름을 갖는 모든 컬럼들에 대해 EQUI JOIN 수행, NATURAL JOIN이 명시되면 추가로 USING, ON, WHERE 절에서 JOIN 조건을 정의할 수 없다, SQL Server에서 지원 X

   - USING 조건절 : 같은 이름을 가진 컬럼들 중에서 원하는 컬럼에 대해서만 선택적으로 EQUI JOIN을 할 수 있다, JOIN 컬럼에 대해서 ALIAS나 테이블 이름과 같은 접두사를 붙일 수 없음, SQL Server에서 지원 X

   - ON 조건절 : ON 조건절과 WHERE 조건절을 분리하여 이해가 쉬우며, 컬럼명이 다르더라도 JOIN 조건을 사용할 수 있는 장점이 있다, ALIAS나 테이블명 반드시 사용

   - CROSS JOIN : 카티시안 곱 (양쪽 집합의 M*N건의 데이터 조합이 발생한다.)

   - OUTER JOIN : JOIN 조건에서 동일한 값이 없는 행도 반환 가능, USING이나 ON 조건절 반드시 사용해야 함.

                              SQL 식에서 (+) 안 붙는 쪽으로 JOIN을 한다.

 

반응형

'Development > DB' 카테고리의 다른 글

[DB] 데이터 모델링의 이해  (0) 2022.09.04
[DB] SQL의 기본과 활용 - 1  (0) 2022.08.31
[DB] Oracle Listener  (0) 2020.04.08
[DB] DB Sequence 생성과 삭제  (0) 2020.04.08
[DB] ROWNUM과 ROWID  (0) 2020.04.08
반응형

#1. SQL의 종류

1) DML (Database Manipulation Language) : 데이터를 조작하는 형태의 SQL

   - SELECT, INSERT, UPDATE, DELETE

2) DDL(Database Definition Language) : 데이터를 정의하는 형태의 SQL

   - CREATE, DROP, ALTER, RENAME

3) DCL (Database Control Language) : 데이터를 통제하는 형태의 SQL

   - GRANT, REVOKE

4) TCL (Transaction Control Language) : DML에 의해 처리된 결과를 트랜잭션별로 제어하는 형태의 SQL

  - COMMIT, ROLLACK, SAVEPOINT 

** DDL 명령어의 경우 실행시 AUTO COMMIT 하지만 DML 명령어의 경우 COMMIT을 입력해야 함.

 

#1.1. 테이블 : DB 기본 단위, 데이터를 저장하는 객체

- 가로 = 행 = ROW = 튜플(Tuple) = 인스턴스(Instance)

- 세로 = 열 = 컬럼

 

#2. 절차/비절차 데이터 조작어

- 비절차적 데이터 조작어 (DML) : 사용자가 어떤 데이터만을 원하는지 명확하게 명세함

- 절차적 데이터 조작어(PL/SQL, T-SQL(SQL Server)) : 어떻게 데이터를 접근하는지 명확하게 명세함

 

#3. Oracle 과 SQL Server의 문맥점 차이점

Oracle SQL Server
여러 컬럼을 동시에 수정하는 구문을 지원함 여러 컬럼을 동시에 수정하는 구문을 지원하지 않음
괄호를 사용함 괄호를 사용하지 않음
DDL 문장 수행 후 자동으로 Commit을 수행함 DDL 문장 수행 후 자동으로 Commit을 수행하지 않음
NULL값을 가장 큰 값으로 간주하여 오름차순으로 정렬하였을 경우 가장 마지막에 위치함 NULL 값을 가장 작은 값으로 간주하여 오름차순으로 정렬하였을 경우 가장 위쪽에 위치함
' '이 저장이 되면 NULL로 저장이 됨
이를 찾으려면 IS NULL로 찾아야 함
' '이 저장이 되면 NULL로 저장이 됨.
이를 찾으려면 =' ' 로 찾아야 함

 

 

#4. 제약 조건의 종류

1) PRIMARY KEY (기본키) 의 속성 : UNIQUE,  NOT NULL

2) UNIQUE KEY (고유키)의 속성 : UNIQUE, NULL이 가능함

3) CHECK : 데이터 무결성을 확인하기 위해 특정 컬럼에 설정하는 제약 (입력 값 범위 제한)

4) FOREIGN KEY (외래키)의 속성 

    - 테이블 간의 관계를 정의하기 위해 PK를 다른 테이블의 외래키로 참조하도록 생성

    - NULL이 가능함

    - 한 테이블의 여러 FK가 존재 가능함

    - 참조 무결성 제약을 받을 수 있음 (2개의 관계 변수간의 일관성)

 

#5. 인덱스 생성하기

CREATE 인덱스_이름 ON 테이블명 (인덱스 생성하고 싶은 컬럼명);

 

#6. 테이블명 바꾸기

RENAME 테이블명 TO 변경할 테이블명;

 

#6-1. 테이블 구조 변경

- 추가 : ALTER TABLE PLAYER ADD (ADDRESS VARCHAR2(80));

- 수정 : ALTER TABLE PLAYER MODIFY (ORIG_YYYY VARCHAR(20) DEFAULT '20220901' NOT NULL);

- 삭제 : ALTER TABLE PLAYER DROP COLUMN ADDRESS;

- 제약조건 삭제 : DROP CONSTRAINT 조건명;

- 제약조건 추가 : ADD CONSTRAINT 조건명 조건 (컬럼명);

- 테이블명 변경 : RENAME PLAYER TO PLAYER_NEW_NAME;

- 테이블 삭제 : DROP TABLE PLAYER;

- 테이블 데이터 (전체) 삭제 : TRUNCATE TABLE PLAYER;

- 컬럼명 변경 : RENAME COLUMN TEAM_ID TO T_ID;

 

#7. 참조 동작

1) DELETE

   - Cascade : Master 필드 삭제 시 Child 데이터도 삭제

   - Set Null : Master 필드 삭제 시 Child 필드는 Null 값으로 대체

   - Set Default : Master 필드 삭제 시 Child 필드는 Default 값으로 대체

   - Restrict : Child 필드에 PK가 없는 경우에만 Master 필드 삭제 허용

   - No Action : 참조 무결성을 위반하는 삭제/수정 액션을 취하지 않음

2) INSERT

   - Automatic : Master 필드에 PK가 없는 경우 PK를 생성 후 Child 필드 입력

   - Set Null :  Masetr 데이터블에 PK가 없는 경우 Child 외부 값을 Null로 처리

   - Set Default : Masetr 데이터블에 PK가 없는 경우 Child 외부 값을 Default 값으로 처리

   - Defendent : Master 테이블에 PK가 존재할 경우 Child 필드 입력

   - No Action : 참조 무결성을 위반하는 입력 액션을 취하지 않음

 

#8. TCL

- 트랜잭션 (Transaction) : 밀접히 관련되어 분리될 수 없는 1개 이상의 DB 조작. (논리적 연산 단우)

- COMMIT : 올바르게 반영된 데이터를 DB에 반영

- ROLLBACK : Transaction 시작 이전의 상태로 되돌림. (COMMIT 되지 않은 모든 Transaction을 롤백함)

- SAVEPOINT : 저장 지점

 

#9. 트랜잭션의 특징

1) 원자성 : 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면  전혀 실행되지 않아야 함

2) 일관성 : 트랜잭션 실행 전 DB 내용이 잘못 되지 않으면 실행 후도 잘못 되지 않아야 함.

3) 고립성 : 트랜잭션 실행 도 중 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안 된다.

4) 지속성 : 트랜잭션이 성공적으로 수행되면 DB의 내용은 영구적으로 저장이 된다.

 

#10. 연산자의 종류

1) BETWEEN a AND b : a와 b 값 사이에 있으면 됨

2) IN (List) : List에 있는 값 중 어느 하나라도 일치하면 됨

3) IS NULL : NULL 값인 경우 (Oracle은 VARCHAR2 빈 문자열을 NULL로 판단)

4) NULL 값 과의 수치 연산(+,-,x,%)은 NULL값을 리턴한다.

5) NULL 값 과의 비교 연산은 거짓(FALSE)를 리턴한다.

6) 연산자의 우선 순위 : () -> NOT -> 비교 연산자 -> AND -> OR

7) ROWNUM : 원하는 만큼의 행을 가져올 때 사용 ex) WHERE ROWNUM = 1;

 

#11. 단일행 함수

1) SELECT, WHERE, ORDER BY 절에서 사용 가능

2) 행에 개별적으로 조작

3) 여러 인자가 있어도 결과는 1개만 출력

4) 함수 인자에 상수, 변수, 표현식 사용 가능

5) 함수 중첩 가능

 

#12. 문자형 함수

1) LOWER : 문자열을 소문자로 변환

2) UPPER : 문자열을 대문자로 변환

3) ASCII : 문자의 ASCII 값 변환

4) CHR : ASCII 값에 해당하는 문자 변환

5) CONCAT : 문자열1,2를 연결

6) SUBSTR : 문자열 중 m위치에서 n개의 문자 반환

7) LENGTH : 문자열 길이를 숫자 값으로 반환

 

#13. 숫자형 함수

1) SIGN(숫자) : 숫자가 양수면 1, 음수면 -1, 0이면 0 반환

2) MOD(숫자1, 숫자2) : 숫자1을 숫자2로 나우어 나머지 반환

3) CEIL(숫자) : 크거나 같은 최소 정수 반환

4) FLOOR(숫자) : 작거나 같은 최대 정수 반환

 

#14. NULL 함수

1) NVL(식1, 식2) : 식1의 값이 NULL이면 식2 출력 / 공집합을 바꿔주진 않음

2) NULLIF(식1, 식2) : 식1이 식2와 같으면 NULL을 아니면 식1을 출력

3) COALESCE(식1, 식2) : NULL이 아닌 최초의 표현식, 모두 NULL이면 NULL 반환

 

#15. 다중행 집계 함수

1) 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 함수이다.

2) GROUP BY 절은 행들을 소그룹화 한다.

3) SELECT, HAVING, ORDER BY 절에 사용 가능

   - ALL : DEFAULT 옵션, 생략 가능

   - DISTINCT : 같은 값을 하나의 데이터로 간주 옵션 

4) COUNT (*) : NULL 포함 행의 수

    COUNT(표현식) : NULL 제외 행의 수

    SUM, AVG : NULL 제외 합계, 평균 연산

    STDDEV : 표준 편차

    VARIAN : 분산

 

반응형

'Development > DB' 카테고리의 다른 글

[DB] 데이터 모델링의 이해  (0) 2022.09.04
[DB] SQL의 기본과 활용 - 2  (0) 2022.09.02
[DB] Oracle Listener  (0) 2020.04.08
[DB] DB Sequence 생성과 삭제  (0) 2020.04.08
[DB] ROWNUM과 ROWID  (0) 2020.04.08
반응형

#. NPKI (National Public Key Infrastructure) : 국가 공개키 기반 구조

 

#. CA (Certificate Authority) 

- 인증 기관 

- 5대 인증 기관(코스콤, 한국전자인증, 한국정보인증, 금융결제원, 한국무역정보통신)

 

[출처] 한국전자인증(https://www.crosscert.com/solution/03_1_02.jsp)

 

 

#. RA (Registration Authority) 

- 등록 기관 

- 공인인증서의 접수 및 등록 등의 일을 수행

- 은행, 증권회사, 인증기관(한국전자인증, 한국정보인증)

- 사용자 인증서 관리(등록, 재등록,정보 수정, 정보 삭제, 정보 조회)

- 공인인증서 관리(효력정지, 효력회복, 폐지)

 

#. PKI (Public Key Infrastructure)

 

# OCSP (Online Certificate Status Protocol)

- 온라인 인증서 상태조회 프로토콜

- CRL을 통한 검증 메커니즘

- 사용자의 실수 또는 고의로 폐기된 인증서가 사용되는 것을 방지하기 위해 CA를 통해 발급된 인증서의 유효성(폐기) 여부를 실시간 검증하여 폐지 및 정지된 인증서에 대한 정보를 실시간으로 제공하는 서비스

- 인증서가 유효한지 1분마다 체크

 

[출처] 한국전자인증(https://www.crosscert.com/solution/03_1_05.jsp)

 

 

# CRL (Certificate Revocation List)

- 인증서 폐기목록 리스트

- 인증서가 유효한지 12~48시간 마다 체크

 

# LDAP

- 조직이나 개체 그리고 인터넷이나 기업 내의 인트라넷 등 네트워크 상에 있는 파일이나 장치들과 같은 자원 등의 위치를 찾을 수 있게 해주는 프로토콜

 

#. 인증의 3요소 (암기시 .부.인)

- 무결성, 부인방지, 인증

반응형

'Development > Security' 카테고리의 다른 글

[Security] 대칭키 암복호화  (0) 2019.09.22
[Security] Proguard 사용시 파일 목록과 내용  (0) 2019.09.22
[Security] Base64 정리  (0) 2019.09.09
[Security] 전자서명  (0) 2019.09.05
[Security] 공개키 인증서  (0) 2019.09.04
반응형

이번 포스팅은 Android에서 키보드가 뷰 레이아웃에 영향 주지 않게 하는 방법에 대하여 알아보도록 하겠습니다.

 

화면에서 어떠한 정보를 입력하기 위해 우리는 소프트웨어 키보드가 화면 하단에서 상단으로 업로드가 되며 데이터를 입력할 수 있습니다.

 

이때 키보드가 위로 업로드되면서 기존에 화면에 있던 레이아웃들이 영향을 받게 되는 경우가 있습니다.

 

예를 들어 기존에 화면에 있던 레이아웃이 layout_weight로 구성이 되어 있다면 키보드가 위로 업로드되면서 기존에 화면에 있던 레이아웃들은 정한 layout_weight 값에 따라 화면이 조정이 됩니다.

 

하지만, 키보드가 업로드되면서 기존에 화면에 있던 레이아웃에 영향을 주지 않고 싶을 땐 어떻게 할까요?

 

바로 AndroidMenifest.xml에서 해당 Activity 정보에 windowsoftInputMode 설정을 재정의 해주면 됩니다.

 

 

# adjustNothing




  <activity name = ".InputActivity"
    activity android: windowsoftInputMode = "adjustNothing"
           ......
    />

 

위와 같이 adjustNothing을 설정해주면 '화면에서 어떠한 것도 조정하지 않는다'는 의미로 기존에 화면에 있던 레이아웃을 건들지 않고 키보드만 위로 업로드가 됩니다.

 

참고) 이와 반대로 적용을 하고 싶다면 adjust 속성으로 변경하시면 adjustNothing과 정반대로 작동을 합니다.

 



 주의) adjustNothing 적용 시 키보드가 화면을 가릴 수 있습니다.


          이 점은 적용시 주의해야 합니다.

 

 

# adjustResize




   <activity name = ".InputActivity"
    activity android: windowsoftInputMode = "adjustResize"
           ......
    /> 

 

위와 같이 adjustResize을 설정해주면 '화면에서 키보드가 올라와도 EditText와 UI가 화면에 보이도록 Activity를 resize 한다.'라는 의미입니다.

 

따라서 스크롤이 적용되어 키보드가 가린 부분을 화면을 아래로 밀어 내리면서 사용자가 볼 수 있습니다.

 

반응형

+ Recent posts