DBMS/λ°μ΄ν„°λ² μ΄μŠ€ 이둠

πŸ“‹ 데이터 λͺ¨λΈλ§ κ°œλ… & ERD λ‹€μ΄μ–΄κ·Έλž¨ μž‘μ„± πŸ’― 총정리

인파_ 2021. 11. 8. 20:00

ERD-λ‹€μ΄μ–΄κ·Έλž¨-κ·Έλ¦¬λŠ”λ²•

데이터 λͺ¨λΈλ§ μ΄λž€?

데이터 λͺ¨λΈλ§μ΄λž€ μ •λ³΄μ‹œμŠ€ν…œ κ΅¬μΆ•μ˜ λŒ€μƒμ΄ λ˜λŠ” 업무 λ‚΄μš©μ„ λΆ„μ„ν•˜μ—¬ μ΄ν•΄ν•˜κ³  μ•½μ†λœ ν‘œκΈ°λ²•μ— μ˜ν•΄ ν‘œν˜„ν•˜λŠ”κ±Έ μ˜λ―Έν•œλ‹€. 그리고 μ΄λ ‡κ²Œ λΆ„μ„λœ λͺ¨λΈμ„ 가지고 μ‹€μ œ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μƒμ„±ν•˜μ—¬ 개발 및 데이터 관리에 μ‚¬μš©λœλ‹€.

특히 데이터λ₯Ό μΆ”μƒν™”ν•œ 데이터 λͺ¨λΈμ€ λ°μ΄ν„°λ² μ΄μŠ€μ˜ 골격을 μ΄ν•΄ν•˜κ³  κ·Έ 이해λ₯Ό λ°”νƒ•μœΌλ‘œ SQLλ¬Έμž₯을 κΈ°λŠ₯κ³Ό μ„±λŠ₯적인 μΈ‘λ©΄μ—μ„œ 효율적으둜 μž‘μ„±ν•  수 있기 λ•Œλ¬Έμ—, 데이터 λͺ¨λΈλ§μ€ λ°μ΄ν„°λ² μ΄μŠ€ μ„€κ³„μ˜ ν•΅μ‹¬ 과정이기도 ν•˜λ‹€. 

데이터 λͺ¨λΈλ§


데이터 λͺ¨λΈλ§ μˆœμ„œ 절차

 

1. 업무 νŒŒμ•… (μš”κ΅¬μ‚¬ν•­ μˆ˜μ§‘ 및 뢄석)

업무 νŒŒμ•…μ€ μ–΄λ– ν•œ 업무λ₯Ό μ‹œμž‘ν•˜κΈ° 전에 ν•΄λ‹Ήν•˜λŠ” 업무에 λŒ€ν•΄μ„œ νŒŒμ•…ν•˜λŠ” 단계 이닀. 

λͺ¨λΈλ§μ— μ•žμ„œ κ°€μž₯ λ¨Όμ € ν•΄μ•Ό ν•  것은 μ–΄λ– ν•œ 업무λ₯Ό λ°μ΄ν„°ν™”ν•˜μ—¬ λͺ¨λΈλ§ ν•  것인지에 λŒ€ν•œ μš”κ΅¬μ‚¬ν•­ μˆ˜μ§‘μΌ 것이닀. μ—…λ¬΄νŒŒμ•…μ„ ν•˜κΈ° 쒋은 λ°©λ²•μœΌλ‘œλŠ” UIλ₯Ό 의뒰인과 ν•¨κ»˜ 확인해 λ‚˜μ•„κ°€λŠ” λŠ” 것이닀. 그리고 ꢁ극적으둜 λ§Œλ“€μ–΄μ•Ό ν•˜λŠ” 것이 무엇인지 μ‹¬λ„μžˆκ²Œ μ•Œμ•„λ³΄μ•„μ•Ό ν•œλ‹€.

이 ν¬μŠ€νŒ…μ—μ„  μš°λ¦¬κ°€ ν”νžˆ μ‚¬μš©ν•˜λŠ” κ²Œμ‹œνŒμ„ 예λ₯Ό 듀어보겠닀.

κ²Œμ‹œνŒ

 

2. κ°œλ…μ  데이터 λͺ¨λΈλ§

κ°œλ…μ  데이터 λͺ¨λΈλ§μ€ λ‚΄κ°€ ν•˜κ³ μž ν•˜λŠ” 일의 데이터 κ°„μ˜ 관계λ₯Ό κ΅¬μƒν•˜λŠ” 단계 이닀. 각 κ°œμ²΄λ“€κ³Ό κ·Έλ“€κ°„μ˜ 관계λ₯Ό λ°œκ²¬ν•˜κ³  ν‘œν˜„ν•˜κΈ° μœ„ν•΄ ERD λ‹€μ΄μ–΄κ·Έλž¨μ„ μƒμ„±ν•œλ‹€.

λ‹€μŒμ€ ν”Όν„° μ²Έ ν‘œκΈ°λ²•(Peter Chen Notation)으둜 ERD λ‹€μ΄μ–΄κ·Έλž¨μ„ κ΅¬μ„±ν•œ 그림이닀. κ·Έλ¦¬λŠ” 방법은 어렡지 μ•Šλ‹€. λ„ν˜•μ΄ μ˜λ―Έν•˜λŠ” λ°”λ₯Ό μ•Œκ³  ν™”μ‚΄ν‘œλ₯Ό 톡해 관계λ₯Ό ν‘œν˜„ν•˜κΈ°λ§Œ ν•˜λ©΄ λœλ‹€.

ERD-λ‹€μ΄μ–΄κ·Έλž¨-κ·Έλ¦¬λŠ”λ²•

업무 νŒŒμ•… λ‹¨κ³„μ—μ„œ κ²°μ •ν–ˆλ˜ κ²Œμ‹œνŒ 데이터 ꡬ상을 κ°œλ…μ  데이터 λͺ¨λΈλ§μœΌλ‘œ κ΅¬ν˜„ν•΄λ³Έ 것이닀. κ²Œμ‹œνŒμ—λŠ” λŒ€ν‘œμ μœΌλ‘œ κ²Œμ‹œνŒ 이용자의 νšŒμ› 정보, 둜그인 정보 그리고 κ²Œμ‹œνŒμ˜ κ²Œμ‹œκΈ€, λŒ“κΈ€μ΄ μžˆλ‹€.

ERD-λ‹€μ΄μ–΄κ·Έλž¨-κ·Έλ¦¬λŠ”λ²•

 

3. 논리적 데이터 λͺ¨λΈλ§

κ°œλ…μ μΈ 데이터 λͺ¨λΈμ΄ μ™„μ„±λ˜λ©΄, κ΅¬μ²΄ν™”λœ 업무 μ€‘μ‹¬μ˜ 데이터 λͺ¨λΈμ„ λ§Œλ“€μ–΄ λ‚΄λŠ”λ°, 이것을 논리적인 데이터 λͺ¨λΈλ§μ΄λΌκ³ ν•œλ‹€. 이 λ‹¨κ³„μ—μ„œ 업무에 λŒ€ν•œ Key, 속성, 관계등을 ν‘œμ‹œν•˜λ©°, μ •κ·œν™” ν™œλ™μ„ μˆ˜ν–‰ν•œλ‹€. μ •κ·œν™”λŠ” 데이터 λͺ¨λΈμ˜ 일관성을 ν™•λ³΄ν•˜κ³  쀑볡을 μ œκ±°ν•˜μ—¬ μ‹ λ’°μ„±μžˆλŠ” 데이터 ꡬ쑰λ₯Ό μ–»λŠ”λ° λͺ©μ μ΄ μžˆλ‹€.

