달력

11

« 2019/11 »

  •  
  •  
  •  
  •  
  •  
  • 1
  • 2


 

무결성 제약 조건의 특성

·         제약조건은 데이터의 적정성과 무결성을 확보하기 위한 조건들을 의미한다.

·         모든 제약조건들은 데이터 사전(data dictionary) 저장된다.

·         부적절한 데이터 입력방지를 위한 NOT NULL 제약조건은 반드시 (컬럼) 레벨에서만 정의가 가능하다.

·         NOT NUll, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK 등이 대표적인 제약조건의 유형들이다.

 

https://codedragon.tistory.com/4272

 

 

 

 

기본키(Primary key)

·         기본키 제약조건은 일반적으로 테이블의 행을 고유하게 식별하는 값을 가진 또는 조합을 말한다.

·         기본키 제약 조건에 포함되는 열에는 Null 값을 사용할 없다.

·         기본키 제약 조건을 지정하면 데이터베이스는 해당 열에 대해 고유 인덱스를 만들어 데이터 고유성을 적용한다.

·         쿼리에서 기본키 제약 조건을 사용한 열을 사용하는 경우 인덱스를 사용하여 빠르게 액세스할 있다.

https://codedragon.tistory.com/4534

https://codedragon.tistory.com/8065

 

 

 

 

외래키(FOREIGN KEY)

·         외래키 제약조건은 테이블의 데이터 연결을 설정하고 강제 적용하는 사용되는 열을 말한다.

·         외래키 테이블의 기본 값을 가지고 있는 열을 다른 테이블의 열이 참조할 테이블 간에 연결이 생성된다이때 번째 테이블에 추가되는 열은 제약 조건으로 생성된다.

·         외래키 제약 조건을 지정하면 데이터베이스는 해당 열에 대해 고유 인덱스를 만들어 데이터 고유성을 적용한다.

·          쿼리에서 제약 조건을 사용한 열을 사용하는 경우 인덱스를 사용하여 빠르게 액세스할 있다.

https://codedragon.tistory.com/4540

 

 

 

 

QUERY  연습 1

오브젝트 조회, 테이블 조회, 컬럼 정보 조회 , 인덱스 조회, 조회 쿼리문 예시입니다.

조회 정보

예제

오브젝트 조회

SELECT object_name, object_type

FROM user_objects;

테이블 조회

SELECT table_name FROM user_tables;

SELECT * FROM tab;

컬럼 정보 조회

SELECT column_name, data_type, data_length, data_precision,

data_scale, nullable, data_default

FROM user_tab_columns

WHERE table_name = 'DEPT' ;

인덱스 조회

SELECT column_name, data_type, data_length, data_precision,

data_scale, nullable, data_default

FROM use_indexes

WHERE table_name = 'DEPT' ;

조회

SELECT text

FROM user_views

where view_name='EMP_vw';

https://codedragon.tistory.com/8067

 

 

 

 

QUERY  연습 2

1.아래의 조건에 맞는 테이블을 설계하고 데이터를 조작하여 테스트하는 쿼리문을 작성하시오

 

 

인사관리에 필요한 테이블(employees) 생성하기

컬럼

조건

사원번호

empno

PK

사원명

empname

Not Null

성별

gender

m 또는 w 값만 허용

부서코드

deptno

부서테이블과 관계 설정

메일주소

email

중복불허

휴대폰번호

phone

중복불허

학력

school

코드(학력테이블)

주소

address

-

 

 

 

인사 기본테이블(employees)  구성된 테이블 생성

CREATE TABLE employees(

empno NUMBER(4) PRIMARYKEY,

empname VARCHAR2(10) NOT NULL,

gender VARCHAR2(1) CONSTRAINT emp_gender_CK CHECK( gender IN('M', 'F') ),

gender VARCHAR2(10) constraint check_gender check( gender IN('남성','여성') ),

deptno VARCHAR2(10) NOT NULL FOREIGN KEY REFERENCES departments(deptno),

email VARCHAR2(10) UNIQUE,

phone NUMBER(4) UNIQUE,

school VARCHAR2(10),

address VARCHAR2(10)

);

 

 

부서테이블(departments)  생성하기

컬럼

조건

부서코드

(deptno)

PK

부서명

(deptname)

not Null

지역

(region)

-

부서 전화번호

(depttel)

-

 

CREATE TABLE departments(

deptno VARCHAR2(10) PRIMARYKEY,

deptname VARCHAR2(10)NOT NULL,

region VARCHAR2(10)

depttel VARCHAR2(10)

);

 

 

 

