Database 26

[DB 이론] 데이터베이스 정규화란? (이상 문제, 함수적 종속, 정규화 과정)

데이터베이스 정규화란? 이상 문제를 해결하기 위해 속성들 끼리의 종속 관계를 분석하여 여러개의 릴레이션으로 분해하는 과정 입니다. 일반적으로 테이블을 여러개로 분해하면 속도는 상대적으로 느려질 수 있지만, 분해하지 않으면 이상 문제들이 발생 합니다. 이상 문제 삽입 이상 : 데이터를 저장할 때 원하지 않는 정보가 함께 삽입되는 경우 삭제 이상 : 튜플을 삭제함으로써 유지되어야 하는 정보 까지도 연쇄적으로 삭제되는 경우 갱신 이상 : 중복된 튜플 중 일부의 속성만 갱신 시킴 으로써 정보의 모순성이 발생하는 경우 예를들어 아래와 같은 테이블이 있을 경우 이상 문제가 발생할 수 있습니다. 삽입 이상 : 신입 학생이 입학하여 학번과 학년 등을 입력하려 했으나 아직 과목이 정해지지 않았거나, 시험을 보지 않아 성..

Database/DB Theory 2020.02.04

[DB 이론] 관계형 데이터 모델과 키의 종류

데이터 모델의 종류 계층 데이터 모델 : 트리 데이터 모델이라고도 하며 부모-자식 관계를 가집니다. (DBMS : IMS, System 2000 등) 네트워크 데이터 모델 : 망 데이터 모델이라고도 하며 그래프 형태로 표현 합니다. (DBMS : DBTG, IDMS, ids 2, Total, DMS/1100 등) 관계 데이터 모델 : 표 데이터 모델이라고도 하며 구조가 단순하고 사용이 편리 합니다. (DBMS : DB2, Ingres, Informix, SQL Server, Oracle, Mysql 등) 관계형 데이터 모델이란? 관계형 데이터 모델은 논리적인 릴레이션 구조로 구성되며 사용자는 원하는 데이터(waht)만 명시하고 어떻게 이 데이터를 찾을 것인가(how)는 명시할 필요가 없습니다. DB의 논..

Database/DB Theory 2020.02.04

[MySQL] Workbench 문법 에러 (Error Code: 1064. Syntax error near 'VISIBLE' 또는 'INVISIBLE')

일반적으로 Error Code: 1064. Syntax 에러가 발생하면 문법 문제 입니다. 하지만 "Error Code: 1064. Syntax error near 'VISIBLE' 또는 'INVISIBLE'" 에러가 발생할 때 MySQL Workbench를 서버 접속 용도로 사용하고 다른 서버의 MySQL에 접근한다면 MySQL의 버전을 확인해봐야 할 필요성이 있습니다. MySQL Workbench의 버전과 MySQL 서버의 버전 차이로 인해 문법이 달라질 수 있습니다. (ex. MySQL Workbench 버전은 8.0인데, MySQL 서버의 버전은 5.7인 경우) 아래는 MySQL 8.0 공식 홈페이지 메뉴얼의 CREATE INDEX문 내용중의 일부 입니다. 문제가 되는 부분은 에러 내용을 보앗을때..

Database/MySQL 2020.02.04

[DB 이론] 데이터 베이스 개념적 설계 - ER모델 (Entity-Relationship Model)

