728x90
반응형
SMALL

* Youtube Review - https://www.youtube.com/watch?v=64c0BgeCLAY&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=2

 

개발 방법론 중 기본은 폭포수 모델이다.

기획(요구사항) -> 설계 -> 개발 -> 테스트 -> 운영

운영시에도 계획/분석/설계는 매우 중요하다.

추상적의 반댓말은 구체적

전사적 (EA) 은 Enterprise Architecture 기업입장에서 본다는 의미이다.

예를 들어 전기에 대한 프로젝트가 있다면 개발자는 개발의 지식만 갖고 있고 현업에서 업무 프로세스를 주는 방식이다.

DBMS는 oracle, mysql, sql server 등 굉장히 다양한 데이터베이스가 있다. 개념적 데이터 모델링은 모든 DBMS에서 사용할 수 있다.

결과물인 ERD를 생성하는 것이다.

요구사항을 그린다.

사람들이 화면의 왼쪽 상단부터 본다고 한다.

그래서 보통 중요한 엔터티를 왼쪽 상단에 둔다.

연관이 있을 것 같은 엔터티끼리 연결해준다.

관계명은 기술되어 있지 않는 경우도 많다.

엔터티 안의 인스턴스들이 얼마나 참여하는지

필수여부는 0또는 1를 표시함으로써 표시한다.

이를 ERD라고 한다.

상세하게 그려야 한다. 그래서 업무, 속성, 관계 등 정의

재사용성이 높음, 이 모델링 한 결과물은 설계할 때만 사용하는 것이 아니다. 구축 또는 테스트시 계속 사용한다.

또한 유지보수 해야한다.

논리적 데이터 모델링은 특정 DBMS에 종속적이다.

논리적 데이터 모델링을 할 때 정규화를 수행한다.

먼저 속성을 쭉 나열하는 것이다.

식별자에 대한 요구조건이 있다.

주민등록번호보다 직원ID가 더 부합하기 때문에 직원ID를 PK로 사용한다.

만약 직원이 두개 이상의 연락처를 갖을 수 있으면, 직원 연락처로 나누어 주어야 한다.

파급효과: 초반에 엉망으로 설계하면 개발하다가 나중에 엎게 되어 힘듬

2. 간결한 설계또가 있어야 쉽게 이해 가능

3. 데이터 중복, 비유연성, 비일관성 등 이상한 데이터가 안 들어감

데이터의 중복이 일어나면 다음과 같이 한 ID에 여러 데이터가 조회되는

데이터 중복 현상이 발생한다.

사소한 프로세스(업무)의 변화에도 테이블을 바꿔야 하는 경우

연락처가 변경되면 이를 이력에 쌓아야 한다.

스키마는 각각 종속적이다.

개념 스키마와 내부 스키마의 독립성

저장공간 (하드 디스크) 등을 데이터베이스에 추가해도 개념 스키마를 변경할 필요 없다.

유일하게 인스턴스를 식별할 수 있다.

(1) 대표성 여부: 직원 ID 는 주식별자, 주민등록번호는 보조식별자

(2) 스스로 생성 여부: 내부식별자는 테이블 내부의 PK이다. 외부식별자는 외부 테이블에서 빌려온 FK이다.

(3) 단일속성여부: 단일식별자는 하나의 식별자이다. 복합식별자는 직원연락처처럼 2개이상의 식별자 조합이다. 예를 들어 직원연락처는 직원ID와 구분코드로 식별자가 조합되어 있다.

(4) 대체여부: 본질식별자는 업무 본연에 있던 대상이다. 인조식별자

예를 들어 부서명을 식별자로 사용하여도 된다. 근데 너무 길다. 인프라, 서비스, 통신. 하나 코드 따서 만들자.

D001, D002 등이다. 편의를 위해서 임의로 만든 식별자를 인조식별자라 한다.

실무 입장에서는 주민번호는 암호화가 되어야 한다.

주식별자 도출기준 특징

1. 유일성

2. 최소성

3. 불변성

4. 존재성

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

*Youtube Link - https://www.youtube.com/watch?v=64c0BgeCLAY&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=2

 

03. 관계(Relationship) 이해하기

엔터티의 관계를 부여해서 

데이터의 의미를 가져가는 것

존재에 의한 관계

행위에 의한 관계

관계차수는 각 인스턴스들이 얼마나 참여하는지

IE 표기 방식은 1을 사용을 하고

BARKER 표기 방식은 1은 안 적으면 된다.

M:N의 관계는 1:N, N:1로 쪼개야 한다.

직원이 신입이면 부서 배정이 안 되었을 수 있다.

상태를 코드로 관리하는 것

통계성도 있다.

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

데이터베이스가 뭐(WHAT)지?