2. 테이블간의 관계도를 도식화하여 나타내시오


 

 

 

 

3. 인사기본테이블의 성별컬럼을 기준으로 B 트리 인덱스를 생성하려고 문제점을 설명하시오

사원정보 테이블에서 성별 컬럼의 데이터는 m w 값만을 가질 있으며, 카디널리티가 낮은 컬럼을 대상으로 때는 bitmap 인덱스를 생성하는 것이 효율적이다.

 

 

 

 

 

4. 사원번호와 사원명, 부서명, 메일주소, 휴대폰번호의 컬럼을 갖는 View(empl_view) 생성하시오

CREATE OR REPLACE VIEW empl_view

AS SELECT emp.사원명, dept.부서명, emp.메일주소, emp.휴대폰번호

FROM employees emp, department dept;

 

 

 

 

 

QUERY  연습 3

제약조건(Constraints) DB에서 데이터의 적정성과 무결성을 확보하기 위한 조건들을 의미합니다. 모든 제약조건들은 원본 데이터와 따로 데이터 사전(Data dictionary)에도 저장되며, 보통 NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY< CHECK등이 대표적인 제약조건의 유형을 표시합니다.

ERD 보고 Table 생성하는 SQL 명령어 예시입니다.

 

테이블간의 관계(Relationship)


 

 

도서 테이블명: Book

컬럼명

제약조건

bookid

기본키(PK)

숫자(2)

bookname

가변문자열(40)

publisher

가변문자열(40)

price

숫자(8)

 

 

고객 테이블명: Customer

컬럼명

제약조건

custid

기본키(PK)

숫자(2)

name

가변문자열(40)

address

가변문자열(50)

phone

숫자(8)

 

 

주문 테이블명: Orders

컬럼명

제약조건

orderid

기본키(PK)

숫자(2)

custid

외래키(FK)

숫자(2)

bookid

외래키(FK)

숫자(2)

salesprice

숫자(8)

orderdate

날짜

 

CREATE TABLE Book(

bookid NUMBER(2) PRIMARY KEY,

bookname VARCHAR2(40),

publisher VARCHAR2(40),

price NUMBER(2)

)

 

 

CREATE TABLE Customer(

custid NUMBER(2) PRIMARY KEY,

name VARCHAR2(40),

address VARCHAR2(50),

phone VARCHAR2(20)

)

 

CREATE TABLE Order(

orderid NUMBER(2) PRIMARY KEY,

custid NUMBER(2) REFERENCES Customer(custid),

bookid NUMBER(2) REFERENCES Book(bookid),

saleprice NUMBER(8),

orderdate DATE

)

 

 

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

단계별 정규형과 제약 조건  (0) 2019.12.07
NoSQL 분류  (0) 2019.12.03
Summary - 무결성 제약 조건의 특성, QUERY 연습  (0) 2019.11.28
DB & DBMS  (0) 2019.11.28
트랜잭션(Transcation)  (0) 2019.11.19
Sample database with test suite  (0) 2019.11.16
Posted by codedragon codedragon

댓글을 달아 주세요

2019. 11. 28. 10:25

​IBk vs k-means Development/Java



 

IBk vs k-means

·       IBk 분류분석은 k-means 군집분석과 유사합니다. 그래서 IBk 분류분석은 데이터간 거리측정 즉 유사도를 기준으로 군집화를 하는 것까지는 똑같습니다. 그러나 k-means은 군집화까지만 수행하지만 IBk는 더 나아가 군집간에 기준선을 만들어 새로운 데이터가 어느 군집에 분류될지까지 결정합니다.

·       다른 차이점은 k means 군집분석은 군집개수를 수동으로 지정하여 어느정도 군집개수가 적절한지 일일히 실험을 해야 하나, IBk crossvalidate 옵션을 사용하면 적정군집수를 제안해 줍니다.

 

IBk

k-means

군집화 수행 +

군집화된 기준으로 세로운 데이터를 분류

군집화까지만 수행

적정군집수를 제안

군집개수를 수동으로 지정

지도 학습

비지도 학습

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

 

Number of international phone calls from Belgium, 1950–1973.

연도별로 데이터측정 방법이 달라서 일관된 데이터가 나오지 않고 이상값이 나온 실제 데이터 사례입니다.

 

 


 

 

http://bit.ly/2siIBKI


 

 

 

 

 

 

직접 다운로드

data_outliers.csv

이상값이 존재하는 데이터

data_outliers_remove.arff

이상값을 제거한 데이터

 

 

