전체 글
-
Class Diagram (클래스 다이어그램) - BasicSoftware/UML 2018. 7. 31. 00:32
Class Diagram은 UML의 구조 다이어그램으로서 클래스 내부 구성 요소 및 클래스 간의 관계를 도식화하여 시스템의 특정 모듈이나 일부 또는 전체 구조를 나타낸다. 1. 목적 개념 기술 Class Diagram을 통해 문제 도메인의 구조를 나타낼 수 있다. 이 때의 Diagram은 실제 사물 (Object) 혹은 개념 (추상적 개념 포함) 을 나타낸다. 그렇기에 이렇게 만들어진 Diagram은 실제로 구현될 소스코드와는 다를 수 있으며 그 의미나 해석도 경우에 따라 달라 질 수 있다. 설계(명세) / 구현 실제 소프트웨어의 설계 혹은 구현을 위한 용도로 사용된다. Class Diagram은 앞으로 구현 할 혹은 구현된 실제 클래스를 의미하므로 소스코드와의 관계가 매우 깊으며 Class Diagra..
-
Use Case DiagramSoftware/UML 2018. 7. 10. 01:05
Actor (행위자) Actor란 시스템 외부에서 시스템과 상호작용하는 개체를 일컫는다. 이 시스템을 사용하는 사용자가 될 수도 있고 시스템과 상호작용하는 기계 혹은 소프트웨어가 될 수도 있다. Actor를 표시하는 형태로는 보통 Stick Man과 Decoration View이 있다. Decoration View는 사각형 틀안에 오른쪽 상단 아이콘이 포함된다. Use Case (쓰임새) Use Case는 시스템의 행위(behavior)를 정의하기 위해 사용하는 요소이다. 일반적으로 Actor와 상호작용하는 행동 혹은 행위로서 사용된다. Use Case는 Texture, Iconic 그리고 Decoration View 형태로 표현할 수 있다. Association / Directed Association..
-
[SQLite] 동적 자료형 (Dynamic Datatype)Software/SQLite 2018. 5. 20. 20:42
보통 대부분의 테이블 컬럼은 특정 자료형만 저장할 수 있는 정적 자료형(Static datatype)을 사용한다. 즉 Integer 타입으로 선언된 컬럼은 Integer 값만 저장할 수 있고 Float 타입의 값은 저장할 수 없다는 것이다. 그러나 SQLite3에서는 일반적인 다른 DBMS와는 달리 동적 자료형(Dynamic datatype)을 지원하고 있다. SQLite3에서는 테이블을 생성할 때 이전에 했던 것 같이 컬럼의 자료형을 명시하지 않아도 된다. sqlite> CREATE TABLE tblDynamic (id, value); sqlite> INSERT INTO tblDynamic VALUES (1, 'Test'); sqlite> INSERT INTO tblDynamic VALUES ('ind..
-
[SQLite] 락 매커니즘 & 트랜잭션Software/SQLite 2018. 5. 12. 23:11
SQLite3는 기본적으로 다수의 프로세스가 하나의 데이터베이스 파일을 읽고 쓸수 있다. 그런데 만약 다수의 프로세스가 동시에 동일 데이터 베이스 파일에 접속해서 읽거나 쓰게 되면 데이터베이스 무결성이 깨지게 되는 문제가 발생하게 된다. 이러한 문제가 발생하는 것을 막기 위해 데이터베이스를 읽거나 쓰기 위해서는 해당 프로세스가 적절한 잠금(LOCK)권한을 획득하도록 하고 있다. 아래는 프로세스 관점에서 바라 본 데이터베이스 파일의 잠금 상태(Locking states)들이다. 잠금 상태내용 UNLOCKED프로세스가 파일을 열기(Open)만 한 상태이며 읽기/쓰기는 하지 않은 상태 : 다른 프로세스에서 읽기/쓰기 가능 SHARED프로세스에서 파일을 읽고 있는 상태 : 다른 프로세스에서 동시 읽기 가능. 그..
-
[SQLite] 트랜잭션 (TRANSACTION)Software/SQLite 2018. 5. 9. 23:45
데이터베이스에서 트랜잭션 (Transaction)은 SQL 작업의 무결성 (Integrity)을 유지하기 위한 매우 중요한 개념이다. 즉 우리가 현실 세계에서 이루어지는 "거래" 시스템과 마찬가지로 특정 작업이 모두 수행되거나 모두 수행되지 않게 함으로써 그 무결성을 유지하는 것이다. (돈은 냈지만 물건을 받지 않았다면 거래는 성립되지 않는다. 그 반대도 마찬가지이며 거래 당사자들의 이해 조건이 모두 충족된 경우에만 거래가 성립한다.) 트랜잭션 구문 트랜잭션 구문의 시작은 BEGIN 키워드로 시작한다. BEGIN 이후 실행하고자 하는 SQL 구문들을 추가하면 되며 마지막으로 COMMIT 명령어를 통해 트랜잭션이 시작된 이후 수행된 모든 SQL 연상이 데이터베이스 파일(물리적)에 추가된다. 즉 BEGIN ..
-
[SQLite] 트리거 (TRIGGER)Software/SQLite 2018. 4. 16. 00:40
1. 트리거 생성 : 특정 테이블이나 뷰에 INSERT, DELETE, UPDATE와 같은 데이터 변경/조작 같은 동작이 일어 났을 때 미리 지정해둔 동작이 수행되도록 하는 것을 말한다. 사용 방법은 아래와 같다. CREATE TRIGGER [트리거 명] [동작 시점] [SQL 연산] ON [테이블 명] BEGIN [수행 할 SQL 문] END; 먼저 CREATE TRIGGER 키워드 이후 생성하고자 하는 트리거 이름을 지정하게 되는 데 이 트리거 이름은 해당 데이터베이스 내 유일한 값을 가져야 한다. 그 다음에는 이 트리거가 동작할 시점과 SQL 연산, 그리고 동작이 이루어 질 테이블 명을 정의하는데 트리거 동작 시점 옵션은 아래 표를 참고하면 된다. 키워드 의미 BEFORE 대상 테이블의 INSERT..
-
[SQLite] 뷰 (VIEW)Software/SQLite 2018. 3. 25. 16:33
우리는 앞서 내부 조인(Inner Join)부터 외부 조인(Outer Join)까지 다양한 조인 연산들에 대해서 알아 보았다. 당시 우리가 조인 연산에 사용한 테이블은 단 두개로 그리 복잡한 SQL 구문을 작성하지는 않았었다. 그러나 만약 테이블 수가 많아 지고 한 쿼리 구문 내 여러개의 조인 연산들이 들어가게 되면 SQL 구문 작성이 어려워 질 뿐만 아니라 이해하기 어려워 질 가능성이 크다. 이렇게 복잡해진 SQL 구문을 조금 더 쉽고 단순하게 만들어 주기 위한 방법으로 뷰(VIEW)라는 가상 테이블을 만드는 방법이 있다. 이 가상 테이블은 검색 부분을 제외만을 제외하고 나머지 조인 연산 구문을 포함하여 생성되었기에 가상 테이블로의 질의문은 매우 단순해 질 수 있는 장점이 있다. 뷰 생성 뷰(VIEW)..
-
[SQLite] 테이블 제약 조건Software/SQLite 2018. 3. 19. 00:41
보통 테이블 스키마를 작성한 사람과 해당 테이블의 데이터를 입력하고 사용하는 사용자가 다른 경우가 많다. 그렇기에 우리는 최초 테이블 스키마를 작성할 때의 의도와 다르게 사용하는 경우가 많이 생기며 이로 인한 오류도 많이 발생하게 된다. 이러한 오류들을 사전에 방지하기 위해 우리는 특정 컬럼에 제약 조건을 걸어 해당 컬럼이 설정된 조건을 만족하도록 강제할 수 있다. 예를 들어 NULL값이 입력되면 안되는 컬럼의 경우 데이터가 입력이 누락된 경우에는 에러를 발생시킨다 던지 입력이 누락된 컬럼에 대한 기본값을 설정할 수도 있다. 이번 시간에 그러한 테이블 제약조건에 대해서 알아 보고자 한다. NOT NULL NOT NULL 은 반드시 데이터가 존재해야 만 하는 컬럼을 위한 제약 조건이다. 이 해당 제약 조건..