μœ„μ—μ„œ ν”Όν„° μ²Έ ν‘œκΈ°λ²•μœΌλ‘œ κ΅¬ν˜„ν•œ κ°œλ…μ  ERD λ‹€μ΄μ–΄κ·Έλž¨μ„ 정보 곡학 ν‘œκΈ°λ²•μΈ ν…Œμ΄λΈ” ν˜•νƒœλ‘œ 재 ꡬ성 ν•œλ‹€.

μ΄λ•Œ λ‹¨μˆœνžˆ 좔상적인 λ°μ΄ν„°μ—μ„œ 보닀 ꡬ체화적인 λ°μ΄ν„°λ‘œ μž‘μ„±ν•œλ‹€. 예λ₯Ό λ“€μ–΄ νšŒμ›μ •λ³΄μ˜ 아이디, λΉ„λ°€λ²ˆν˜Έμ— 각 데이터 νƒ€μž…μ„ λͺ…μ‹œν•΄ μ£Όκ³  각 λ°μ΄ν„°κ°„μ˜ 관계λ₯Ό μ •λ°€ν•˜κ²Œ λ§Ίμ–΄μ£Όλ©° ν…Œμ΄λΈ”μ˜ ν‚€(key)λ₯Ό 지정해쀀닀.

ERD-λ‹€μ΄μ–΄κ·Έλž¨-κ·Έλ¦¬λŠ”λ²•-논리적
​1λŒ€ λ‹€ 관계λ₯Ό 1:* 둜 ν‘œν˜„ν–ˆλ‹€.

 

4. 물리적 데이터 λͺ¨λΈλ§

물리적 데이터 λͺ¨λΈλ§μ€ μ΅œμ’…μ μœΌλ‘œ 데이터λ₯Ό 관리할 λ°μ΄ν„° 베이슀λ₯Ό μ„ νƒν•˜κ³ , μ„ νƒν•œ 데이터 λ² μ΄μŠ€μ— μ‹€μ œ ν…Œμ΄λΈ”을 λ§Œλ“œλŠ” μž‘μ—… 을 λ§ν•œλ‹€. μ‹œκ°μ μΈ ꡬ쑰λ₯Ό λ§Œλ“€μ—ˆμœΌλ©΄ 그것을 μ‹€μ œλ‘œ SQL 코딩을 톡해 μ™„μ„±ν•˜λŠ” 단계라고 보면 λœλ‹€

물리적 데이터 λͺ¨λΈλ§

/* ν…Œμ΄λΈ” 생성 */

-- νšŒμ›μ •λ³΄
create table member_tbl ( 
  member_uid bigint primary key auto_increment,
  member_name varchar(45) unique not null,
  member_pwd varchar(45) not null,
  member_status boolean not null
);

-- λ‘œκ·ΈμΈκΈ°λ‘μ •λ³΄
create table login_info_tbl( 
  member_name varchar(45) not null,
  info_ip varchar(45) not null,
  info_date datetime not null,
  constraint fk_member_name foreign key (member_name) references member_tbl (member_name)
);

-- κ²Œμ‹œνŒ
create table board_tbl ( 
  board_uid bigint primary key auto_increment,
  member_name varchar(45) not null,
  board_title varchar(45) not null,
  board_date datetime not null,
  board_hit int not null,
  board_post varchar(5000) not null,
  constraint fk_member_name foreign key(member_name) references member_tbl(member_name)
);

-- κ²Œμ‹œνŒ ν’€ν…μŠ€νŠΈ 인덱슀 생성
create Fulltext index idx_title on board_tbl ( board_title );
create Fulltext index idx_post on board_tbl ( board_post );
-- show index from board_tbl ;

-- λŒ“κΈ€
create table reply_tbl ( 
  reply_uid bigint primary key auto_increment,
  board_uid bigint not null,
  member_name varchar(45) not null,
  reply_date datetime not null,
  reply_post varchar(1000) not null,
  foreign key(board_uid) references board_tbl(board_uid),
  foreign key(member_name) references member_tbl(member_name)
);

-- λŒ“κΈ€ ν’€ν…μŠ€νŠΈ 인덱슀 생성
create Fulltext index idx_reply on reply_tbl ( reply_post );

데이터 λͺ¨λΈλ§ 절차 정리

μ§€κΈˆκΉŒμ§€ μ•Œμ•„λ³΄μ•˜λ˜ 절차λ₯Ό κ°„λ‹¨ν•˜κ²Œ μš”μ•½ μ •λ¦¬ν•˜μžλ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

  1. 넀이버 κ²Œμ‹œνŒμ˜ 화면에 μ–΄λ– ν•œ 것듀이 ν•„μš”ν•œμ§€μ— λŒ€ν•œ κ°œλ…μ„ μž‘λŠ”κ²Œ μ—…λ¬΄νŒŒμ•… 단계 (μš”κ΅¬μ‚¬ν•­ μˆ˜μ§‘ 및 뢄석)
  2. 넀이버 κ²Œμ‹œνŒμ˜ 화면에 ν‘œν˜„λ˜λŠ” 데이터듀을 νŒŒμ•…ν•΄μ„œ 관계λ₯Ό μ„€μ •ν•˜λŠ”κ²Œ κ°œλ…μ  데이터 λͺ¨λΈλ§
  3. κ°œλ…μ  데이터 λͺ¨λΈλ§ ν•œ 것을 ν‘œλ‘œ λ§Œλ“œλŠ” 게 논리적 데이터 λͺ¨λΈλ§
  4. 이 일련의 과정을 μˆ˜ν–‰ν•œ 것을, μ‹€μ œ λ°μ΄ν„°λ² μ΄μŠ€ ν…Œμ΄λΈ”λ‘œ λ§Œλ“œλŠ” 게 물리적 데이터 λͺ¨λΈλ§

데이터 λͺ¨λΈλ§ 절차 정리


ERD (Entity Relationship Diagram) 그리기

ERD (Entity Relationship Diagram)λŠ” λ‹¨μ–΄μ—μ„œ μ˜λ―Έν•˜λŠ” κ·ΈλŒ€λ‘œ 'Entity κ°œμ²΄'와 'Relationship κ΄€κ³„'λ₯Ό μ€‘μ μ μœΌλ‘œ ν‘œμ‹œν•˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€ ꡬ쑰λ₯Ό ν•œ λˆˆμ— μ•Œμ•„λ³΄κΈ° μœ„ν•΄ κ·Έλ €λ†“λŠ” λ‹€μ΄μ–΄κ·Έλž¨μ΄λ‹€. 개체 관계도라고도 뢈리며 μš”κ΅¬λΆ„μ„μ‚¬ν•­μ—μ„œ 얻은 엔티티와 μ†μ„±λ“€μ˜ 관계λ₯Ό 그림으둜 ν‘œν˜„ν•œ 것이닀.