이 통은 하드디스크이다.

여러 데이터들이 모여있는 하드디스크다.

예를 들어 엑셀의 한 명의 정보가 바뀌면

모두가 바꿔야 하는 어려움이 발생했습니다.

데이터를 한 곳에 모아 저장하게 되면

한 명이 바꾸면 다른 사람들은 추가적으로 바꿀 필요 없다.

정보가 필요하다.

로그인 예시

이러한 정보들을 저장하는 공간이 바로 데이터베이스이다.

현실 정보를 모델링

먼저 간단하게 개념적 데이터 모델링을 하고 

이를 논리적으로 데이터 모델링을 합니다.

그리고 성능까지 고려하여 물리적 데이터 모델링을 합니다.

그리고 데이터베이스에 저장할 수 있게 세팅하면 끝입니다.

집합적으로 단순하게 표현

엔터티안에 있는 개별적인 대상

업무에 필요한 것

인스턴스별 유일하게 구분 가능

인스턴스가 2개 이상 존재

속성이 2개 이상 존재

관계가 하나 이상 존재

유형, 개념, 사건등의 엔터티의 분류가 있다.

본래 업무에 존재하는 정보

업무에 있어 중심 역할

2개 이상 엔터티로부터 발생 

가능한 협업 용어를 쓴다.

의미가 분명하면 좋다.

엔터티가 가지는 공통적인 특징

나중에 우리가 관리하고자 하는 정보

최소 단위 

속성은 각각의 인스턴스를 설명할 수 있다.

하나의 속성에는 하나의 속성값만 들어간다.

각 인스턴스를 식별할 수 있는 속성의 집합

기본은 업무로부터 추출한 속성, 제일 많이 발생

설계는 예를 들어 부서명은 기니까 이 부서명은 코드로 관리하겠다 해서 부서코드를 만드는 것이다.

파생은 부서별연봉합 처럼 데이터의 변경이 일어나면 같이 변경이 일어나야하는 부분이다.

속성은 PK나 FK로 나누어야 한다.

도메인은 속성의 특징이다. 범위를 의미한다.

각 속성마다 자료형 및 제약조건을 줄 때 결정 된다.

 

 

 

데이터베이스가 어떻게 쓰이지?

 

 

 

 

 

참고 링크 - https://www.youtube.com/watch?v=lxiEiAjp7d0&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn

728x90
반응형
LIST
728x90
반응형
SMALL

안녕하세요, 

728x90
반응형
LIST
728x90
반응형
SMALL

안녕하세요, 혼자 공부하는 SQL를 보고 학습한 자료를 남깁니다.

 

파이썬 GUI 프로그래밍

사용자가 윈도우 창을 통해서 

편리하게 마우스 클릭으로 MySQL 데이터베이스를 조작하는 방법입니다.

그러기 위해서 파이썬에서 제공하는 tkinter라는 라이브러리를 사용해야 합니다.

간단하게 윈도우 창을 만들도록 도와주는 라이브러리이다.

Tkinter 실습(1)

다음과 같이 윈도우 창이 뜨는 것을 확인할 수 있다.

Tkinter 실습(2)

다음과 같이 GUI 윈도우 창의 title과 크기를 조절할 수 있다.

Tkinter 실습(3)

 Label을 통해서 root인 tkinter에 글자를 입력할 수 있다.

또한 font로 글자 크기, 배경색, 글자색을 지정할 수 있다.

외우는 것은 아니고, 익히는 것이 좋다.

Tkinter 실습(4)

다음과 같이 버튼 클릭 함수를 미리 정의해놓고

버튼을 만듭니다.

핵심은 함수를 사용한다. 함수를 만들어주어야 한다.

Tkinter 실습(5)

버튼의 크기를 조절할 수 있다.

다음은 버튼 3개를 만들고, 버튼의 위치를 조절하였다.

side=LEFT라는 옵션을 주어서 버튼을 배치하였다.

Tkinter 실습(6)

side, fill, padx, pady 등의 옵션을 주어서 

버튼의 옵션을 주었다.

다음과 같이 버튼들이 여백을 두어서 윈도우창에 나오는 것을 볼 수 있다.

Tkinter 실습(7)

먼저 화면을 upFrame과 downFrame 이렇게 두 개로 나누었다.

Tkinter 실습(8)

파이썬을 통해서 GUI로 회원 입력 및 조회 윈도우창을 직접 만들고,

INSERT 및 SELECT를 실습해보았다.

 

감사합니다.

https://www.youtube.com/watch?v=gCeSU3ByGVs&list=PLVsNizTWUw7GCfy5RH27cQL5MeKYnl8Pm&index=24

 

728x90
반응형
LIST
728x90
반응형
SMALL

