논리적 데이터 모델링

 

Entity -> Table

Attribute -> Column

Relation -> PK, FK

 

author

id int (NN) // NN -> Not Null

name varchar(15) (NN)

profile varchar(100) (NN)

created datetime (NN)

 

comment

id int (NN)

description text (NN)

created datetime(NN)

 

title

id int (NN)

title varchar(30) (NN)

description text (NN)

created datetime (NN)

 

dormant

author_id int (NN)

created datetime (NN)

 

혼자서도 잘 지내는 테이블은 부모 테이블

 

의존하는 테이블은 자식 테이블

 

 

'DATABASE > Database' 카테고리의 다른 글

공부(8)  (0) 2021.08.31
공부(7)  (0) 2021.08.31
공부(5)  (0) 2021.08.30
공부(4)  (0) 2021.08.30
공부(3)  (0) 2021.08.30

속성 정의

 

ER다이어그램에서 속성은 원을 사용

 

글 - 제목, 작성일, 본문

 

저자 - 이름, 자기소개, 가입일

 

댓글 - 본문, 작성일

 

식별자 지정

 

식별자가 될 수 있는 후보들은 후보키(candidate key) 이 중 선택한 식별자는 기본키(primary key)

 

기본키가 아닌 다른 키들은 대체키(alternate key)

 

두가지를 합쳐서 식별할 수 있는 키는 중복키(composite key)

 

기본키(primary key)는 밑줄을 쳐준다

 

엔티티간의 연결

 

외래키 = 포링키

 

ER다이어그램에서 relationship은 마름모 사용

 

작성, 소속

 

Cardinality

 

각 선생님은 한 반만 담임한다 / 각 반의 담임은 한명이다 이것은 1대1관계

 

각 저자는 여러 글을 작성한다 / 각 댓글은 하나의 저자만 존재한다 1대 다 관계 혹은 1 대 N

 

각 저자는 여러 글을 작성한다 / 각 글은 여러 저자가 존재한다 N 대 M 관계 혹은 다대다 관계

 

Optionality

 

저자는 댓글을 작성하지 않을수도 있다 저자에게 댓글은 옵션이 될 수 있다 Optional(달아도 되고 안달아도 되기 때문)

 

각 댓글은 반드시 저자가 있다 댓글에게 저자는 필수다 Mandatory

 

저자와 댓글은 1 대 N 관계이기도 하다

 

'DATABASE > Database' 카테고리의 다른 글

공부(7)  (0) 2021.08.31
공부(6)  (0) 2021.08.31
공부(4)  (0) 2021.08.30
공부(3)  (0) 2021.08.30
공부(2)  (0) 2021.08.29

업무파악 -> 개념적 데이터 모델링 -> 논리적 데이터 모델링 -> 물리적 데이터 모델링

 

개념적 데이터 모델링

 

ERD (Entity Relationship Diagram) - 1. 정보, 2. 그룹, 3. 관계 

 

관계형 데이터베이스에서는 내포관계를 허용하지 않습니다

 

거대 단일 테이블로 표현을 하면 중복이 발생합니다

 

표를 쪼개면 좋은 점은 속성들을 주제에 따라서 데이터를 그룹핑할 수 있습니다

 

만약 글에 대한 정보만 필요하다 그러면 글을 담고 있는 표만 필요하기 때문에 컴퓨터의 자원도 아낄 수 있습니다

 

중요한 특징 중 하나는 JOIN 

 

댓글 글 저자 - Entity

 

Entity는 후에 table로 전환되게 될 것임

 

글 - 제목, 생성일, 본문 으로 그룹핑 되어있음

 

이 구체적인 데이터를 Attribute(속성)

 

글과 저자는 쓴다 라는 관계를 가지고 있고 글과 댓글은 서로 소속 관계를 가지고 있다 저자와 댓글은 쓴다 라는 관계를 가지고 있다

 

이렇게 연관성을 표현해준것이 Relation

 

□Entity -> Table

○Attribute -> Column

◇Relation -> PK, FK

행 Tuple -> Row

 

기획서를 보면 가장 먼저 해야할 일은 Entity를 찾아내는 것

 

읽기보단 쓰기를 보면

 

저자, 글, 댓글 이 Entity로 적합

'DATABASE > Database' 카테고리의 다른 글

공부(6)  (0) 2021.08.31
공부(5)  (0) 2021.08.30
공부(3)  (0) 2021.08.30
공부(2)  (0) 2021.08.29
공부(1)  (0) 2021.08.29

INNER JOIN

 

SELECT * FROM TableA A INNER JOIN TableB B ON A.key = B.key

 

이므로

 

SELECT * FROM topic INNER JOIN author ON topic.author_id = author.aid

 

SELECT * FROM topic INNER JOIN author ON topic.author_id = author.aid INNER JOIN profile ON author.profile_id = profile.pid

 

이런식으로 작성해 줄 수 있다

 

왼쪽의 것만 할 때는 LEFT JOIN이고 SELECT * FROM TableA A LEFT JOIN TableB B ON A.key = B.key

 

FULL OUTER JOIN

 

SELECT * FROM topic FULL OUTER JOIN author ON topic.author_id = author.id

 

안타깝게도 많은 DB에서 FULL OUTER JOIN을 지원하지 않는다

 

그러므로 UNION을 써준다

 

중복되는 것을 지워주는 역할을 하는게 UNION DISTINCT

 

(SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.aid) UNION (SELECT * FROM topic RIGHT JOIN author ON topic.author_id =author.aid)

 

EXCLUSIVE JOIN

 

SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.aid WHERE author.aid is NULL

 

 

'DATABASE > Database' 카테고리의 다른 글

공부(6)  (0) 2021.08.31
공부(5)  (0) 2021.08.30
공부(4)  (0) 2021.08.30
공부(2)  (0) 2021.08.29
공부(1)  (0) 2021.08.29

+ Recent posts