data_outliers.csv

data_outliers_remove.arff



Posted by codedragon codedragon

댓글을 달아 주세요

2019. 11. 28. 02:00

DB & DBMS Development/Database

 

 

DB & DBMS

 

DB

DBMS

DataBase

Database Management System

데이터베이스

데이터베이스 관리 시스템

데이터의 집합

데이터를 관리하기 위한 시스템

https://codedragon.tistory.com/6837

https://codedragon.tistory.com/4100

 

 


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

NoSQL 분류  (0) 2019.12.03
Summary - 무결성 제약 조건의 특성, QUERY 연습  (0) 2019.11.28
DB & DBMS  (0) 2019.11.28
트랜잭션(Transcation)  (0) 2019.11.19
Sample database with test suite  (0) 2019.11.16
SQL(Standard Query Language)  (0) 2019.11.10
Posted by codedragon codedragon

댓글을 달아 주세요



 

 

geopandas installing with pip

·       파이썬 버전 확인

·       운영체제 OS bit 버전 확인

·       whl파일 다운로드

·       whl파일 설치

 

 

 

Step by Step

 

파이썬 버전 확인

C:\CodeLab>python --version

Python 3.6.5

 

C:\CodeLab>

 

 

 

 

운영체제 OS bit 버전 확인

C:\CodeLab>systeminfo | findstr based

시스템 종류:             x64-based PC

 

C:\CodeLab>

 

 

 

 

whl파일 다운로드

https://www.lfd.uci.edu/~gohlke/pythonlibs/#fiona

Fiona1.8.11cp36cp36mwin_amd64.whl

 

https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely

Shapely1.6.4.post2cp36cp36mwin_amd64.whl

 

https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal

GDAL3.0.2cp36cp36mwin_amd64.whl

 

https://bit.ly/34j4x6B

geopandas0.6.2py2.py3noneany.whl

 

 

 

 

 

 

whl파일 설치

 

C:\CodeLab>dir *.whl

 C 드라이브의 볼륨에는 이름이 없습니다.

 볼륨 일련 번호: 70F2-E4B5

 

 C:\CodeLab 디렉터리

 

2019-11-25  오전 08:47           486,546 Fiona-1.8.11-cp36-cp36m-win_amd64.whl

2019-11-25  오전 09:12        34,119,907 GDAL-3.0.2-cp36-cp36m-win_amd64.whl

2019-11-25  오전 08:36           919,996 geopandas-0.6.2-py2.py3-none-any.whl

2019-11-25  오전 09:11           635,386 Shapely-1.6.4.post2-cp36-cp36m-win_amd64.whl

               4 파일          36,161,835 바이트

               0 디렉터리  12,584,366,080 바이트 남음

 

C:\CodeLab>

 

 

 

pyproj , shapely, GDAL, Fiona, geopandas 순서로 설치해 주어야 Error 발생하지 않습니다.

 

install pyproj

C:\CodeLab>pip install pyproj

Collecting pyproj

  Using cached https://files.pythonhosted.org/packages/0d/99/8d3a138e5ef78b6e8b6f754d79046701ab18af6f1411c9cfcef5c6432f61/pyproj-2.4.1-cp36-cp36m-win_amd64.whl

Installing collected packages: pyproj

Successfully installed pyproj-2.4.1

 

C:\CodeLab>

 

install Shapely

C:\CodeLab>pip install Shapely-1.6.4.post2-cp36-cp36m-win_amd64.whl

Processing c:\codelab\shapely-1.6.4.post2-cp36-cp36m-win_amd64.whl

Installing collected packages: Shapely

Successfully installed Shapely-1.6.4.post2

 

C:\CodeLab>

 

 

install GDAL

C:\CodeLab>pip install GDAL-3.0.2-cp36-cp36m-win_amd64.whl

Processing c:\codelab\gdal-3.0.2-cp36-cp36m-win_amd64.whl

Installing collected packages: GDAL

Successfully installed GDAL-3.0.2

 

C:\CodeLab>

 

 

install Fiona

C:\CodeLab>pip install Fiona-1.8.11-cp36-cp36m-win_amd64.whl

Processing c:\codelab\fiona-1.8.11-cp36-cp36m-win_amd64.whl

Requirement already satisfied: click-plugins>=1.0 in c:\python\python36\lib\site-packages (from Fiona==1.8.11) (1.1.1)

Requirement already satisfied: six>=1.7 in c:\python\python36\lib\site-packages (from Fiona==1.8.11) (1.11.0)

