| 일수 | 일자 | 교과목 | 내용 | 편성시간 |
|---|---|---|---|---|
| 6 | 24/11/27 | 기반기술 | Database | 8 |
파일 시스템
: 하드 디스크의 어디(특정 주소)에 어떤 데이터를 저장했는지 관리해주는 것
데이터베이스
: (파일 시스템에 저장되는) 파일
+) 바인드 주소 : 서버 컴퓨터를 찾아올 때 바인드 주소에 해당하는 주소로 찾아오지 않으면 포트로 연결 못함
관리자 로그인
IP 설정
IP 설정 적용
레포지토리 목록 갱신
apt update
mariadb 설치
apt install -y mariadb-server
mariadb 설정
vi /etc/mysql/mariadb.conf.d/50-server.cnf
27번 라인에 있는 설정을 다음처럼 변경
bind-address = 0.0.0.0
mariadb 실행
systemctl restart mariadb
mariadb 실행 확인
systemctl status mariadb
apt install -y net-tools
netstat -anlp | grep :3306
DB 서버 초기화
mysql_secure_installation
엔터
엔터
엔터
qwer1234
qwer1234
엔터
엔터
엔터
엔터
데이터 베이스 생성
mariadb -u root -p # 클라이언트 프로그램을 실행하는 것
qwer1234
CREATE DATABASE 이니셜;
exit
DB 파일 확인
ls -al /var/lib/mysql/ 명령어로 확인하면 위에서 CREATE DATABASE [이니셜]; 명령어로 만든 폴더가 있다.

원격 접속용 사용자 추가
mariadb -u root -p
CREATE USER '이니셜'@'%' IDENTIFIED BY 'qwer1234';
GRANT ALL PRIVILEGES ON 이니셜.* TO '이니셜'@'%';
FLUSH PRIVILEGES;
윈도우에서 클라이언트 프로그램 실행
workbench 프로그램 실행
+ 버튼으로 연결 추가
Connection Name : 아무거나
Hostname : 서버 IP
Port : 3306 #mariadb 서버가 사용하는 번호
Username : 이니셜 #11번에서 생성한 계정의 이름
OK 눌러서 설정을 저장
생성된 설정을 더블클릭하면 서버에 접속 가능
-> 이니셜에 대한 파일을 이니셜라는 사용자에게 모든 권한을 주었음
요구사항 분석
한 문장으로 적기 (ex. 학생은 강의를 수강한다.)
대부분 명사가 개체로 뽑히고, 동사가 관계로 뽑힌다.
선택적 참여, 필수적 참여는 그리 중요하지 않지만 관계 (1:1, 1:N, M:N)는 중요하다 (나중에 코드에 영향을 미침)
회원은 상품을 구매할 수 있다.
회원은 상품을 조회할 수 있다. (DB에 저정할 필요는 없으므로 요구사항이 빠짐)
ㄴ 조회수를 저장한다면 들어갈 수도 있다.
회원은 상품을 등록할 수 있다. -> CRUD이므로 관계로 맺지 않고 삭제
회원은 상품을 삭제할 수 있다. -> CRUD이므로 관계로 맺지 않고 삭제
+)
1:n 관계에서는 n을 먼저 클릭한 후 1을 클릭해주기
릴레이션 : 정보 저장의 형태가 2차원 구조의 테이블
속성 : 테이블의 각 열
튜플 : 테이블의 한 행을 구성하는 속성들의 집합, 레코드라고도 부름
도메인 : 속성이 취할 수 있는 값들의 집합
기수 : 튜플의 수, Cardinality
차수 : 속성의 수, Degree
anomaly를 해결하기 위해 정규화를 수행한다.
anonaly: 데이터를 DB 테이블에 CUD(생성, 삽입, 삭제) 할 때 생기는 문제

위의 표를 정규화해보자
제 1 정규형 적용 (원자값이 아닌 것 쪼개기)

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

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