데이터베이스와 SQL

rekv·2024년 11월 27일

BEYOND SW CAMP

목록 보기
7/30
일수일자교과목내용편성시간
624/11/27기반기술Database8

데이터베이스

파일 시스템
: 하드 디스크의 어디(특정 주소)에 어떤 데이터를 저장했는지 관리해주는 것
데이터베이스
: (파일 시스템에 저장되는) 파일

+) 바인드 주소 : 서버 컴퓨터를 찾아올 때 바인드 주소에 해당하는 주소로 찾아오지 않으면 포트로 연결 못함

실습

  1. 관리자 로그인

  2. IP 설정

  3. IP 설정 적용

  4. 레포지토리 목록 갱신
    apt update

  5. mariadb 설치
    apt install -y mariadb-server

  6. mariadb 설정
    vi /etc/mysql/mariadb.conf.d/50-server.cnf
    27번 라인에 있는 설정을 다음처럼 변경
    bind-address = 0.0.0.0

  7. mariadb 실행
    systemctl restart mariadb

  8. mariadb 실행 확인
    systemctl status mariadb
    apt install -y net-tools
    netstat -anlp | grep :3306

  9. DB 서버 초기화
    mysql_secure_installation
    엔터
    엔터
    엔터
    qwer1234
    qwer1234
    엔터
    엔터
    엔터
    엔터

  10. 데이터 베이스 생성
    mariadb -u root -p # 클라이언트 프로그램을 실행하는 것
    qwer1234
    CREATE DATABASE 이니셜;
    exit

  11. DB 파일 확인
    ls -al /var/lib/mysql/ 명령어로 확인하면 위에서 CREATE DATABASE [이니셜]; 명령어로 만든 폴더가 있다.

  12. 원격 접속용 사용자 추가
    mariadb -u root -p
    CREATE USER '이니셜'@'%' IDENTIFIED BY 'qwer1234';
    GRANT ALL PRIVILEGES ON 이니셜.* TO '이니셜'@'%';
    FLUSH PRIVILEGES;

  13. 윈도우에서 클라이언트 프로그램 실행
    workbench 프로그램 실행
    + 버튼으로 연결 추가
    Connection Name : 아무거나
    Hostname : 서버 IP
    Port : 3306 #mariadb 서버가 사용하는 번호
    Username : 이니셜 #11번에서 생성한 계정의 이름

    OK 눌러서 설정을 저장

    생성된 설정을 더블클릭하면 서버에 접속 가능

    -> 이니셜에 대한 파일을 이니셜라는 사용자에게 모든 권한을 주었음

ERD

요구사항 분석
한 문장으로 적기 (ex. 학생은 강의를 수강한다.)
대부분 명사가 개체로 뽑히고, 동사가 관계로 뽑힌다.

선택적 참여, 필수적 참여는 그리 중요하지 않지만 관계 (1:1, 1:N, M:N)는 중요하다 (나중에 코드에 영향을 미침)

실습

회원은 상품을 구매할 수 있다.
회원은 상품을 조회할 수 있다. (DB에 저정할 필요는 없으므로 요구사항이 빠짐)
ㄴ 조회수를 저장한다면 들어갈 수도 있다.
회원은 상품을 등록할 수 있다. -> CRUD이므로 관계로 맺지 않고 삭제
회원은 상품을 삭제할 수 있다. -> CRUD이므로 관계로 맺지 않고 삭제

  • MySql Workbemch->File->New Model로 들어가면 ERD를 그릴 수 있다.

+) 1:n 관계에서는 n을 먼저 클릭한 후 1을 클릭해주기

관계 데이터 모델

릴레이션 : 정보 저장의 형태가 2차원 구조의 테이블
속성 : 테이블의 각 열
튜플 : 테이블의 한 행을 구성하는 속성들의 집합, 레코드라고도 부름
도메인 : 속성이 취할 수 있는 값들의 집합
기수 : 튜플의 수, Cardinality
차수 : 속성의 수, Degree

정규화

anomaly를 해결하기 위해 정규화를 수행한다.
anonaly: 데이터를 DB 테이블에 CUD(생성, 삽입, 삭제) 할 때 생기는 문제

실습

위의 표를 정규화해보자

  1. 제 1 정규형 적용 (원자값이 아닌 것 쪼개기)

  2. 제 2 정규형 (종속성 제거)

SQL

실습

(CREATE TABLE, ALTER, DROP 등 연습 예제 추가하기)

AUTO_INCREMENT
: 알아서 자동으로 1씩 증가(사용자는 자신이 몇 번째로 가입하는 회원인지 알 수 없으므로)
DEFALUT
: 사용자가 지정하지 않을 경우 기본으로 지정된 값이 들어간다.

  1. SQL 연습을 위한 sample 데이터 준비
    리눅스 컴퓨터에서
    wget http://192.0.0.100:10000/mysqlsampledatabase.sql
    mariadb -u root -p < mysqlsampledatabase.sql
    패스워드 입력
    mariadb -u root -p
    패스워드 입력
    GRANT ALL PRIVILEGES ON classicmodels.* TO '이니셜'@'%';
    FLUSH PRIVILEGES;
    윈도우 컴퓨터에서 워크벤치로 접속해서 classicmodels 데이터베이스가 보이는지 확인

0개의 댓글