Requirement already satisfied: click>=4.0 in c:\python\python36\lib\site-packages (from Fiona==1.8.11) (7.0)

Requirement already satisfied: munch in c:\python\python36\lib\site-packages (from Fiona==1.8.11) (2.5.0)

Requirement already satisfied: cligj>=0.5 in c:\python\python36\lib\site-packages (from Fiona==1.8.11) (0.5.0)

Requirement already satisfied: gdal~=3.0.2 in c:\python\python36\lib\site-packages (from Fiona==1.8.11) (3.0.2)

Requirement already satisfied: attrs>=17 in c:\python\python36\lib\site-packages (from Fiona==1.8.11) (19.3.0)

Installing collected packages: Fiona

Successfully installed Fiona-1.8.11

 

C:\CodeLab>

 

 

install geopandas

C:\CodeLab>pip install geopandas-0.6.2-py2.py3-none-any.whl

Processing c:\codelab\geopandas-0.6.2-py2.py3-none-any.whl

Requirement already satisfied: shapely in c:\python\python36\lib\site-packages (from geopandas==0.6.2) (1.6.4.post2)

Requirement already satisfied: pyproj in c:\python\python36\lib\site-packages (from geopandas==0.6.2) (2.4.1)

Requirement already satisfied: fiona in c:\python\python36\lib\site-packages (from geopandas==0.6.2) (1.8.11)

Requirement already satisfied: pandas>=0.23.0 in c:\python\python36\lib\site-packages (from geopandas==0.6.2) (0.23.0)

Requirement already satisfied: cligj>=0.5 in c:\python\python36\lib\site-packages (from fiona->geopandas==0.6.2) (0.5.0)

Requirement already satisfied: click>=4.0 in c:\python\python36\lib\site-packages (from fiona->geopandas==0.6.2) (7.0)

Requirement already satisfied: attrs>=17 in c:\python\python36\lib\site-packages (from fiona->geopandas==0.6.2) (19.3.0)

Requirement already satisfied: gdal~=3.0.2 in c:\python\python36\lib\site-packages (from fiona->geopandas==0.6.2) (3.0.2)

Requirement already satisfied: six>=1.7 in c:\python\python36\lib\site-packages (from fiona->geopandas==0.6.2) (1.11.0)

Requirement already satisfied: munch in c:\python\python36\lib\site-packages (from fiona->geopandas==0.6.2) (2.5.0)

Requirement already satisfied: click-plugins>=1.0 in c:\python\python36\lib\site-packages (from fiona->geopandas==0.6.2) (1.1.1)

Requirement already satisfied: pytz>=2011k in c:\python\python36\lib\site-packages (from pandas>=0.23.0->geopandas==0.6.2) (2018.4)

Requirement already satisfied: numpy>=1.9.0 in c:\python\python36\lib\site-packages (from pandas>=0.23.0->geopandas==0.6.2) (1.14.4)

Requirement already satisfied: python-dateutil>=2.5.0 in c:\python\python36\lib\site-packages (from pandas>=0.23.0->geopandas==0.6.2) (2.7.3)

Installing collected packages: geopandas

Successfully installed geopandas-0.6.2

 

C:\CodeLab>

 

 

 

 

 

 

 

http://geopandas.org/install.html

https://pypi.org/project/geopandas/0.2.1/

https://pypi.org/project/Shapely/

https://pypi.org/project/GDAL/

https://pypi.org/project/pyproj/

 

 


Posted by codedragon codedragon

댓글을 달아 주세요

 

스레드의 동기화 문제

스레드의 동기화 문제는 다중 스레드일 때 발생가능하며 여러 스레드가 동시에 실행 될 때 2개 이상의 스레드가 동일한 데이터에 접근하여 작업할 경우 문제가 발생할 수 있습니다.

그러므로, 하나의 스레드가 조작하고 있는 공유자원(변수, 데이터)를 다른 스레드가 조작하지 못하도록 하기 위해서 동기화가 필요합니다.

 

동기화 문제 발생


 

 

동기화 처리


 

 

 

Synchronization(동기화)

·       임계영역(Critical Section)에서 스레드들이 순서를 갖춰 자원을 사용하게 하는 것을 동기화하고 합니다.

·       임계영역이란 멀티 스레드에 의해 공유자원이 서로 참조될 수 있는 코드의 범위를 말합니다.

·       , 한 쓰레드가 작업중 다른 쓰레드에 의해 간섭을 받지 못하도록 막는 것을 쓰레드의 동기화하고 합니다.