ERD μ—”ν‹°ν‹° ν‘œκΈ°λ²•

ERD

 

μ—”ν‹°ν‹°(Entity) πŸ“„

  • μ—”ν‹°ν‹°λŠ” μ •μ˜ κ°€λŠ₯ν•œ 사물 λ˜λŠ” κ°œλ…μ„ μ˜λ―Έν•œλ‹€.
  • μ‚¬λžŒλ„ 될수 있으며 ν”„λ‘œν•„μ΄λ‚˜ λ„μ„œμ •λ³΄μ™€ 같은 λ¬΄ν˜•μ˜ 정보도 데이터화가 κ°€λŠ₯ν•˜λ‹€.
  • λ°μ΄ν„°λ² μ΄μŠ€μ˜ ν…Œμ΄λΈ”μ΄ μ—”ν‹°ν‹°λ‘œ ν‘œν˜„λœλ‹€κ³  보면 λœλ‹€.
  • 예λ₯Όλ“€μ–΄ 학생 EntityλŠ” μ•„λž˜μ˜ κ·Έλ¦Όκ³Ό 같이 ν‘œν˜„λœλ‹€.

Entity

 

μ—”ν‹°ν‹° 속성(Attribute) πŸ“‘

  • μ—”ν‹°ν‹°μ—λŠ” κ°œμ²΄κ°€ κ°–κ³ μžˆλŠ” 속성(Attribute)을 ν¬ν•¨ν•œλ‹€.
  • 예λ₯Όλ“€μ–΄ 학생 엔티티라면, ν•™λ²ˆ, 이름, μ£Όμ†Œ, 전곡 ..λ“± 속성듀이 μžˆλ‹€.
  • λ°μ΄ν„°λ² μ΄μŠ€μ˜ ν…Œμ΄λΈ”μ˜ 각 ν•„λ“œ(컬럼)듀이 μ—”ν‹°ν‹° 속성이라고 보면 λœλ‹€.

Attribute

 

μ—”ν‹°ν‹° 도메인(Domain) πŸ“

  • 도메인은 μ†μ„±μ˜ κ°’, νƒ€μž…, μ œμ•½μ‚¬ν•­ 등에 λŒ€ν•œ κ°‘μ˜ λ²”μœ„λ₯Ό ν‘œν˜„ν•˜λŠ” 것이닀.
  • μ‚¬μš©μž κΈ°ν˜Έμ— 따라 속성 νƒ€μž…λ§Œ κ·Έλ¦΄μˆ˜λ„ 있고, 가독성을 μœ„ν•΄μ„œ μƒλž΅ν•  μˆ˜λ„ μžˆλ‹€.
  • μ΄λ•Œ 데이터 νƒ€μž…μ„ λͺ…μ‹œν• λ•Œ, λ°μ΄ν„°λ² μ΄μŠ€κ°€ μ§€μ›ν•˜λŠ” νƒ€μž…μ— 맞게 ν•΄μ•Όν•œλ‹€.

Domain

 

μ—”ν‹°ν‹° λΆ„λ₯˜ 🧾

  • μ—”ν‹°ν‹°λŠ” μ €μž₯ν•˜λŠ” 데이터 정보 μ£Όμ œμ— 따라 μ’…λ₯˜κ°€ λ‹€μ–‘ν•˜λ‹€.
  • 고객 정보같은 μ‹€μ œλ‘œ 물리적인 ν˜•νƒœλ‘œ μžˆλŠ” 정보와 ꡬ맀 이λ ₯같은 λ¬΄ν˜•μ μ΄κ³  κ°œλ…μ μΈ 정보가 μžˆλ‹€.
  • 이 μ—”ν‹°ν‹° λΆ„λ₯˜ ꡬ뢄을 잘 ν•΄μ£Όμ–΄μ•Ό λ°μ΄ν„°λ² μ΄μŠ€ 섀계에 μžˆμ–΄ 각 데이터 μ£Όμ œμ— 맞게 λͺ¨λΈλ§μ„ ꡬ좕할 수 μžˆλ‹€.
ꡬ λΆ„ λ‚΄ 용
μœ ν˜• μ—”ν‹°ν‹° 물리적인 ν˜•νƒœ
(예 : 고객, μƒν’ˆ, 거래처, 학생, ꡐ수 λ“±)
λ¬΄ν˜• μ—”ν‹°ν‹° 물리적인 ν˜•νƒœκ°€ μ—†κ³  κ°œλ…μ μœΌλ‘œλ§Œ μ‘΄μž¬ν•˜λŠ” μ—”ν‹°ν‹°
(예 : 인터넷 μž₯λ°”κ΅¬λ‹ˆ, λΆ€μ„œ 쑰직 λ“±)
λ¬Έμ„œ μ—”ν‹°ν‹° 업무 μ ˆμ°¨μƒμ—μ„œ μ‚¬μš©λ˜λŠ” λ¬Έμ„œλ‚˜ μž₯λΆ€, μ „ν‘œμ— λŒ€ν•œ μ—”ν‹°ν‹°
(거래λͺ…μ„Έμ„œ, μ£Όλ¬Έμ„œ λ“±)
이λ ₯ μ—”ν‹°ν‹° 업무상 반볡적으둜 μ΄λ£¨μ–΄μ§€λŠ” ν–‰μœ„λ‚˜ μ‚¬κ±΄μ˜ λ‚΄μš©μ„ μΌμžλ³„, μ‹œκ°„λ³„λ‘œ μ €μž₯ν•˜κΈ° μœ„ν•œ μ—”ν‹°ν‹°
( 예 : μž…κ³  이λ ₯, 좜고 이λ ₯, ꡬ맀 이λ ₯ λ“±)
μ½”λ“œ μ—”ν‹°ν‹° λ¬΄ν˜• μ—”ν‹°ν‹°μ˜ μΌμ’…μœΌλ‘œ 각쒅 μ½”λ“œλ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ μ—”ν‹°ν‹°
(예 : κ΅­κ°€μ½”λ“œ, 각쒅 λΆ„λ₯˜ μ½”λ“œ)

λ‹€μŒμ€ μœ„μ—μ„œ λ§Œλ“  학생 엔티티에 학생별 μ·¨λ―Έλ₯Ό ν‘œν˜„ν•˜λŠ” μ—”ν‹°ν‹°λ₯Ό μΆ”κ°€ν•˜μ˜€λ‹€. 학생 μ—”ν‹°ν‹°λŠ” μœ ν˜• 엔티티에 μ†ν•˜μ—¬, 학생별 μ·¨λ―ΈλŠ” λ¬΄ν˜• 엔티티에 μ†ν•˜κ²Œ λœλ‹€.

Domain


ERD 킀와 μ œμ•½ 쑰건 ν‘œκΈ°λ²•

 