안녕하세요, 혼자 공부하는 SQL를 보고 학습한 자료를 남깁니다.

 

파이썬과 MySQL 연동

사용자가 python 응용 프로그램을 통해서 데이터베이스를 사용할 수 있도록 하는 것이다.

연동 프로그래밍

간단한 예로 쇼핑몰 데이터베이스를 사용을 하려고 한다.

이 안에 간단한 테이블을 만드려고 한다.

테이블은 SQL을 통해서 만든다.

SQL로 데이터베이스를 생성 완료하였다.

주로 이 규정된 형태를 따르고 있다.

먼저 import pymysql 명령어를 실행해서 외부 라이브러리를 사용한다.

conn 이라는 변수에 pymysql의 connect() 함수를 통해서 데이터베이스를 연동하고 이를 저장하여 conn 변수를 생성한다.

그리고 conn 변수의 cursor() 함수를 통해서 cur이라는 커서 변수를 생성한다.

그리고 각 커서별로 실행할 sql문을 문자열로 입력하여 실행한다.

SQL문이 잘못 입력되었을 시 오류도 발생을 하는 것을 볼 수 있다.

그리고 SQL 명령문을 모두 실행을 하였다면

conn 변수의 commit() 함수를 실행해서

실행한 SQL문을 연동한 데이터베이스에 저장한다.

그리고 반드시 데이터베이스와의 연동을 종료해야 한다.

conn 변수의 close()함수를 통해서 처리가 가능하다.

그러면

다음과 같이 workbench에서 확인해 볼 때 성공적으로 

테이블이 만들어지고, 데이터들이 입력이 된 것을 볼 수가 있다.

다음으로는 회원가입을 위한 파이썬 프로그래밍을 해보았다.

그리고 이 파일을 실행하면

실행 상자에서 정상적으로 프로그램이 실행되는 것을 볼 수 있다.

그리고 프로그래밍을 종료한 다음

workbench에서 테스트로 userTable을 SELECT시

정상적으로 수지 데이터가 입력된 것을 볼 수 있다.

이번에는 또 다른 예제를 가져왔다.

데이터를 조회하는 프로그램이다.

실행을 하면

다음과 같이 프로그램이 실행이 되는 것을 볼 수 있다.

 

감사합니다.

https://www.youtube.com/watch?v=Se1ImwcqmlA&list=PLVsNizTWUw7GCfy5RH27cQL5MeKYnl8Pm&index=23

 

728x90
반응형
LIST
728x90
반응형
SMALL

안녕하세요, 혼자 공부하는 SQL를 보고 학습한 자료는 남깁니다.

 

파이썬 개발 환경 준비

1) 파이썬 설치

2) PyMySQL 외부 라이브러리 설치

그러면 python과 MySQL이 PyMySQL이라는 라이브러리를 통해서 연동이 되는 것이다.

SQL문을 배워야만 사용을 할 수 있었다.

하지만 python을 통해서 마우스 클릭이나 간단한 명령어를 통해서 SQL의 명령문을 사용할 수 있게 되는 것이다.

예를 들어, 사용자가 회원가입을 하면 간단한 정보만 입력을 하면

INSERT문이 만들어지고, MySQL에 입력이 되기 때문에

사용자는 SQL을 안 배워도 회원가입을 할 수 있었던 것이다.

파이썬 소개

C언어에 비해서 훨씬 쉽다.

그리고 강력하다.

환경이 쉽고 설치도 쉽다.

그리고 강력한 외부 라이브러리들을 제공하는데

추가 기능이라고 생각하면 쉽다.

python은 여러 버전이 있는데

현재 가장 안정화된 3.9를 사용을 하면 된다.

PyMySQL을 추가로 설치를 할 것이다.

원래 python은 MySQL과 연동하는 기능이 없지만

PyMySQL 라이브러리를 통해서 MySQL과 연결하는 기능이 있다고 보면 된다.

자동차를 파이썬이라고 보면 원래는 에어컨 기능이 없었는데 

PyMySQL이라는 에어컨 기능을 추가하면 차가 시원해질 수 있다.

파이썬 설치

1) 혼공 카페에서 설치

2) 파이썬 공식 홈페이지에서 설치

3) 설치 방법

Add Python 3.9 to PATH를 선택하시고

Install Now를 선택을 하면

예를 누르면

설치가 진행이 된다.

1-2분 정도 설치 진행이 된다.

Disable path length limit을 선택을 하면

예를 클릭을 하면

설치가 완료되었다.

Close를 선택을 하면 된다.

PyMySQL 설치

윈도우 + R 키를 눌러서 cmd를 입력하여 명령 실행창을 연다.

그리고 pip install pymysql을 입력한다.

그러면 성공적으로 pymysql 외부 라이브러리 추가 기능이 설치된 것을 볼 수 있다.