·       멀티 스레드 프로그램에서 임계영역을 제대로 처리하지 못 하는 경우 심각한 문제가 발생할 수 있습니다.

·       이러한 문제 상황을 해결하는 방법이 동기화를 이용하는 것입니다. 그래서 하나의 자원을 한번에 하나의 스레드만 사용하도록 하는 기술입니다.

·       동기화 메소드를 구현하기 위해서는 synchronized 키워드를 사용하여야 합니다.

·       동기화 메소드를 스레드가 호출할 경우 이미 접근한 스레드가 작업을 완료할 때까지 기다려야 접근할 수 있습니다.

 

·       동기화를 처리하기 위해 모든 객체에 락(lock)을 포함 시켰습니다.

·       (lock)이란 공유 객체에 여러 스레드가 동시에 접근하지 못하도록 하기 위한 것으로 모든 객체가 힙 영역에 생성될 때 자동으로 만들어 집니다.

 

 

 

synchronized 흐름도


 

 

 

Thread 관련 용어

구분

설명

공정

(fairness)

여러 개의 스레드가 하나의 컴퓨팅 자원을 사용하기 위해 동시에 접근하는 프로그램을 작성할 경우 모든 스레드는 공정하게 그 자원을 사용할 수 있도록 해 주어야 합니다.

기아상태

(starvation)

하나 또는 그 이상의 스레드가 자원을 얻기 위해 Blocked 상태에 있고, 그 자원을 얻을 수 없게 되면 다른 작업을 못하는 상태를 말합니다.

교착상태

(deadlock)

두 개 이상의 스레드가 만족하지 못하는 상태로 계속 기다릴 때 발생합니다.

경쟁상태(race condition)

여러 쓰레드가 lock(제어권)을 얻기 위해 서로 경쟁하는 상태를 말합니다.

 

 

 

Thread를 사용할 경우 주의

·       가급적 공유자원 만들지 말 것.

·       공유자원을 만들 경우 반드시 적절한 방법으로 동기화 할 것.

 

Posted by codedragon codedragon

댓글을 달아 주세요


 

 

 

프레임워크(Mock framework)

·         객체를 활용한 테스트는 직접 개발자가 객체를 만들어야 합니다.

·         객체를 만드는 것은 시간 · 노력이 필요합니다.

·         이미 만들어져 있는 프레임워크를 활용하여 쉽게 객체 활용이 가능합니다.

·         해당 라이브러리만 세팅하면 쉽게 객체를 활용 가능

 

 

 

대표적인  프레임워크

·         EasyMock

·         Jmock

·         Mockcpp

·         Googlemock

 


Posted by codedragon codedragon

댓글을 달아 주세요

 

 

워크숍

워크숍은 어떠한 목적을 달성하기 위하여 전문 진행자의 진행 아래 프로젝트의 현업 부서 측과 전산 부서 측의 주요 구성원들이 함께 참여하는 회의이다.

 

 

워크숍 사전준비 사항

워크숍을 통해 달성해야 목표와 구체적인 논의 사항들을 도출하기 위해서 사전 준비가 필요합니다.

 

·         워크숍 과제 선정과 계획 수립

·         참가 대상자 선정

·         참가 대상자에 대한 사전 브리핑 교육 훈련

·         킥오프 모임 수행

·         워크숍 자료 준비

·         설비와 물품 준비

·         워크숍 장소 선정

·         워크숍 기간 선정 프로그램 준비

https://codedragon.tistory.com/9302

 


Posted by codedragon codedragon

댓글을 달아 주세요

2019. 11. 27. 01:00

XML vs CSV Development/Python


 

 

XML vs CSV

CSV 특징입니다.

XML

CSV

이진파일

텍스트파일

데이터 타입 존재

모든값이 문자열

셀의 폰트나 컬러 지정가능

폰트나 컬러 지정가능 불가

여러 개의 워크시트 존재

하나의 워크시트만 존재

셀의 너비와 높이 설정가능

셀의 너비와 높이 설정 불가

병합 가능

병합 없음

이미지, 차트등을 포함

문자열외 포함 불가

 

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

SQOOP(스쿱)

·         아파치 스쿱

·         하둡의 입력을 파일에서 RDBMS 사용할 있게 해줍니다. RDBMS데이터를 하둡에서 접근할 있게 만들어줍니다.

·         1.4에서 2.x 변경되면서 클라이언트/서버형태로 변경되었습니다.

 

 

http://sqoop.apache.org/


 

http://bit.ly/2sc4AmE

 


Posted by codedragon codedragon

댓글을 달아 주세요