μ£Ό μ‹λ³„μž (PK) πŸ”‘

  • λ°μ΄ν„°λ² μ΄μŠ€ ν…Œμ΄λΈ”μ˜ Primary Keyλ₯Ό ν‘œν˜„
  • 쀑볡이 μ—†κ³  NULL 값이 μ—†λŠ” μœ μΌν•œ 값에 μ§€μ •ν•˜λŠ” μ‹λ³„μž
  • μ•„λž˜ κ·Έλ¦Όκ³Ό 같이 β—† 닀이아λͺ¬λ“œλ‘œ ν‘œν˜„ν•˜κΈ°λ„ ν•˜κ³  μ•„λ‹ˆλ©΄ μ—΄μ‡ λ‘œλ„ ν‘œν˜„ν•˜κΈ°λ„ ν•œλ‹€.
  • 그리고 μ£Ό μ‹λ³„μžλŠ” μœ μΌν•œ μ†μ„±μ΄λ―€λ‘œ λ‹€λ₯Έ μ†μ„±κ³Όμ˜ λͺ…ν™•ν•œ ꡬ뢄을 μœ„ν•΄ ꡬ뢄선을 두기도 ν•œλ‹€.

μ£Ό μ‹λ³„μž

 

NOT NULL ❌

  • ν•΄λ‹Ή 속성에 λ“€μ–΄κ°ˆ 값에 Null 을 λΉ„ν—ˆμš©ν•œλ‹€λ©΄, N ν˜Ήμ€ NN을 μ λŠ”λ‹€.
  • 만일 Null ν—ˆμš©ν•œλ‹€λ©΄ N을 적지 μ•ŠλŠ”λ‹€.

NOT NULL

 

μ™Έλž˜ μ‹λ³„μž (FK) πŸ—οΈ

  • λ°μ΄ν„°λ² μ΄μŠ€ ν…Œμ΄λΈ”μ˜ Foreign Keyλ₯Ό ν‘œν˜„
  • μ™Έλž˜ μ‹λ³„μž μ—­μ‹œ key의 일쒅이라 ERD 엔티티에도 μ—΄μ‡  μ•„μ΄μ½˜μœΌλ‘œ ν‘œμ‹œν•œλ‹€. (ν”„λ‘œκ·Έλž¨μ— 따라 λ‹€λ₯Ό 수 μžˆλ‹€)
  • μ™Έλž˜ μ‹λ³„μžλ₯Ό ν‘œμ‹œν•  λ•Œμ—λŠ” 선을 μ΄μ–΄μ£ΌλŠ”λ° κ°œμ²΄μ™€ 관계λ₯Ό λ”°μ Έ ν‘œμ‹œν•œλ‹€.

μ™Έλž˜ μ‹λ³„μž


ERD μ—”ν‹°ν‹° 관계 ν‘œκΈ°λ²•

ERD

각 μ—”ν‹°ν‹° μœ ν˜•λ“€μ„ λ§Œλ“€μ—ˆμœΌλ©΄, μ—”ν‹°ν‹° 끼리 관계가 μžˆλŠ” 경우 선을 이어 관계λ₯Ό λ§Ίμ–΄μ•Ό ν•œλ‹€. μ—”ν‹°ν‹° 끼리 관계 선을 κ·Έμ„λ•Œ μ‹€μ„ μœΌλ‘œ 그을지 μ μ„ μœΌλ‘œ 그을지 λ‚˜λ‰˜λŠ”λ°, 두 μ—”ν‹°ν‹° κ΄€κ³„μ—μ„œ λΆ€λͺ¨μ˜ ν‚€λ₯Ό μžμ‹μ—μ„œ PK둜 μ‚¬μš©ν•˜λŠ”μ§€ 일반 μ†μ„±μœΌλ‘œ μ‚¬μš©ν•˜μ§€μ— λ”°λΌμ„œ ν‘œκΈ°κ°€ λ‹€λ₯΄κ²Œ λœλ‹€.

μ‹€μ„ μœΌλ‘œ 그으면 κ°•ν•œ 관계λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 것이며 'μ‹λ³„μž 관계'라고 뢈리우며, μ μ„ μœΌλ‘œ 그으면 μ•½ν•œ 관계λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 것이며 'λΉ„μ‹λ³„μž 관계'라고 뢈리우게 λœλ‹€.

ν•­λͺ© μ‹λ³„μž 관계 λΉ„μ‹λ³„μž 관계
λͺ©μ  κ°•ν•œ 연결관계 ν‘œν˜„ μ•½ν•œ 연결관계 ν‘œν˜„
μžμ‹ μ£Όμ‹λ³„μž
영ν–₯
μžμ‹ μ£Όμ‹λ³„μžμ˜ ꡬ성에 포함됨 μžμ‹ 일반 속성에 포함됨
ν‘œκΈ°λ²• μ‹€μ„  ν‘œν˜„ 점선 ν‘œν˜„
μ—°κ²°
고렀사항
- λ°˜λ“œμ‹œ λΆ€λͺ¨μ—”ν„°ν‹° 쒅속
- μžμ‹ μ£Όμ‹λ³„μžκ΅¬μ„±μ— λΆ€λͺ¨ μ£Όμ‹λ³„μžν¬ν•¨ ν•„μš”
- 상속받은 μ£Όμ‹λ³„μžμ†μ„±μ„ 타 엔터티에 이전 ν•„μš”
- μ•½ν•œ 쒅속관계
- μžμ‹ μ£Όμ‹λ³„μžκ΅¬μ„±μ„ λ…λ¦½μ μœΌλ‘œ ꡬ성
- μžμ‹ μ£Όμ‹λ³„μžκ΅¬μ„±μ— λΆ€λͺ¨ μ£Όμ‹λ³„μž λΆ€λΆ„ ν•„μš”
- 상속받은 μ£Όμ‹λ³„μžμ†μ„±μ„ 타 엔터티에 차단 ν•„μš”
- λΆ€λͺ¨μͺ½μ˜ 관계참여가 선택관계

.

μ‹λ³„μž 관계 ✍🏻

  • μ‹€μ„ μœΌλ‘œ ν‘œν˜„
  • λΆ€λͺ¨ μžμ‹ κ΄€κ³„μ—μ„œ μžμ‹μ΄ λΆ€λͺ¨μ˜ μ£Ό μ‹λ³„μžλ₯Ό μ™Έλž˜ μ‹λ³„μžλ‘œ μ°Έμ‘°ν•΄μ„œ μžμ‹ μ˜ μ£Ό μ‹λ³„μžλ‘œ μ„€μ •
  • μ•„λž˜ 그림에선 μžμ‹ μ—”ν‹°ν‹°(학생별 μ·¨λ―Έ)κ°€ λΆ€λͺ¨ μ—”ν‹°ν‹°(학생)의 ν•™λ²ˆμ„ μžμ‹ μ˜ μ£Ό μ‹λ³„μžλ‘œ μ„€μ •ν•˜μ˜€λ‹€.

식별관계

 

λΉ„μ‹λ³„μž 관계 βœπŸ»

  • μ μ„ μœΌλ‘œ ν‘œν˜„
  • λΆ€λͺ¨ μžμ‹ κ΄€κ³„μ—μ„œ μžμ‹μ΄ λΆ€λͺ¨μ˜ μ£Ό μ‹λ³„μžλ₯Ό μ™Έλž˜ μ‹λ³„μžλ‘œ μ°Έμ‘°ν•΄μ„œ 일반 μ†μ„±μœΌλ‘œ μ‚¬μš©.
  • μ•„λž˜ 그림에선 μžμ‹ μ—”ν‹°ν‹°(사원정보)κ°€ λΆ€λͺ¨ μ—”ν‹°ν‹°(λΆ€μ„œμ •λ³΄)의 λΆ€μ„œμ½”λ“œλ₯Ό 일반 μ†μ„±μœΌλ‘œ λ‘μ—ˆλ‹€.

식별관계


ERD κ΄€κ³„μ˜ 카디널리티

관계가 μ‘΄μž¬ν•˜λŠ” 두 entity사이에 ν•œ entityμ—μ„œ λ‹€λ₯Έ entity λͺ‡κ°œμ˜ κ°œμ²΄μ™€ λŒ€μ‘λ˜λŠ”μ§€ μ œμ•½μ‘°κ±΄μ„ ν‘œκΈ°ν•˜κΈ°μœ„ν•΄ 선을 κ·Έμ–΄ ν‘œν˜„ν•œλ‹€. λŒ€ν‘œμ μœΌλ‘œ Mapping Cardinality의 μ’…λ₯˜λŠ” λ‹€μŒκ³Ό κ°™λ‹€.

CardinalityλŠ” ν•œ κ°œμ²΄μ—μ„œ λ°œμƒν•  수 μžˆλŠ” λ°œμƒ 횟수λ₯Ό μ •μ˜ν•˜λ©°, λ‹€λ₯Έ κ°œμ²΄μ—μ„œ λ°œμƒν•  수 μžˆλŠ” λ°œμƒ νšŸμˆ˜μ™€ μ—°κ΄€λœλ‹€.
  • One to one : 1 λŒ€ 1 λŒ€μ‘
  • One to many : 1 λŒ€ λ‹€ λŒ€μ‘
  • Many to one : λ‹€ λŒ€ 1 λŒ€μ‘
  • Many to many : λ‹€ λŒ€ λ‹€ λŒ€μ‘

ERD ꡬ성 μš”μ†Œ μ„ μ˜ 끝 λͺ¨μ–‘

ν•˜μ§€λ§Œ ERD λ‹€μ΄μ–΄κ·Έλž¨μ— μœ„μ™€κ°™μ΄ μ„  듀을 막 κΈ‹λŠ”λ‹€λ©΄ 가독성이 맀우 μ•ˆμ’‹μ•„μ§€κ³  ν‘œκ°€ λ”λŸ¬μ›Œμ§€κΈ° λ•Œλ¬Έμ—, μ΄λŸ¬ν•œ μ—”ν‹°ν‹°κ°„μ˜ 1 λŒ€ λ‹€μ˜ 관계λ₯Ό ν‘œκΈ° ν•˜κΈ° μœ„ν•΄ ERDμ—μ„œλŠ” μ„ μ˜ 끝 λͺ¨μ–‘을 λ‹€λ₯΄κ²Œ ν‘œμ‹œν•˜λŠ” 방법을 μ‚¬μš©ν•œλ‹€.

 

One-to-One Cardinality (1:1 관계)

  • 학생가 μ‹ μ²΄μ •λ³΄λŠ” 1:1둜 λ§€μΉ­λœλ‹€.
  • ν•œλͺ…μ˜ 학생은 ν•˜λ‚˜μ˜ 신체정보λ₯Ό κ°–κΈ° λ•Œλ¬Έμ΄λ‹€.

One-to-One Cardinality
One-to-One Cardinality

 

One-to-Many Cardinality (1:N 관계)

  • ν•œλͺ…μ˜ 학생은 μ—¬λŸ¬κ°œμ˜ μ·¨λ―Έλ₯Ό κ°€μ§ˆμˆ˜λ„ μžˆλ‹€.

One-to-Many Cardinality
One-to-Many Cardinality

 

Many-to-Many Cardinality (M:N 관계)

  • μ œν’ˆ μ—”ν‹°ν‹° μž…μž₯μ—μ„œ, TV μ œν’ˆμ€ λŒ€μš° ν‹°λΉ„, μ‚Όμ„± ν‹°λΉ„, μ• ν”Œ ν‹°λΉ„ 같은 μ—¬λŸ¬ μ œμ‘°μ—…μ²΄ μ œν’ˆμ΄ μžˆμ„ 수 μžˆλ‹€.
    μ΄λŠ” 냉μž₯κ³ λ‚˜ 세탁기도 λ§ˆμ°¬κ°€μ§€μ΄λ‹€. μ—¬λŸ¬ κΈ°μ—…μ—μ„œ μžμ‹  만의 μƒν‘œλ₯Ό μƒμ‚°ν•œλ‹€.
  • μ œμ‘°μ—…μ²΄ μ—”ν‹°ν‹° μž…μž₯μ—μ„œ, μ‚Όμ„± μ œμ‘°μ—…μ²΄λŠ” μ„ΈνƒκΈ°λ§Œ μƒμ‚°ν•˜λŠ”κ²Œ μ•„λ‹ˆλΌ MP3도 같이 μƒμ‚°ν•œλ‹€.
    μ‹€μ œλ‘œ μ‚Όμ„±μ΄λ‚˜ μ• ν”Œ νšŒμ‚¬λŠ” κ°€μ „μ œν’ˆ, 슀마트폰, μ „μžκΈ°κΈ° λ“± μ—¬λŸ¬ μ’…λ₯˜μ˜ μ œν’ˆμ„ μƒμ‚°ν•œλ‹€.
  • λ”°λΌμ„œ μ œν’ˆκ³Ό μ œμ‘°μ—…μ²΄ κ΄€κ³„λŠ” λ‹€ λŒ€ λ‹€ κ΄€κ³„ λœλ‹€.

Many-to-Many Cardinality
Many-to-Many Cardinality

 

Many-to-Many Cardinality κ΄€κ³„μ˜ ν•΄μ†Œ

  • 그런데 두 μ—”ν‹°ν‹°κ°€ λ‹€ λŒ€ λ‹€ 관계에 μžˆλŠ” 경우, λ‘κ°œμ˜ μ—”ν‹°ν‹°λ§ŒμœΌλ‘œλŠ” μ„œλ‘œλ₯Ό ν‘œν˜„ν•˜λŠ”λ° λΆ€μ‘±ν•˜λ‹€.
  • 데이터 λͺ¨λΈλ§μ—μ„œλŠ” M:N 관계λ₯Ό μ™„μ„±λ˜μ§€ μ•Šμ€ λͺ¨λΈλ‘œ κ°„μ£Όν•˜μ—¬, 두 μ—”ν‹°ν‹°μ˜ 관계λ₯Ό 1:N, N:1 둜 μ‘°μ •ν•˜λŠ” μž‘μ—…μ΄ ν•„μš”ν•˜λ‹€.
  • λ”°λΌμ„œ 두 μ—”ν‹°ν‹°μ˜ 관련성을 ν‘œν˜„ν•˜κΈ° μœ„ν•΄μ„œλŠ” 쀑간에 또 λ‹€λ₯Έ μ—”ν‹°ν‹°λ₯Ό ν•„μš”λ‘œ ν•œλ‹€. 이 쀑간 μ—”ν‹°ν‹°(업체별 μ œν’ˆ)κ°€ 두 μ—”ν‹°ν‹°μ˜ 곡유 속성 역할을 ν•˜κ²Œ λœλ‹€.
  • 이 뢀뢄은 데이터 λͺ¨λΈλ§μ—μ„œ 곡식 처럼 μ μš©λ˜λŠ” κ·œμΉ™μ΄λ©°, ERD ν”„λ‘œκ·Έλž¨μ—μ„œ M:N을 작게 λœλ‹€λ©΄ μžλ™μœΌλ‘œ μ•„λž˜μ™€ 같이 μ‘°μ • μž‘μ—…μ΄ ν–‰ν•΄μ§€κ²Œ λœλ‹€.

Many-to-Many Cardinality
Many-to-Many Cardinality


ERD κ΄€κ³„μ˜ 참여도

  • 관계선 각 츑의 λμžλ½μ— 기호λ₯Ό ν‘œμ‹œν•œλ‹€.
  • '|' ν‘œμ‹œκ°€ μžˆλŠ” 곳은 λ°˜λ“œμ‹œ μžˆμ–΄μ•Ό ν•˜λŠ” 개체. (ν•„μˆ˜)
  • 'O' ν‘œμ‹œκ°€ μžˆλ‹€λ©΄ 없어도 λ˜λŠ” 개체. (선택)

ERD
ERD

κ΄€κ³„μ˜ 선택 기호 🚩

  • μ·¨λ―Έλ₯Ό 가진 학생이 μžˆμ„μˆ˜λ„ 있고, μ·¨λ―Έκ°€ μ—†λŠ” 학생이 μžˆμ„ μˆ˜λ„ μžˆλ‹€.
  • κΉ€μ² μˆ˜ 학생은 κ²Œμž„μ΄ μ·¨λ―ΈλΌμ„œ, λŒ€μ‘λ˜λŠ” ν•™μƒμ˜ μ·¨λ―Έ ν…Œμ΄λΈ”μ— μ—†κΈ° λ•Œλ¬Έμ— 관계가 μ—†λ‹€. (선택)
  • λŒ€μ‘ λ˜λŠ” μΈμŠ€ν„΄μŠ€κ°€ μžˆμ„ μˆ˜λ„ 있고 없을 μˆ˜λ„ 없을 λ•Œ 선택 관계 기호λ₯Ό μ‚¬μš©ν•œλ‹€.

κ΄€κ³„μ˜ 선택 기호
κ΄€κ³„μ˜ 선택 기호

 

κ΄€κ³„μ˜ ν•„μˆ˜ 기호 🚩

  • ν•™λ²ˆ 21003 ν•™μƒμ˜ μ·¨λ―Έκ°€ λ‚šμ‹œ λΌλŠ” 정보가 μžˆλ‹€λ©΄, 21003ν•™λ²ˆμ˜ ν•™μƒμ˜ 정보가 학생 엔티티에 λ°˜λ“œμ‹œ μ‘΄μž¬ν•΄μ•Ό ν•œλ‹€. (ν•„μˆ˜)
  • λ”°λΌμ„œ ν•™μƒμ˜ μ·¨λ―Έ ν…Œμ΄λΈ”μ€ λͺ¨λ‘ 학생 ν…Œμ΄λΈ”μ— λŒ€μ‘λœλ‹€.
  • μ–΄λ–€ 학생이 μ–΄λ–€ μ·¨λ―Έλ₯Ό κ°–λŠ”λ° κ·Έ 학생이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ λ­”κ°€ 잘λͺ»λœ 것이 λœλ‹€.
  • 이와 같이 μ–΄λŠ ν•œ μͺ½μ΄ μ‘΄μž¬ν•˜λ©΄ λ‹€λ₯Έ μͺ½λ„ λ°˜λ“œμ‹œ μ‘΄μž¬ν•΄μ•Ό ν•˜λŠ” 관계λ₯Ό ν•„μˆ˜ 관계 기호λ₯Ό μ‚¬μš©ν•œλ‹€. 

κ΄€κ³„μ˜ ν•„μˆ˜ 기호
κ΄€κ³„μ˜ ν•„μˆ˜ 기호


ERD μ—”ν‹°ν‹° 관계 ν‘œν˜„ 총정리

ERD

 

1 : 1 관계 : λΆ€λͺ¨(SHOP)λŠ” ν•˜λ‚˜μ˜ μžμ‹(FOOD)이 μžˆλ‹€.

ERD μ—”ν‹°ν‹° 관계

 

1 : N 관계 : λΆ€λͺ¨(SHOP)λŠ” ν•˜λ‚˜ μ΄μƒμ˜ μžμ‹(FOOD)이 μžˆλ‹€.

ERD μ—”ν‹°ν‹° 관계

 

M : N 관계 : ν•˜λ‚˜ μ΄μƒμ˜ λΆ€λͺ¨μ™€ ν•˜λ‚˜ μ΄μƒμ˜ μžμ‹μ΄ μžˆλ‹€.

ERD μ—”ν‹°ν‹° 관계

 

1 : 1(o) 관계 : λΆ€λͺ¨λŠ” ν•˜λ‚˜μ˜ μžμ‹μ΄ μžˆμ„ μˆ˜λ„ μžˆλ‹€. (없을 μˆ˜λ„ μžˆλ‹€)

ERD μ—”ν‹°ν‹° 관계

 

1 : N(o) 관계 : λΆ€λͺ¨λŠ” μ—¬λŸ¬κ°œμ˜ μžμ‹μ΄ μžˆμ„ μˆ˜λ„ μžˆλ‹€. (없을 μˆ˜λ„ μžˆλ‹€)

ERD μ—”ν‹°ν‹° 관계


ERD μ—°μŠ΅ 예제 - λ„μ„œ 관리 μ‹œμŠ€ν…œ

κ΄€κ³„λ„μ˜ˆμ‹œ

[νšŒμ› λŒ€μ—¬]

  1. νšŒμ›λ²ˆν˜ΈPKκ°€ λŒ€μ—¬ ν…Œμ΄λΈ”μ—μ„œ FK둜 μΌλ°˜μ†μ„±μœΌλ‘œ 쓰이고 μžˆλ‹€. ( 점선 )
  2. νšŒμ›μ€ λŒ€μ—¬λ₯Ό μ—¬λŸ¬κ°œ ν•  수 μžˆλ‹€. ( 1:N )
  3. μ•„μ˜ˆ λŒ€μ—¬ν•˜μ§€ μ•Šμ€ νšŒμ›μ΄ μžˆμ„ 수 μžˆλ‹€. ( 1:N(선택) )
  4. λŒ€μ—¬λ₯Ό 할땐 λ°˜λ“œμ‹œ νšŒμ› 정보가 ν•„μˆ˜λ‘œ μ‘΄μž¬ν•΄μ•Όν•œλ‹€. ( 1[ν•„μˆ˜]:N[선택] )

​

[λ„μ„œ λŒ€μ—¬]

  1. λ„μ„œλ²ˆν˜ΈPKκ°€ λŒ€μ—¬ ν…Œμ΄λΈ”μ—μ„œ FK둜 μΌλ°˜μ†μ„±μœΌλ‘œ 쓰이고 μžˆλ‹€. ( 점선 )
  2. λ„μ„œκ°€ 과거에 μ—¬λŸ¬λ²ˆ λŒ€μ—¬λœ 기둝이 μžˆμ„ 수 μžˆμœΌλ‹ˆ. ( 1:N )
  3. μ•„μ˜ˆ λŒ€μ—¬ν•˜μ§€ μ•Šμ€ λ„μ„œκ°€ μžˆμ„ 수 μžˆλ‹€. ( 1:N[선택] )
  4. λŒ€μ—¬λ₯Ό 할땐 λ°˜λ“œμ‹œ λ„μ„œ 정보가 ν•„μˆ˜λ‘œ μ‘΄μž¬ν•΄μ•Όν•œλ‹€. ( 1[ν•„μˆ˜]:N[선택] )

 

[νšŒμ› μ˜ˆμ•½]

  1. νšŒμ›λ²ˆν˜ΈPKκ°€ μ˜ˆμ•½ ν…Œμ΄λΈ”μ—μ„œ FK이자 PK둜 쓰이고 μžˆλ‹€. ( μ‹€μ„  )
  2. νšŒμ›μ€ μ˜ˆμ•½μ„ μ—¬λŸ¬κ°œ ν•  수 μžˆλ‹€. ( 1:N )
  3. μ•„μ˜ˆ μ˜ˆμ•½ν•˜μ§€ μ•Šμ€ νšŒμ›μ΄ μžˆμ„ 수 μžˆλ‹€. ( 1:N[선택] )
  4. μ˜ˆμ•½μ„ 할땐 λ°˜λ“œμ‹œ νšŒμ› 정보가 ν•„μˆ˜λ‘œ μ‘΄μž¬ν•΄μ•Όν•œλ‹€. ( 1[ν•„μˆ˜]:N[선택] )

효율적인 λͺ¨λΈλ§ μž‘μ—…ν•˜κΈ°

μœ„μ˜ λ„μ„œ 관리 λͺ¨λΈλ§μ€ 사싀 잘λͺ»λœ ꡬ쑰이닀.

λ„μ„œ Entity 같은 경우, λ„μ„œκ΄€μ˜ 같은 μ±…(μ±… 이름이 λ˜‘κ°™μ€)이 μžˆλ‹€λŠ” κ°€μ •ν•˜μ— λͺ¨λΈλ§μ„ ν–ˆμ§€λ§Œ μ—¬κΈ°μ—” 큰 ν—ˆμ μ΄ μ‘΄μž¬ν•œλ‹€. β€‹μ™œλƒν•˜λ©΄ λ„μ„œλ²ˆν˜Έλ‘œ 같은 책이 μžˆλ”λΌλ„ 번호λ₯Ό 달리해 ꡬ뢄은 κ°€λŠ₯할지 λͺ°λΌλ„, λ˜‘κ°™μ€ 자료λ₯Ό μ€‘λ³΅ν•˜κ²Œλ˜λŠ” κ΅¬μ‘°μ—¬μ„œ 결과적으둜 데이터곡간을 λ‚­λΉ„ν•˜λŠ” κ²°κ³Όλ₯Ό μ΄ˆλž˜ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

β€‹λ”°λΌμ„œ λ„μ„œκ΄€μ˜ μ‹€μ œλ„μ„œλ₯Ό λ‚˜νƒ€λ‚΄λŠ” Entity와 μ‹€μ œλ„μ„œμ˜ 속성을 μ •μ˜ν•˜λŠ” Entityλ₯Ό ꡬ뢄해야 λœλ‹€. λ„μ„œλ²ˆν˜Έλ§Œ λ‹€λ₯Έ λ˜‘κ°™μ€ 책인 μ†μ„± 정보가 μ™„μ „νžˆ κ°™κΈ° λ•Œλ¬Έμ—, μ•„λž˜ μ‚¬μ§„μ—μ„œ 볼수 μžˆλ“―μ΄ 같은 λ„μ„œμ˜ μ†μ„±λ“€μ˜ 데이터가 μ€‘λ³΅μœΌλ‘œ μ €μž₯됨을 ν‘œλ‘œ λ³Ό 수 μžˆλ‹€.

κ΄€κ³„λ„μ˜ˆμ‹œ

λ”°λΌμ„œ 이 속성정보λ₯Ό μ€‘λ³΅ν•΄μ„œ ν•œ ν…Œμ΄λΈ”μ— μ €μž₯ν•˜λŠ” 것보닀, ν…Œμ΄λΈ”을 λ”°λ‘œ λΆ„λ¦¬ν•΄μ„œ 속성을 λ”°λ‘œ μ €μž₯ν•˜λŠ”κ²Œ λ°μ΄ν„°κ³΅κ°„을 μ ˆμ•½ν•  수 있게 λœλ‹€. μ΄λŸ¬ν•œ λΆ„λ‹΄ ν–‰μœ„λ₯Ό μ •κ·œν™”λΌκ³  ν•˜λŠ”λ° μžμ„Έν•œ μ›λ¦¬λŠ” λ‹€μŒ ν¬μŠ€νŒ…μ„ μ°Έκ³ λ°”λž€λ‹€.

 

[DB] πŸ“š 제 1-2-3 μ •κ·œν™” & μ—­μ •κ·œν™” πŸ’― 정리

μ •κ·œν™”λž€? ERDλ‚΄μ—μ„œ μ€‘λ³΅μš”μ†Œλ₯Ό μ°Ύμ•„ μ œκ±°ν•΄ λ‚˜κ°€λŠ” κ³Όμ •  - μ€‘λ³΅λœ λ°μ΄ν„°λŠ” λ§Žμ€ 문제λ₯Ό μΌμœΌν‚¨λ‹€. ​ 3μ°¨ μ •κ·œν™” μ •λ„λ§Œ μ•Œλ©΄ μ„€κ³„ν•˜λŠ”λ° 무리가 μ—†λ‹€. - 쀑볡을 μ΅œμ†Œν™” -> μ™„μ „νžˆ μ—†μ• λŠ”κ²Œ μ•„

inpa.tistory.com


μˆ˜μ •λœ λ„μ„œ 관리 μ‹œμŠ€ν…œ ERD

λ„μ„œ μ—”ν‹°ν‹°λ₯Ό 뢄리해, λ„μ„œμ™€ λ„μ„œμ •λ³΄λ‘œ μͺΌκ°œκ³  이λ₯Ό μ—°κ²°ν•œλ‹€. 그리고 ISBN(κ΅­μ œν‘œμ€€λ„μ„œλ²ˆν˜Έ)을 μ™Έλž˜ν‚€λ‘œ μ„€μ •ν•΄ 관계λ₯Ό κ΅¬μ„±ν•œλ‹€. 그리고 μΆ”κ°€μ μœΌλ‘œ μ˜ˆμ•½ μ—”ν‹°ν‹°λŠ” μ§κ΄€μ μ΄κ²Œ, λŒ€μ—¬μ— μ—°κ²°ν•˜λŠ”κ²Œ μ•„λ‹ˆλΌ, νšŒμ›κ³Ό λ„μ„œλ₯Ό μ—°κ²°ν•˜λŠ”κ²Œ λ§žλ‹€. λ”°λΌμ„œ λ„μ„œ 엔티티에 μ˜ˆμ•½ μ—”ν‹°ν‹°λ₯Ό μ—°κ²°ν•΄μ€€λ‹€.

κ΄€κ³„λ„μ˜ˆμ‹œ

 

[λ„μ„œ 정보 λ„μ„œ]

  1. ISBN(κ΅­μ œν‘œμ€€λ„μ„œλ²ˆν˜Έ) PKκ°€ λ„μ„œ ν…Œμ΄λΈ”μ—μ„œ FK둜 μΌλ°˜μ†μ„±μœΌλ‘œ 쓰이고 μžˆλ‹€. ( 점선 )
  2. 같은 책이 μ—¬λŸ¬κ°œ μžˆμ„ 수 μžˆλ‹€. λ„μ„œμ •λ³΄κ°€ 같은 λ„μ„œκ°€ μ—¬λŸ¬κ°œ. ( 1:N )
  3. μœ μ‹€λœ 책이 μžˆμ„μˆ˜ μžˆλ‹€. λ„μ„œμ •λ³΄λŠ” λ¬΄ν˜•μ˜ 정보일 뿐이고, λ„μ„œ μ—”ν‹°ν‹°λŠ” μ‹€μ œ 물리적 엔티티이닀. ( 1:N[선택] )
  4. λ„μ„œλŠ” λ°˜λ“œμ‹œ λ„μ„œ 정보가 ν•„μˆ˜λ‘œ μ‘΄μž¬ν•΄μ•Όν•œλ‹€. ( 1[ν•„μˆ˜]:N[선택] )

 

[λ„μ„œ  μ˜ˆμ•½]

  1. λ„μ„œλ²ˆν˜Έ PKκ°€ μ˜ˆμ•½ ν…Œμ΄λΈ”μ—μ„œ FK이자 PK둜 쓰이고 μžˆλ‹€. ( μ‹€μ„  )
  2. ν•˜λ‚˜μ˜ λ„μ„œμ— μ—¬λŸ¬κ°œ μ˜ˆμ•½μ΄ κ±Έλ € μžˆμ„μˆ˜ μžˆλ‹€. ( 1:N )
  3. μ˜ˆμ•½μ΄ μ—†λŠ” λ„μ„œκ°€ μžˆμ„ 수 μžˆλ‹€. ( 1:N[선택] )
  4. μ˜ˆμ•½ μ •λ³΄μ—λŠ” λ°˜λ“œμ‹œ λ„μ„œ 정보가 λ“€μ–΄ μžˆμ–΄μ•Ό ν•œλ‹€. ( 1[ν•„μˆ˜]:N[선택] )

ERD λ‹€μ΄μ–΄κ·Έλž¨ 툴 μΆ”μ²œ

μ†κ·Έλ¦ΌμœΌλ‘œ ERD λ‹€μ΄μ–΄κ·Έλž¨μ„ 그리지말고 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό 빌렀 μ§œμž„μƒˆ 있게 κ΅¬μ„±ν•˜λŠ” 것이 λ‚˜μ€‘μ— μœ μ§€λ³΄μˆ˜ ν• λ•Œ μœ μš©ν•˜λ‹€. 이 ν¬μŠ€νŒ…μ—μ„œλŠ” λŒ€ν‘œμ μΈ ERD λ‹€μ΄μ–΄κ·Έλž¨ 툴 두가지λ₯Ό μ†Œκ°œν•΄λ³Έλ‹€.

 

MySQL μ›Œν¬λ²€μΉ˜μ—μ„œ ERD λ§Œλ“€κΈ°

  • μ›Œν¬λ²€μΉ˜ μžμ²΄μ— ERD λ‹€μ΄μ–΄κ·Έλž¨ 툴이 λ‚΄μž₯λ˜μ–΄ μžˆλ‹€.
  • 미리 μž‘μ„±λœ SQL문을 μžλ™μœΌλ‘œ ERD둜 바꿔주기도 ν•˜μ—¬ μœ μš©ν•˜λ‹€.
 

[MYSQL] πŸ“š μ›Œν¬λ²€μΉ˜μ—μ„œ ν…Œμ΄λΈ” ERD μƒμ„±ν•˜κΈ° / 쿼리 μΆ”μΆœν•˜κΈ°

MySQL μ›Œν¬λ²€μΉ˜ ERD 생성 1. 상단 메뉴 νƒ­μ—μ„œ Database > Reserve Engineerλ₯Ό μ„ νƒν•œλ‹€. 2. Hostname, port, username을 μž…λ ₯ν•˜κ³  λ‹€μŒμœΌλ‘œ μ΄λ™ν•œλ‹€. 3. ERD둜 μΆ”μΆœν•  DBλ₯Ό 선택 ν›„ λ‹€μŒμœΌλ‘œ μ΄λ™ν•œλ‹€. 4. R..

inpa.tistory.com

 

μ˜¨λΌμΈμ—μ„œ ERD λ§Œλ“€κΈ°

  • μ›Œν¬λ²€μΉ˜λŠ” μ’€ 였래된 μ†Œν”„νŠΈμ›¨μ–΄λΌμ„œ 보기에도 μ˜¬λ“œν•˜κ³  가독성도 κ·Έλ ‡κ²Œ 쒋지 μ•Šλ‹€.
  • 온라인 μ‚¬μ΄νŠΈμ—μ„œ 보닀 μžμ„Έν•˜κ²Œ ERDλ₯Ό 그리고, 쿼리λ₯Ό μΆ”μΆœν• μˆ˜ 있으며 ν˜‘μ—…λ„ κ°€λŠ₯ν•œ ERD CLOUDλ₯Ό κ°•λ ₯ μΆ”μ²œν•˜λŠ” λ°”λ‹€.
 

[ERD CLOUD] ☁️ ERD λ‹€μ΄μ–΄κ·Έλž¨μ„ μ˜¨λΌμΈμ—μ„œ 그렀보자

ERD CLOUD ν”„λ‘ νŠΈμ—”λ“œ μž‘μ—…μ„ ν•˜κΈ°μ „μ— UI μ™€μ΄μ–΄ν”„λ ˆμž„μ„ κ·Έλ¦¬λŠ” 과정은 μ€‘μš”ν•˜λ“―μ΄, λ°±μ—”λ“œμ—μ„œλ„ λ°μ΄ν„°λ² μ΄μŠ€ λͺ¨λΈλ§ 섀계 과정은 맀우 μ€‘μš”ν•˜λ‹€. λ°μ΄ν„°λ² μ΄μŠ€ λͺ¨λΈλ§μ„ ν•  λ•Œ ERD 닀이어그

inpa.tistory.com

μ˜¨λΌμΈμ—μ„œ ERD


# 참고자료

μ‰½κ²Œ λ°°μš°λŠ” 였라클둜 λ°°μš°λŠ” λ°μ΄ν„°λ² μ΄μŠ€ 개둠과 μ‹€μŠ΅

https://dba.stackexchange.com/questions/51073/er-relation-with-unique-key

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=lkwook2&logNo=100116488273 

https://parkhyeokjin.github.io/others/2018/11/07/DbERD.html

https://blog.naver.com/PostView.nhn?blogId=dodnam&logNo=221750031014&parentCategoryNo=&categoryNo=17&viewDate=&isShowPopularPosts=true&from=search