ER모델 (Entity-Relationship Model) ER모델은 피터 첸이 제안한 개념적 데이터 모델로써 현실 세계를 개체와 개체 간의 관계를 이용하여 개념적 구조로 표현하여 ERD(Entity-Relationship Diagram)으로 작성할 수 있습니다. 개체, 속성, 관계 개체는 현실 세계에서 꼭 필요한 사람이나 사물과 같이 구별되는 모든 것을 가르키며 데이터로써 DB에 저장할 가치가 있는 중요한 사람, 사물, 개념, 사건 등을 뜻 하며 최소 하나 이상의 개체를 가지고 있어야 합니다. (ex. 학원에 필요한 개체 : 학생, 수업 등) 속성은 개체나 관계가 가지고 있는 고유의 특성으로 DB에 저장할 데이터의 가장 작은 논리적 단위 입니다. (ex. 학생 개체의 속성 : 학생의 이름, 학생의 성별..

Database/DB Theory 2020.02.03

[DB 이론] 데이터 베이스 모델링

데이터 모델링 이란? 데이터 모델링은 현실 세계의 다양한 데이터를 DB에 표현하기 위한 중간 과정 입니다. (현실 세계의 데이터 → 컴퓨터 세계의 데이터 구조로 기술하는 논리적 구조) 일반적으로 데이터 모델링은 크게 3가지로 나눠지고 이후 아래 5가지의 설계 과정을 거치게 됩니다. 데이터 베이스 설계 과정 요구 분석 단계 : DB를 사용할 주요 사용자를 결정하고, 사용자가 수행하는 업무를 분석 하는 단계 입니다. 업무에 관련된 문서를 분석하거나 면담, 설문 조사 등의 방법을 이용해 요구 사항을 파악 후 분석 결과를 요구 사항 명세서로 작성 합니다. 개념적 설계 단계 : 필요한 데이터를 구조화, 정형화 시키기 위해 추상적인 개념으로 표현 합니다. (E-R 다이어그램) 논리적 설계 단계 : 개념적 설계에서 ..

Database/DB Theory 2020.02.03

[MySQL] access denied for user 'root'@'localhost' 해결 방법 (Centos7)

Centos7 버전에 MySQL을 설치하고 mysql 명령으로 진입하려하면 access denied for user 'root'@'localhost' 에러가 발생 합니다. 어느 버전부터 이렇게 바꼇는지는 모르겠지만 mysql 설치 후 root 계정의 패스워드가 임의로 변경되어 로그파일에 남겨진다고 합니다. 아래 명령어를 입력하면 임의로 설정된 root 계정 패스워드를 확인할 수 있습니다. cat /var/log/mysqld.log | grep 'temporary password' 빨간색으로 테두친 부분이 패스워드이므로 이제 mysql -u root -p 명령어로 패스워드를 입력하고 접속을 시도하면 정상적으로 로그인 되는것을 확인할 수 있습니다. 하지만 로그인 후 정상적인 이용이 불가능한데, mysql에서..

Database/MySQL 2020.01.23

[Oracle] 쿼리 출력값 dump 방법

SQL PLUS를 이용한 오라클 쿼리 출력값 dump 뜨는 방법 입니다. SPOOL C:\querydump\query // 저장 시작, C드라이브 하위에 지정한 폴더가 생성되어 있어야 함 ~~ 필요한 쿼리 입력 ~~ SPOOL OFF // 저장 종료 HOST // SQL PLUS를 종료하지 않고 잠시 cmd(운영체재)로 빠져 나갑니다. SQL PLUS로 돌아가고 싶으면 cmd 창에서 EXIT를 입력하면 됩니다. NOTEPAD C:\querydump\query.lst // dump한 파일을 메모장으로 엽니다. EXIT // SQL PLUS로 되돌아 옵니다.

Database/Oracle 2019.11.15

[Oracle] imp.exe, exp.exe를 이용한 Oracle 백업/복원

imp.exe, exp.exe를 이용한 Oracle 백업/복원 방법 입니다. cmd창으로 진행 하지만 오라클 파일 안에 들어있는 imp.exe, exp.exe 프로그램을 이용한 백업 입니다. imp.exe, exp.exe 프로그램을 Oracle XE 18c 기준으로 C:\app\(사용자명)\product\18.0.0\dbhomeXE\bin 에서 확인이 가능 합니다. 아래의 예시는 참고용이며, cmd창에서 아래 명령어를 참고하여 백업/복원을 진행하시면 됩니다. 1. 관리자(SYSTEM) 계정으로 전체 데이터 베이스 백업 exp userid=SYSTEM/패스워드 FULL=y FILE=백업할경로및파일명 예) exp userid=SYSTEM/패스워드 FULL=y FILE=C:\backup\db.dump 2. 관..

Database/Oracle 2019.11.13

[Oracle] 테이블명 대소문자, 띄어쓰기 사용 방법

아래와 같은 쿼리를 실행하게 되면 대소문자를 혼합하여 입력 하였으나 모두 대문자로 테이블이 생성되는 현상이 발생 합니다. CREATE TABLE myTest (id CHAR(10)); 또는 CREATE TABLE my Test (id CHAR(10)); 를 입력하게 될 경우 my test 부분에서 띄어쓰기로 인해 쿼리 형식에 벗어난것으로 인식하여 ORA-00922 에러가 발생할 수 있습니다. Oracle 테이블 대소문자, 띄어쓰기 사용 방법은 매우 간단한데, 테이블명에 ""만 넣어주면 됩니다. CREATE TABLE "myTest" (id CHAR(10)); CREATE TABLE "my Test" (id CHAR(10)); 위와 같이 ""안에 테이블명을 입력할 경우 대소문자가 구분되고, 띄어쓰기를 사용..

Database/Oracle 2019.11.12