파이썬 실행

IDLE를 클릭을 하면

대화형 모드라고 해서 

파이썬을 입력할 수 있는 상자가 실행이 된다.

다음과 같이 print() 함수를 사용해보고

연산을 수행해보았다.

한 줄 한 줄 정상적으로 실행이 되는 것을 볼 수 있다.

이번에는 여러 줄의 코드를 실행을 해보겠다.

File > New File 을 클릭한다.

메모장 같은 화면이 뜬다.

이렇게 코드를 입력을 하였다.

엔터를 입력하여도 실행이 되지 않는다.

File > Save를 눌러 저장을 한다.

First.py라는 이름으로 저장을 한다.

Run > Run Module을 클릭을 하면

대화형 모드 실행 상자에

실행이 된 것을 볼 수 있다.

 

감사합니다.

https://www.youtube.com/watch?v=OSKAT7IHzSE&list=PLVsNizTWUw7GCfy5RH27cQL5MeKYnl8Pm&index=22

 

728x90
반응형
LIST
728x90
반응형
SMALL

안녕하세요, 혼자 공부하는 SQL를 보고 학습한 자료를 남깁니다.

 

트리거란

자동으로 실행되는 것.

INSERT, UPDATE 및 DELETE 시 발생

데이터의 삭제를 방지

예를 들어, 블랙핑크를 삭제하기 전에 다른 곳에 저장을 하고 지우는 것이다.

그런데 업무적으로는 실수할 수도 있다.

이럴 때 트리거를 사용하면 된다.

테이블에 부착하는 것이다.

트리거 실습

CREATE TRIGGER 명령어를 통해서 트리거를 생성할 수 있다.

AFTER DELETE 명령어를 통해서 삭제후 작동하도록 지정할 수 있다.

ON 명령어를 통해서 트리거를 부착한 테이블을 만든다.

FOR EACH ROW 명령어를 통해서 각 행마다 적용시킨다.

BEGIN과 END 절 안에 트리거 실행시 작동되는 코도들을 살펴본다.

DELETE TRIGGER 생성을 완료하였다.

그리고 INSERT를 수행하면 트리거가 작동하지 않은 것을 볼 수 있다.

DELETE TRIGGER이기 때문이다.

자 이번에는 UPDATE를 해보겠다.

트리거가 작동하지 않은 것을 볼 수 있다.

이번에는 DELETE를 수행했다.

성공적으로 가수 그룹이 삭제된 것을 볼 수 있다.

트리거 활용

계좌 테이블을 예로 들자면,

계좌라는 중요한 정보를 누가 입력/수정/삭제했는지 알 수 없다. 나중에 계좌에 문제가 발생했을 때 원인을 파악하기 어렵다. 이럴 때를 대비해서 데이터에 입력/수정/삭제가 발생시 트리거를 자동으로 작동시켜 데이터를 변경한 사용자와 시간 등을 기록할 수 있다.

백업 테이블을 통한 트리거 예시

OLD 테이블은 조금 특별한 테이블이다.

시스템에서 갖고 있으며 

예를 들어, UPDATE 트리거가 작동 시 UPDATE 이전의 정보가 잠깐 들어간다고 보면 된다.

OLD 테이블에 잠깐 들어간 이전 데이터를 백업 테이블에 INSERT하는 구문이다.

CURRENT_USER() 함수를 통해서 현재 접속한 사용자의 이름을 조회한다. 현재는 root이다.

이번에는 DELETE TRIGGER를 생성하였다.

똑같이 MOD만 변경하여서 백업 테이블에 저장하는 예제이다.

UPDATE와 DELETE를 수행하였다.

백업 테이블에 잘 저장된 것을 볼 수 있다.

백업 테이블에 트리거가 잘 작동하였다는 것을 보여주는 예제이다.

보시면 modDate에 반영일 그리고 modUser에 현재 접속한 사용자를 조회하고

모든 데이터를 백업 데이블에 저장함으로써 보안성을 보장하고

데이터의 무결성에 한층 더 다가설 수 있다.

TRUNCATE TABLE 명령어를 통해서 singer 테이블의 데이터를 전부 삭제하였다.

SELECT를 해보니 결과가 조회되지 않는다.

성공적으로 TRUNCATE 구문을 완료한 것을 볼 수 있다.

backup_singer 테이블을 통해서 백업한 데이터를 확인이 가능하다.

singer테이블의 데이터를 그대로 보유하고 있는 것을 볼 수 있다.

 

감사합니다.

https://www.youtube.com/watch?v=bggWVsBmKag&list=PLVsNizTWUw7GCfy5RH27cQL5MeKYnl8Pm&index=21

 

728x90
반응형
LIST

+ Recent posts