항해99

[항해99] WIL 04 CORS,관계형 데이터 모델링

밍튜 2022. 8. 15. 00:15
항해를 하면서 느낀점, 배운점

이번주에 겨우겨우 게시판 CRUD만드는 방법과 코드의 흐름을 알아냈다.

먼가 그동안 이해안가면서 공부했던것들이 쌓여서 막힌게 뚫리는 이상한 경험을 했다.

지금 뭔가 해낸것같은 이 느낌... 자꾸 더배워서 막히는걸 계속 뚫어내고싶은 기분좋은 경험을 계속해보고싶다.

 

S3도 기능구현을...했다고 했지만 코드 복붙한거라 다시 하나하나 코드를 읽으면서 복기해야겠다.

이번주에는 이것저것 공부했는데

 

어제랑 엊그제 til을 안썼기때문에 wil에 이번주간에 배운 데이터 모델링에 대해 적어본다.

 


관계형 데이터 모델링

Model?

-> 어떤 목적을 가지고 진짜를 모방한것

 

정보를 데이터베이스의 표에 담는것

 

담기만하면 엄청난 양의 데이터를 다룰수 있게됨

 

Data Modeling -> 복잡한 현실을 컴퓨터로 옴기는. 복잡한 자료도 데이터로 담을수 있게됨

 

  1. 전체 흐름
  • 업무파악 

의뢰한 사람이 어떤것을 실체화 시키려는지 알아보는것

 

  • 개념적 데이터 모델링

ERD을 만드는 과정

 

  • 논리적 데이터 모델링

관계형 데이터베이스 페러다임에 맞는 표로 전환하는 작업

 

  • 물리적 데이터 모델링

코드를 작성해서 실제 표를 만드는 작업

 

<업무파악>

  • 업무파악 : 컴퓨터 자체문제 해결, 현실의 문제 해결

 해결하려는 문제를 컴퓨터라는 안똑똑한 기계에 시킬수있어야 함

복면복창 => 서로의 생각을 동기화 하고 확인하는 작업

말을 불신해서 말의 신뢰성을 높이는 테크닉 = >기획서 작성!


 

 

<개념적 데이터 모델링>

  • 우리가 파악한 업무에서 개념을 뽑아내는 과정

 

  • 개념적 모델링을 잘하면 논리적, 물리적 데이터모델링을 잘할수있음

1)필터  2)언어

Entity Relationship Diagram

erd는 현실을 세개의 관점에서 바라볼수 있는 파인더를 제공

1.정보 2.그룹 3.관계

 

현실로 부터 개념을 인식하는 도구이면서 그것을 다른사람도 알아볼수 있게 만들어주는 도구

 

매우쉽게 표로전환 가능

 

Entity = table =디렉토리의 이름 ex)저자 , 글 ,  댓글

Attribute = column =구체적 속성 ex) 본문, 제목, 생성일

Relation = PK, FK = 연관성

Tuple = Row

 

엔티티의 정의

User Interface  <=> Database 는 서로 원인과 결과의 순차적 관계가 있다

 

속성 정의

  • Entity = 글 
  • Attribute = 제목, 본문, 생성일       =>Entity와 Attribute의 관계를 설정한다

 

식별자 정의

  • 엔티티의 속성중에서 대표선수를 뽑는일. 즉 유일한 식별자로 대표선수를 지정해야됨
  • 국가는 국민을 주민번호로 , 웹사이트는 도메인 주소로 웹페이지를

 

  • attribute중에 식별자가 될수있는게 없으면 Primary Key를 만들어주면된다

 

엔티티간의 연결

  • PK : 엔티티안의 유일무이한 키
  • RK : 참조키, 다른 엔티티의 유일무이한 키
  • 저자는 글과 댓글을 ‘작성’ 관계
  • 글과 댓글은 ‘소속’ 관계

Cardinality : 기수(1~9)

  • 담임 : 반 = 1:1관계
  • 저자 : 댓글 = 1:N 관계
  • 저자 : 글 = N : M관계

 

 

Optionality : 있을수도있고 없을수도있고

  • 저자는 댓글을 작성할수도 안할수도있다. 저자 : 댓글(Optional)
  • 각 댓글은 반드시 저자가 있다. 저자(Mandatory) : 댓글

<생활코딩이 만든 데이터모델링 연습하기 좋은 사이트>

http://erd.yah.ac


<논리적 데이터 모델링>

  • 개념적데이터모델링이 잘되있으면 논리적 데이터모델링은 꽤 기계적임
  • Mapping Rule : ERD를 통해 표현한 내용을 관계형데이터베이스에 맞는 형식으로 전환하는 형식
  • Entity => Table
  • Attribute => Column
  • Relation => PK, FK

 

테이블과 컬럼 생성

  1. 엔티티를 테이블로 바꾸기
  • FK가 없는 테이블부터 만들기

 

  1. Relationship -> PK ,FK로 연결
  • Cardinality 생각해서 만들기

 

CORS란?

Cross Origin Resource Sharing : 다른 출처의 자원을 공유한다라는 뜻

추가 HTTP header를 사용해서 한 출처에서 실행하는 애플리케이션이 다른 출처의 선택한 자원에 접근할수있는 권한을 부여하도록 브라우저에 알려주는 체제


CORS 접근제어 시나리오

 

1. 단순요청(Simple Request)

  • preflight 요청없이 바로바로 요청한다
  • GET, POST, HEAD 중 한가지 메서드를 사용해야한다.
  • Content Type을 아래 3가지중 하나를 사용해야한다

- application/x-www-form-urlencoded

- multipart/form-data

-text/plain

  • 헤더는 Accept,Accept-Language, Content-Language, Content-Type만 허용

2. 프리플라이트 요청(Preflight Request)

3. 인증정보 포함 요청(Credentialed Request)

 


CORS는 한번 공부해서 이해가 잘안가서 다시공부해야겠다