일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Uipath
- SpringBoot
- spring
- API
- 자료구조
- mysql
- jsp
- Database
- 문자열
- Java
- 조건문
- Eclipse
- db
- 이클립스
- Oracle
- Array
- 상속
- Scanner
- View
- MVC
- string
- jquery
- Thymeleaf
- html
- JDBC
- Controller
- React
- rpa
- 배열
- Board
- Today
- Total
유정잉
16일차 [ 데이터베이스 DB, 프로젝트 모델링 ] 본문
[ 요구사항 정의서 ]
1. 학생은 아이디, 학과, 학생명, 이메일, 전화번호, 주소, 학년으로 되어있다.
2. 학과는 학과코드와 학과명으로 되어있다.
3. 한 학과에는 여러명의 학생이 있을 수 있다. 1:n 관계
4. 학생은 학과별로 관리한다.
5. 과목은 과목번호, 과목명, 교수로 되어있다.
6. 한 명의 학생은 여러 과목을 수강할 수 있고, 하나의 과목은 여러 학생이 들을 수 있다.
7. 학생은 수강한 과목을 들을 수 있다.
8. 학생이 수강을 할 때 수강할 과목수와 수강날짜를 가지고 있다.
9. ... 모든 경우를 다 적고 프로젝트를 시작하기 !! 엔티티(테이블)와 속성(아이디,학과)을 다 생각 하기 !!
[ 객체 관계 ]
학생 : 아이디, 학과, 학생명, 이메일, 전화번호, 주소, 학년
학과 : 학과코드와 학과명
과목 : 과목번호, 과목명, 교수
관계 : 3 , 6 , 7
수강 : 학생은 과목을 수강
관리 : 학생은 학과별로 관리됨
(컴공,간호,경영 중에 학생이 하나를 선탹할지, 복전으로 여러개를 선택할지 정하기)
n 학생 : 1 학과
n 학생 : 1 과대표 : 1 학과
n 학생 : n 수강 : n 과목
n 학생 : 1 단일전공 : 1 학과
[ 데이터베이스 모델링과 필수 용어 ] ☆★
- 현실세계에 존재하는 데이터를 DB로 옮기는 변환과정 ( 5단계 순서 알기 !!! )
1) 요구사항 분석 ( 요구사항정의서 작성 )
2) 개념적 모델링 ( ERD 그리기 ) - 객체들간의 대응관계 ( 매핑 ) ( drawio를 통한 스케치 )
3) 논리적 모델링 ( RM ) - pk, foreign key, 표형식, 테이블 형식으로 표현 관계 데이터 모델(RM) 많이 사용함.
데이터타입, 널 값 허용여부, 제약조건, 기본키, 후보키, 외래키, 세부적으로 결정하고 결과를 문서화 시켜야함.
4) 물리적 모델링 ( 테이블 정의서, PM ) - DB에서 설정
5) DBMS 구현
1) 요구사항 분석
1-1) 요구사항 분석에서 제일 먼저 엔티티(E) 찾기
- 학생은 학생아이디, 이름, 주소가 있다. -> 여기서 엔티티는 학생(명사) 일종의 테이블 !!!
- 학과에는 교수이름, 학과명이 있다. -> 여기서 엔티티는 학과(명사) JOIN작업을 통해 계속 추가 복잡해짐
- 성적에는 학과성적, 과목성적이 있다. -> 여기서 엔티티는 성적(명사)
1-2) 속성 찾기 ( Attribute )
1-3) 관계자찾기 ( Realation ) - 동사 찾기
- 학생이 그 교수의 과목을 수강 했다. -> 학생과 교수의 관계가 1:1 / 1:n / n:n 인지 찾기
(( Ex) 중고거래 사이트 ( 당근마켓 .. )을 만든다고 하면 고객들 면담과 설문조사를 통해 고객들의 니즈를 받아 1) 요구사항 분석 작업을 해줌. ( 예를들어 고객은 고객코드, 전화번호, 메일, 주소 ... 되어있다. 제품은 가격과 색상... 고객은 등록된 제품읗 한 번만 사용할수 있다.. 등등 ) ))
4) 물리적 모델링
4-1) 물리적 모델링 구현하는 순서
- Reverse : 쿼리문을 만들어 테이블을 생성하면 모델링 됨. ( DAtabase -> Reverse Engineer )
- Forward : 모델링을 하면 테이블이 생성되면서 쿼리문이 만들어짐.
[ 데이터베이스의 정의와 특징 ]
※데이터베이스 : ‘데이터의 집합’ • 여러 명의 사용자나 응용프로그램이 공유하는 데이터들 • 동시에 접근 가능해야 • ‘데이터의 저장 공간’ 자체
※ DBMS : 데이터베이스를 관리·운영하는 역할
[ DB/DBMS의 특징 ]
※ 데이터의 무결성 (Integrity) : 데이터베이스 안의 데이터는 오류가 없어야함. 제약 조건(Constrain)이라는 특성을 가짐
※ 데이터의 독립성 : 데이터베이스 크기 변경하거나 데이터 파일의 저장소 변경 –> 기존에 작성된 응용프로그램은 전혀 영향을 받지 않아야함
※ 보안 : 데이터베이스 안의 데이터에 데이터를 소유한 사람이나 데이터에 접근이 허가된 사람만 접근할 수 있어야함. 접근할 때도 사용자의 계정에 따라서 다른 권한 가짐
※ 데이터 중복의 최소화 : 동일한 데이터가 여러 개 중복되어 저장되는 것 방지
※ 응용프로그램 제작 및 수정이 쉬워짐 : 통일된 방식으로 응용프로그램 작성 가능, 유지보수 또한 쉬워짐
※ 데이터의 안전성 향상 : 대부분의 DBMS가 제공하는 백업·복원 기능 이용 / 데이터가 깨지는 문제가 발생할 경우 원상으로 복원 , 복구하는 방 법이 명확해짐
[ DBMS를 사용하는 이유 ]
- 원래 초창기에는 수기로 작성 오프라인 관리를 해왔음.
수기 - File System ( 데이터를 파일에 관리 ex 엑셀, 메모장 -> 데이터 조작 및 관리가 굉장히 힘든 단점이 있었음)
그래서 DBMS를 통해 조작 및 관리를 해오기 시작 !
- SQL로 데이터를 CRUD 할 수 있다. ( C - Create, R - Read, U - Update, D - Delete )
[ 데이터베이스의 발전 ]
※ 데이터베이스 관리시스템 : 파일시스템의 단점 보완 • 대량의 데이터를 보다 효율적으로 관리하고 운영하기 위해 사용 DBMS - DataBase Management System • 데이터의 집합인 ‘데이터베이스’ 를 잘 관리하고 운영하기 위한 시 스템 또는 소프트웨어
※ SQL( Structured Query Language) : DBMS에 데이터 구축/관리/활용 위해서 사용되는 언어 • DBMS를 통해 중요한 정보들을 입력, 관리, 추출
[ DBMS 분류 ]
※ 계층형 DBMS : (실무에서 거의 사용하지 않음)처음으로 나온 DBMS 개념 - 1960년대에 시작 • 각 계층은 트리Tree 형태, 1:N 관계 • 문제점 – 처음 구축한 이후 그 구조를 변경하기가 상당히 까다로움 – 주어진 상태에서의 검색은 상당히 빠름 – 접근 유연성 부족해서 임의의 검색에는 어려움
※ 망형 DBMS : (실무에서 거의 사용하지 않음) 계층형 DBMS의 문제점을 개선하기 위해 1970년대에 시작 • 1:1,1:N, N:M(다대다) 관계 지원 - 효과적이고 빠른 데이터 추출 • 복잡한 내부 포인터 사용 – 프로그래머가 이 모든 구조를 이해해야만 프로그램의 작성 가능
※ 관계형 DBMS (Relational DBMS) ☆★ : 1969년 E.F.Codd라는 학자가 수학 모델에 근거해 고안 / 데이터베이스는 테이블Table이라 불리는 최소 단위로 구성 / 이 테이블은 하나 이상의 열로 구성
▷ 장점 : 다른 DBMS에 비해 업무가 변화될 경우 쉽게 변화에 순응 / 유지보수 측면에서도 편리 / 대용량 데이터의 관리와 데이터 무결성Integration보장
▷ 단점 : 시스템 자원을 많이 차지해 시스템이 전반적으로 느려지는 것 – 하드웨어 발전되어 해결
[ 정보시스템 구축 절차 요약 ] ☆★
- 분석, 설계, 구현, 테스트, 유지보수의 5가지 단계 -> ( 제일 중요한 단계 분석과 설계 )
※ 분석 : 구현하고자 하는 프로젝트의 가장 첫 번째 단계 • 시스템 분석 또는 요구사항 분석이라고 불림 • 요구사항 분석은 현재 우리가 ‘무엇을(What)’ 할 것인지 결정 • 사용자의 인터뷰와 업무 조사 등을 수행 • 프로젝트의 첫 단추를 끼우는 중요한 단계 • 분석의 결과로 많은 문서 작성
※ 설계 : 시스템 설계 또는 프로그램 설계 • 우리가 구축하고자 하는 시스템을 ‘어떻게(How)’ 할 것인지 결정 • 대부분의 프로젝트에서 분석과 설계의 과정이 전체 공정의 50% 이 상 차지
※ 데이터베이스 모델링 : 현실세계에서 사용되는 데이터를 MySQL에 어떻게 옮겨 놓을 것인 지를 결정하는 과정 • 저장할 정보는 테이블(Table)이라는 형식에 맞춰 저장
※ 데이터 : 하나하나의 단편적인 정보 • 정보는 있으나 아직 체계화 되지 못한 상태
※ 테이블 : 데이터를 입력하기 위해, 표 형태로 표현한 것 • Ex) 회원 정보 테이블, 제품 정보 테이블
※ 데이터베이스(DB) : 테이블이 저장되는 저장소 • 각 데이터베이스는 서로 다른 고유한 이름을 가지고 있음
※ DBMS (DataBase Management System) : 데이터베이스를 관리하는 시스템 또는 소프트웨어
※ 열(=컬럼=필드) : 각 테이블은 열로 구성 • 회원 테이블의 경우에는 아이디, 회원 이름, 주소 등 3개의 열로 구 성
※ 열 이름 : 각 열을 구분하기 위한 이름 • 열 이름은 각 테이블 내에서는 중복되지 않고, 고유해야 함
※ 데이터 형식 : 열의 데이터 형식 16/17 • 테이블을 생성할 때 열 이름과 함께 지정
※ 기본 키 (Primary Key) 열 : 기본 키(또는 주 키) 열은 각 행을 구분하는 유일한 열이다. 중복되어서는 안되며, 비어 있어서도 안 된다. 각 테이블에는 기본 키가 하나만 지정
※ 외래 키(Foreign Key) 필드 : 두 테이블의 관계를 맺어주는 키 • 4장 이후 설명
※ SQL (Structured Query Language) : 구조화된 질의 언어 • 사람과 DBMS가 소통하기 위한 말(언어) • 6, 7장에서 자세히 다룸
[ 프로젝트 (Project) ]
- ‘현실세계의 업무를 컴퓨터 시스템으로 옮겨놓는 일련의 과정’
- ‘대규모의 프로그램을 작성하기 위한 전체 과정’ • Ex) 집 짓기의 경우 초가집 목조건물, 수 십층 이상의 건물
- '소프트웨어 개발 방법론’의 대두
※ 폭포수 모델 (Waterfall Model)
- 가장 오래되고 전통적으로 사용되는 소프트웨어 개발 모델이다. 폭포가 떨어지듯이 각 단계가 끝나면 다음 단계로 진행
▷장점 : 각 단계가 명확히 구분되어 프로젝트의 진행 단계가 명확해짐
▷단점 : 문제점이 발생될 경우 다시 앞 단계로 거슬러 올라가기가 어렵다. 문제점이 대부분 프로그램 구현 단계나 테스트 단계에서 발생한다. 해결은 업무 분석단계에서 다시 시작 -> 업무 분석과 시스템 설계에 50% 이상 할당
[ 개념 모델링을 할때 사용하는 다이어그램 사이트 - 1 ]
Flowchart Maker & Online Diagram Software
Flowchart Maker and Online Diagram Software draw.io is free online diagram software. You can use it as a flowchart maker, network diagram software, to create UML online, as an ER diagram tool, to design database schema, to build BPMN online, as a circuit d
app.diagrams.net
( 주로 ㅁ 엔티티 ㅇ 속성 | 관계 )
[ 개념 모델링을 할때 사용하는 다이어그램 사이트 - 2 ]
ERDCloud
Draw ERD with your team members. All states are shared in real time. And it's FREE. Database modeling tool.
www.erdcloud.com
'네이버 클라우드 부트캠프 > 복습 정리' 카테고리의 다른 글
18일차 MySQL [ select, where, join, group order 함수 등 ] (4) | 2024.03.15 |
---|---|
17일차 MySQL [ 이론 ] ( select..from, join ) (3) | 2024.03.14 |
15일차 [ java 총 정리, 면접 ] (0) | 2024.03.12 |
14일차 Java [ 네트워크 입출력 ] (0) | 2024.03.11 |
13일차 Java [ 데이터 입출력 ] (2) | 2024.03.08 |