테이블에 데이터를 입력하다 보면 NULL값이 발생할 수 있다.예를들면 학생 테이블에서 학생이 전화번호가 없다거나 이메일이 없다거나 하는 경우가 되겠다. 그러면 데이터가 아래와 같이 L자 모양으로 생성되는데 이렇게 생성된 데이터는 비용이 많이 발생된다.어떻게 하면 NULL값을 최소화 시킬 수 있을까? 데이터를 따로 관리하는 방법이 있다. 이를 데이터 정규화 라고 한다.위 그림을 보면 가장 첫번째 테이블에서는 학생의 전화번호와 이메일이 빠진 NULL값이 들어간 부분이 보인다. 이렇게 NULL값이 발생하게 되는 필드만 기본키와 함께 분류하여 위와같이 기타1,2등의 새로운 테이블로 따로 분류하게 되면, 데이터를 생성및 관리하는데 필요한 비용도 줄어들고 테이블 자체도 가벼워진다.
1. SQL 기초관계형 데이터베이스를 생성하고, 테이블을 만들고, 데이터를 입력 및 삭제하거나 수정할 때 사용하는 언어를 SQL(structured query language)이라고 한다. SQL을 알아야 관계형 데이터베이스를 사용할 수 있는데 여기서는 SQL의 기초적인 내용만 다룬다.데이터베이스 관련 SQL먼저 데이터베이스의 생성, 삭제, 조회, 사용과 관련된 SQL을 살펴보자. SQL의 각 문장은 C언어처럼 세미콜론(;)으로 끝나야한다. SQL은 특별히 지정하지 않으면 기본적으로 대문자, 소문자를 구별하지 않는다.1) 데이터베이스 보기 : 기존에 있는 데이터베이스의 목록을 출력한다.show databases;2) 데이터베이스 생성 : 새로운 데이터베이스를 생성한다.create database 데이터베..
데이터베이스는 데이터를 모아 놓은것을 말한다. 그럼 아무 상관 없는 데이터를 모아 놓기만 하면 데이터베이스 인가. 그렇지는 않다. 서로 관련성을 가진 데이터들을 데이터 간의 중복성을 최소화 해서 체계적으로 모아 놓은것이 바로 데이터베이스 이다. 데이터베이스는 내부적으로 어떤 체계를 가지고 어떻게 구성하는가에 따라 몇가지 형태로 나뉜다. 그중 현재는 데이터를 테이블 구조로 구성하는 관계형 데이터베이스(RDB : relational database)가 널리 사용되고 있다. 관계형 데이터베이스를 중심으로 데이터베이스의 기본 개념을 알아보자. 1. 관계형 데이터베이스의 기본 개념관계형 데이터베이스는 데이터를 테이블(표)로 표현한다. 문서를 작성할 때 흔히 만드는 표를 생각하면 이해하기 쉽다. 관계형 데이터베이스..
사용자가 시스템에 접근하려면 사용자 계정이 반드시 필요하다. 사용자 계정은 시스템 관리자가 만들어주어야 하는 것이므로 관리자는 사용자 계정과 관련된 명령을 잘 알고 있어야 한다. 사용자 계정 관리에는 사용자 계정의 등록과 삭제, 기존에 등록된 계정 관련 정보 수정등의 업무가 포함된다. 이 절에서는 사용자 계정을 관리하는데 필요한 명령을 익힌다.1. 사용자 계정 생성하기사용자 계정을 생성할 때는 useradd나 adduser 명령을 사용한다. 둘 중 어느것을 사용해도 좋다. 여기서는 유닉스나 다른 리눅스 배포판과의 호환성을 고려하여 useradd 명령을 기준으로 설명한다. useradd 명령을 사용할 때 지정하는 옵션은 /etc/passwd 파일에 저장되는 각 항목에 해당한다.useradd기능 사용자 계정..
리눅스는 기본적으로 여러 명이 시스템을 사용하는 다중 사용자 시스템이므로 사용자를 구별하고 사용자에게 적절한 자원을 할당해주는 방법이 필요하다. 리눅스에서는 사용자 계정이 사용자를 구별하는 역할을 한다. 사용자 계정은 사용자가 시스템에 접근할 수 있는 유일한 방법이고, 시스템 관리자의 입장에서도 사용자의 접근 권한을 통제할 수 있는 중요한 수단이다. 따라서 사용자 계정 관리는 시스템 관리자의 주요 업무중 하나이다.사용자 계정관리에는 사용자가 적절한 권한을 가지고 시스템에 접근할 수 있도록 사용자 계정을 새로 만들거나 사용자 정보를 수정하고, 계정 사용 기한 만료 등의 이유로 사용자 계정을 삭제하는 업무 등이 있다. 리눅스에서 사용자 계정과 관련된 파일은 /etc/passwd, /etc/shadow, /e..
리눅스에서 소스를 컴파일하여 실행파일을 생성하는 방법에 대해서 알아보자. 1. C 컴파일러 확인하기사용자가 작성한 프로그램은 시스템이 이해할 수 있는 형태로 변환해야 실행할 수 있다. 시스템이 이해할 수 있는 형태란 기계어를 의미한다. 일반적으로 실행 파일이라 부르는 파일이 기계어로 된 파일이다. 사용자가 사용하는 고급언어(예 : C언어)를 기계어(실행파일)로 변환하는 과정을 컴파일이라 하며, 컴파일을 해주는 소프트웨어를 컴파일러라고 한다. 예를들어 C언어로 작성한 프로그램을 컴파일하려면 C컴파일러가 필요하다.먼저 시스템에 C 컴파일러가 설치되었는지 확인해보자. 리눅스의 C컴파일러는 gcc인데, 설치되지 않았다면 패키지 설치 명령으로 설치하면 된다.확인은 aptitude show gcc 명령을 이용해서 ..
아카이브에 대해서 알아볼텐데 기존에 하던 MFC 프로그래밍에서도 파일 저장및 열기를 하기 위해 자주 등장하던 용어이다.아카이브는 원래 '보관소, 저장소' 라는 뜻이지만 리눅스에서는 '파일을 묶어서 하나로 만든 것' 이란 의미로 사용된다. 파일과 디렉터리를 하나의 아카이브 파일로 만드는 방법과 파일을 압축하는 방법을 살펴본다. 1. 파일 아카이브tar(tape archive)은 원래 여러 파일이나 디렉터리를 묶어서 만든 마그네틱 테이프와 같은 이동식 저장 장치에 보관하기 위해 사용하는 명령이었다. 현재는 다른 시스템과 파일을 주고 받거나, 백업하기 위해 여러 파일이나 디렉터리를 하나의 아카이브 파일로 생성하거나, 기존 아카이브에서 파일을 추출하는데 사용한다. tar 명령의 기본 형식은 다음과 같다.기능 파..
우분투에서 패키지를 설치하는데는 APT 명령을 사용하는 방법, dpkg 명령을 사용하는 방법, aptitude 명령을 사용하는 방법이 있다. 또한 명령을 사용하지 않고 우분투 소프트웨어 센터에서 패키지를 선택하여 설치할 수도 있다.간략하게 APT명령으로 패키지를 설치하는 방법에 대해서만 알아보겠다.APT 에는 여러가지 명령이 있지만 그중 가장 자주쓰이는 apt-get 명령에 대해서 알아보자.apt-get 명령을 사용하면 패키지 저장소를 업데이트 하고 패키지를 설치하거나 제거할 수 있다.기능 패키지를 관리한다.형식 apt-get [옵션] 서브명령옵션 -d : 패키지를 내려받기만 한다. -f : 의존성이 깨진 패키지를 수정하려고 시도한다. -h : 간단한 도움말을 출력한다.서브 명령 update : 패키지 ..
시스템을 사용하다 보면 주기적으로 반복해야 하는 작업이 있다. 예를 들어 매주 백업을 받거나, 매일 아침 시스템의 상태를 자동으로 확인하여 정해진 시간에 관리자에게 메일로 보내는 것 등이다. 이럴 때 작업 예약을 사용하면 잊지않고 필요한 작업을 실행하고 효율적으로 업무를 처리할 수 있다. 정해진 시간에 반복 실행지정 시간이 되면 반복적으로 실행하도록 설정하는 crontab 명령을 알아보자기능 사용자의 crontab 파일을 관리한다.형식 crontab [-u 사용자 ID][옵션][파일 이름]옵션 -e : 사용자의 crontab 파일을 편집한다. -l : crontab 파일의 목록을 출력한다. -r : crontab 파일을 삭제한다. crontab 파일 형식crontab 명령으로 관리하는 파일은 사용자별로 ..
1. 포그라운드 작업과 백그라운드 작업사용자가 터미널에서 작업할 때 보통의 경우 한번에 하나의 프로세스만 실행할 수 있다. 즉, 어떤 명령을 실행하면 명령이 끝날 때까지 기다려야 다시 터미널을 사용할 수 있는 것이다. 그런데 사용자가 어떤 프로세스를 실행하면서 동시에 다른 프로세스를 실행해야 할 때가 있다. 작업제어 도구는 이렇게 한 터미널에서 동시에 여러 프로세스를 실행하고 관리하기 위해 개발되었다.포그라운드 작업터미널에서 작업할 때 일반적으로 사용자가 명령을 입력하면 셸은 사용자가 입력한 명령을 해석하여 실행하고 그 결과를 화면에 출력한다. 그러면 사용자는 화면에 출력된 결과를 보고 다시 명령을 입력하는 대화식으로 작업을 수행한다. 이렇게 사용자가 입력한 명령이 실행되어 결과가 출력될때 까지 기다려야..
- Total
- Today
- Yesterday
- 유즈케이스
- 스레드
- 자료구조
- C++
- 티그널
- 악보
- 쓰레드
- 리눅스
- 터미널
- 라즈베리파이
- 티라노 시그널
- 파일
- Sort
- 프로세스
- 소켓 프로그래밍
- 액터
- socket
- 정렬
- MFC
- 파이썬
- 데이터베이스
- 소켓
- UML
- 클라이언트
- 안드로이드
- 파이썬예제
- C/C++
- C
- 클래스
- 디렉터리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |