π λ°μ΄ν° λͺ¨λΈλ§ κ°λ & ERD λ€μ΄μ΄κ·Έλ¨ μμ± π― μ΄μ 리
λ°μ΄ν° λͺ¨λΈλ§ μ΄λ?
λ°μ΄ν° λͺ¨λΈλ§μ΄λ μ 보μμ€ν ꡬμΆμ λμμ΄ λλ μ 무 λ΄μ©μ λΆμνμ¬ μ΄ν΄νκ³ μ½μλ νκΈ°λ²μ μν΄ νννλκ±Έ μλ―Ένλ€. κ·Έλ¦¬κ³ μ΄λ κ² λΆμλ λͺ¨λΈμ κ°μ§κ³ μ€μ λ°μ΄ν°λ² μ΄μ€λ₯Ό μμ±νμ¬ κ°λ° λ° λ°μ΄ν° κ΄λ¦¬μ μ¬μ©λλ€.
νΉν λ°μ΄ν°λ₯Ό μΆμνν λ°μ΄ν° λͺ¨λΈμ λ°μ΄ν°λ² μ΄μ€μ 골격μ μ΄ν΄νκ³ κ·Έ μ΄ν΄λ₯Ό λ°νμΌλ‘ SQLλ¬Έμ₯μ κΈ°λ₯κ³Ό μ±λ₯μ μΈ μΈ‘λ©΄μμ ν¨μ¨μ μΌλ‘ μμ±ν μ μκΈ° λλ¬Έμ, λ°μ΄ν° λͺ¨λΈλ§μ λ°μ΄ν°λ² μ΄μ€ μ€κ³μ ν΅μ¬ κ³Όμ μ΄κΈ°λ νλ€.
λ°μ΄ν° λͺ¨λΈλ§ μμ μ μ°¨
1. μ 무 νμ (μꡬμ¬ν μμ§ λ° λΆμ)
μ 무 νμ μ μ΄λ ν μ 무λ₯Ό μμνκΈ° μ μ ν΄λΉνλ μ 무μ λν΄μ νμ νλ λ¨κ³ μ΄λ€.
λͺ¨λΈλ§μ μμ κ°μ₯ λ¨Όμ ν΄μΌ ν κ²μ μ΄λ ν μ 무λ₯Ό λ°μ΄ν°ννμ¬ λͺ¨λΈλ§ ν κ²μΈμ§μ λν μꡬμ¬ν μμ§μΌ κ²μ΄λ€. μ 무νμ μ νκΈ° μ’μ λ°©λ²μΌλ‘λ UIλ₯Ό μλ’°μΈκ³Ό ν¨κ» νμΈν΄ λμκ°λ λ κ²μ΄λ€. κ·Έλ¦¬κ³ κΆκ·Ήμ μΌλ‘ λ§λ€μ΄μΌ νλ κ²μ΄ 무μμΈμ§ μ¬λμκ² μμ보μμΌ νλ€.
μ΄ ν¬μ€ν μμ μ°λ¦¬κ° νν μ¬μ©νλ κ²μνμ μλ₯Ό λ€μ΄λ³΄κ² λ€.
2. κ°λ μ λ°μ΄ν° λͺ¨λΈλ§
κ°λ μ λ°μ΄ν° λͺ¨λΈλ§μ λ΄κ° νκ³ μ νλ μΌμ λ°μ΄ν° κ°μ κ΄κ³λ₯Ό ꡬμνλ λ¨κ³ μ΄λ€. κ° κ°μ²΄λ€κ³Ό κ·Έλ€κ°μ κ΄κ³λ₯Ό λ°κ²¬νκ³ νννκΈ° μν΄ ERD λ€μ΄μ΄κ·Έλ¨μ μμ±νλ€.
λ€μμ νΌν° μ²Έ νκΈ°λ²(Peter Chen Notation)μΌλ‘ ERD λ€μ΄μ΄κ·Έλ¨μ ꡬμ±ν κ·Έλ¦Όμ΄λ€. 그리λ λ°©λ²μ μ΄λ ΅μ§ μλ€. λνμ΄ μλ―Ένλ λ°λ₯Ό μκ³ νμ΄νλ₯Ό ν΅ν΄ κ΄κ³λ₯Ό νννκΈ°λ§ νλ©΄ λλ€.
μ 무 νμ λ¨κ³μμ κ²°μ νλ κ²μν λ°μ΄ν° ꡬμμ κ°λ μ λ°μ΄ν° λͺ¨λΈλ§μΌλ‘ ꡬνν΄λ³Έ κ²μ΄λ€. κ²μνμλ λνμ μΌλ‘ κ²μν μ΄μ©μμ νμ μ 보, λ‘κ·ΈμΈ μ 보 κ·Έλ¦¬κ³ κ²μνμ κ²μκΈ, λκΈμ΄ μλ€.
3. λ Όλ¦¬μ λ°μ΄ν° λͺ¨λΈλ§
κ°λ μ μΈ λ°μ΄ν° λͺ¨λΈμ΄ μμ±λλ©΄, ꡬ체νλ μ 무 μ€μ¬μ λ°μ΄ν° λͺ¨λΈμ λ§λ€μ΄ λ΄λλ°, μ΄κ²μ λ Όλ¦¬μ μΈ λ°μ΄ν° λͺ¨λΈλ§μ΄λΌκ³ νλ€. μ΄ λ¨κ³μμ μ 무μ λν Key, μμ±, κ΄κ³λ±μ νμνλ©°, μ κ·ν νλμ μννλ€. μ κ·νλ λ°μ΄ν° λͺ¨λΈμ μΌκ΄μ±μ ν보νκ³ μ€λ³΅μ μ κ±°νμ¬ μ λ’°μ±μλ λ°μ΄ν° ꡬ쑰λ₯Ό μ»λλ° λͺ©μ μ΄ μλ€.
μμμ νΌν° μ²Έ νκΈ°λ²μΌλ‘ ꡬνν κ°λ μ ERD λ€μ΄μ΄κ·Έλ¨μ μ 보 곡ν νκΈ°λ²μΈ ν μ΄λΈ ννλ‘ μ¬ κ΅¬μ± νλ€.
μ΄λ λ¨μν μΆμμ μΈ λ°μ΄ν°μμ λ³΄λ€ κ΅¬μ²΄νμ μΈ λ°μ΄ν°λ‘ μμ±νλ€. μλ₯Ό λ€μ΄ νμμ 보μ μμ΄λ, λΉλ°λ²νΈμ κ° λ°μ΄ν° νμ μ λͺ μν΄ μ£Όκ³ κ° λ°μ΄ν°κ°μ κ΄κ³λ₯Ό μ λ°νκ² λ§Ίμ΄μ£Όλ©° ν μ΄λΈμ ν€(key)λ₯Ό μ§μ ν΄μ€λ€.
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 );
λ°μ΄ν° λͺ¨λΈλ§ μ μ°¨ μ 리
μ§κΈκΉμ§ μμ보μλ μ μ°¨λ₯Ό κ°λ¨νκ² μμ½ μ 리νμλ©΄ λ€μκ³Ό κ°λ€.
- λ€μ΄λ² κ²μνμ νλ©΄μ μ΄λ ν κ²λ€μ΄ νμνμ§μ λν κ°λ μ μ‘λκ² μ 무νμ λ¨κ³ (μꡬμ¬ν μμ§ λ° λΆμ)
- λ€μ΄λ² κ²μνμ νλ©΄μ ννλλ λ°μ΄ν°λ€μ νμ ν΄μ κ΄κ³λ₯Ό μ€μ νλκ² κ°λ μ λ°μ΄ν° λͺ¨λΈλ§
- κ°λ μ λ°μ΄ν° λͺ¨λΈλ§ ν κ²μ νλ‘ λ§λλ κ² λ Όλ¦¬μ λ°μ΄ν° λͺ¨λΈλ§
- μ΄ μΌλ ¨μ κ³Όμ μ μνν κ²μ, μ€μ λ°μ΄ν°λ² μ΄μ€ ν μ΄λΈλ‘ λ§λλ κ² λ¬Όλ¦¬μ λ°μ΄ν° λͺ¨λΈλ§
ERD (Entity Relationship Diagram) 그리기
ERD (Entity Relationship Diagram)λ λ¨μ΄μμ μλ―Ένλ κ·Έλλ‘ 'Entity κ°μ²΄'μ 'Relationship κ΄κ³'λ₯Ό μ€μ μ μΌλ‘ νμνλ λ°μ΄ν°λ² μ΄μ€ ꡬ쑰λ₯Ό ν λμ μμ보기 μν΄ κ·Έλ €λλ λ€μ΄μ΄κ·Έλ¨μ΄λ€. κ°μ²΄ κ΄κ³λλΌκ³ λ λΆλ¦¬λ©° μꡬλΆμμ¬νμμ μ»μ μν°ν°μ μμ±λ€μ κ΄κ³λ₯Ό κ·Έλ¦ΌμΌλ‘ ννν κ²μ΄λ€.
ERD μν°ν° νκΈ°λ²
μν°ν°(Entity) π
- μν°ν°λ μ μ κ°λ₯ν μ¬λ¬Ό λλ κ°λ μ μλ―Ένλ€.
- μ¬λλ λ μ μμΌλ©° νλ‘νμ΄λ λμμ 보μ κ°μ 무νμ μ 보λ λ°μ΄ν°νκ° κ°λ₯νλ€.
- λ°μ΄ν°λ² μ΄μ€μ ν μ΄λΈμ΄ μν°ν°λ‘ ννλλ€κ³ 보면 λλ€.
- μλ₯Όλ€μ΄ νμ Entityλ μλμ κ·Έλ¦Όκ³Ό κ°μ΄ ννλλ€.
μν°ν° μμ±(Attribute) π
- μν°ν°μλ κ°μ²΄κ° κ°κ³ μλ μμ±(Attribute)μ ν¬ν¨νλ€.
- μλ₯Όλ€μ΄ νμ μν°ν°λΌλ©΄, νλ², μ΄λ¦, μ£Όμ, μ 곡 ..λ± μμ±λ€μ΄ μλ€.
- λ°μ΄ν°λ² μ΄μ€μ ν μ΄λΈμ κ° νλ(컬λΌ)λ€μ΄ μν°ν° μμ±μ΄λΌκ³ 보면 λλ€.
μν°ν° λλ©μΈ(Domain) π
- λλ©μΈμ μμ±μ κ°, νμ , μ μ½μ¬ν λ±μ λν κ°μ λ²μλ₯Ό νννλ κ²μ΄λ€.
- μ¬μ©μ κΈ°νΈμ λ°λΌ μμ± νμ λ§ κ·Έλ¦΄μλ μκ³ , κ°λ μ±μ μν΄μ μλ΅ν μλ μλ€.
- μ΄λ λ°μ΄ν° νμ μ λͺ μν λ, λ°μ΄ν°λ² μ΄μ€κ° μ§μνλ νμ μ λ§κ² ν΄μΌνλ€.
μν°ν° λΆλ₯ π§Ύ
- μν°ν°λ μ μ₯νλ λ°μ΄ν° μ 보 μ£Όμ μ λ°λΌ μ’ λ₯κ° λ€μνλ€.
- κ³ κ° μ 보κ°μ μ€μ λ‘ λ¬Όλ¦¬μ μΈ ννλ‘ μλ μ 보μ ꡬ맀 μ΄λ ₯κ°μ 무νμ μ΄κ³ κ°λ μ μΈ μ λ³΄κ° μλ€.
- μ΄ μν°ν° λΆλ₯ ꡬλΆμ μ ν΄μ£Όμ΄μΌ λ°μ΄ν°λ² μ΄μ€ μ€κ³μ μμ΄ κ° λ°μ΄ν° μ£Όμ μ λ§κ² λͺ¨λΈλ§μ ꡬμΆν μ μλ€.
ꡬ λΆ | λ΄ μ© |
μ ν μν°ν° | 물리μ μΈ νν (μ : κ³ κ°, μν, κ±°λμ², νμ, κ΅μ λ±) |
무ν μν°ν° | 물리μ μΈ ννκ° μκ³ κ°λ
μ μΌλ‘λ§ μ‘΄μ¬νλ μν°ν° (μ : μΈν°λ· μ₯λ°κ΅¬λ, λΆμ μ‘°μ§ λ±) |
λ¬Έμ μν°ν° | μ
무 μ μ°¨μμμ μ¬μ©λλ λ¬Έμλ μ₯λΆ, μ νμ λν μν°ν° (κ±°λλͺ μΈμ, μ£Όλ¬Έμ λ±) |
μ΄λ ₯ μν°ν° | μ
무μ λ°λ³΅μ μΌλ‘ μ΄λ£¨μ΄μ§λ νμλ μ¬κ±΄μ λ΄μ©μ μΌμλ³, μκ°λ³λ‘ μ μ₯νκΈ° μν μν°ν° ( μ : μ κ³ μ΄λ ₯, μΆκ³ μ΄λ ₯, ꡬ맀 μ΄λ ₯ λ±) |
μ½λ μν°ν° | 무ν μν°ν°μ μΌμ’
μΌλ‘ κ°μ’
μ½λλ₯Ό κ΄λ¦¬νκΈ° μν μν°ν° (μ : κ΅κ°μ½λ, κ°μ’ λΆλ₯ μ½λ) |
λ€μμ μμμ λ§λ νμ μν°ν°μ νμλ³ μ·¨λ―Έλ₯Ό νννλ μν°ν°λ₯Ό μΆκ°νμλ€. νμ μν°ν°λ μ ν μν°ν°μ μνμ¬, νμλ³ μ·¨λ―Έλ 무ν μν°ν°μ μνκ² λλ€.
ERD ν€μ μ μ½ μ‘°κ±΄ νκΈ°λ²
μ£Ό μλ³μ (PK) π
- λ°μ΄ν°λ² μ΄μ€ ν μ΄λΈμ Primary Keyλ₯Ό νν
- μ€λ³΅μ΄ μκ³ NULL κ°μ΄ μλ μ μΌν κ°μ μ§μ νλ μλ³μ
- μλ κ·Έλ¦Όκ³Ό κ°μ΄ β λ€μ΄μλͺ¬λλ‘ νννκΈ°λ νκ³ μλλ©΄ μ΄μ λ‘λ νννκΈ°λ νλ€.
- κ·Έλ¦¬κ³ μ£Ό μλ³μλ μ μΌν μμ±μ΄λ―λ‘ λ€λ₯Έ μμ±κ³Όμ λͺ νν ꡬλΆμ μν΄ κ΅¬λΆμ μ λκΈ°λ νλ€.
NOT NULL β
- ν΄λΉ μμ±μ λ€μ΄κ° κ°μ Null μ λΉνμ©νλ€λ©΄, N νΉμ NNμ μ λλ€.
- λ§μΌ Null νμ©νλ€λ©΄ Nμ μ μ§ μλλ€.
μΈλ μλ³μ (FK) ποΈ
- λ°μ΄ν°λ² μ΄μ€ ν μ΄λΈμ Foreign Keyλ₯Ό νν
- μΈλ μλ³μ μμ keyμ μΌμ’ μ΄λΌ 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 λ€μ΄μ΄κ·Έλ¨μ μμκ°μ΄ μ λ€μ λ§ κΈλλ€λ©΄ κ°λ μ±μ΄ λ§€μ° μμ’μμ§κ³ νκ° λλ¬μμ§κΈ° λλ¬Έμ, μ΄λ¬ν μν°ν°κ°μ 1 λ λ€μ κ΄κ³λ₯Ό νκΈ° νκΈ° μν΄ ERDμμλ μ μ λ λͺ¨μμ λ€λ₯΄κ² νμνλ λ°©λ²μ μ¬μ©νλ€.
One-to-One Cardinality (1:1 κ΄κ³)
- νμκ° μ 체μ 보λ 1:1λ‘ λ§€μΉλλ€.
- νλͺ μ νμμ νλμ μ 체μ 보λ₯Ό κ°κΈ° λλ¬Έμ΄λ€.
One-to-Many Cardinality (1:N κ΄κ³)
- νλͺ μ νμμ μ¬λ¬κ°μ μ·¨λ―Έλ₯Ό κ°μ§μλ μλ€.
Many-to-Many Cardinality (M:N κ΄κ³)
- μ ν μν°ν° μ
μ₯μμ, TV μ νμ λμ° ν°λΉ, μΌμ± ν°λΉ, μ ν ν°λΉ κ°μ μ¬λ¬ μ μ‘°μ
체 μ νμ΄ μμ μ μλ€.
μ΄λ λμ₯κ³ λ μΈνκΈ°λ λ§μ°¬κ°μ§μ΄λ€. μ¬λ¬ κΈ°μ μμ μμ λ§μ μνλ₯Ό μμ°νλ€. - μ μ‘°μ
체 μν°ν° μ
μ₯μμ, μΌμ± μ μ‘°μ
체λ μΈνκΈ°λ§ μμ°νλκ² μλλΌ MP3λ κ°μ΄ μμ°νλ€.
μ€μ λ‘ μΌμ±μ΄λ μ ν νμ¬λ κ°μ μ ν, μ€λ§νΈν°, μ μκΈ°κΈ° λ± μ¬λ¬ μ’ λ₯μ μ νμ μμ°νλ€. - λ°λΌμ μ νκ³Ό μ μ‘°μ 체 κ΄κ³λ λ€ λ λ€ κ΄κ³ λλ€.
Many-to-Many Cardinality κ΄κ³μ ν΄μ
- κ·Έλ°λ° λ μν°ν°κ° λ€ λ λ€ κ΄κ³μ μλ κ²½μ°, λκ°μ μν°ν°λ§μΌλ‘λ μλ‘λ₯Ό νννλλ° λΆμ‘±νλ€.
- λ°μ΄ν° λͺ¨λΈλ§μμλ M:N κ΄κ³λ₯Ό μμ±λμ§ μμ λͺ¨λΈλ‘ κ°μ£Όνμ¬, λ μν°ν°μ κ΄κ³λ₯Ό 1:N, N:1 λ‘ μ‘°μ νλ μμ μ΄ νμνλ€.
- λ°λΌμ λ μν°ν°μ κ΄λ ¨μ±μ νννκΈ° μν΄μλ μ€κ°μ λ λ€λ₯Έ μν°ν°λ₯Ό νμλ‘ νλ€. μ΄ μ€κ° μν°ν°(μ μ²΄λ³ μ ν)κ° λ μν°ν°μ 곡μ μμ± μν μ νκ² λλ€.
- μ΄ λΆλΆμ λ°μ΄ν° λͺ¨λΈλ§μμ 곡μ μ²λΌ μ μ©λλ κ·μΉμ΄λ©°, ERD νλ‘κ·Έλ¨μμ M:Nμ μ‘κ² λλ€λ©΄ μλμΌλ‘ μλμ κ°μ΄ μ‘°μ μμ μ΄ νν΄μ§κ² λλ€.
ERD κ΄κ³μ μ°Έμ¬λ
- κ΄κ³μ κ° μΈ‘μ λμλ½μ κΈ°νΈλ₯Ό νμνλ€.
- '|' νμκ° μλ κ³³μ λ°λμ μμ΄μΌ νλ κ°μ²΄. (νμ)
- 'O' νμκ° μλ€λ©΄ μμ΄λ λλ κ°μ²΄. (μ ν)
κ΄κ³μ μ ν κΈ°νΈ π©
- μ·¨λ―Έλ₯Ό κ°μ§ νμμ΄ μμμλ μκ³ , μ·¨λ―Έκ° μλ νμμ΄ μμ μλ μλ€.
- κΉμ² μ νμμ κ²μμ΄ μ·¨λ―ΈλΌμ, λμλλ νμμ μ·¨λ―Έ ν μ΄λΈμ μκΈ° λλ¬Έμ κ΄κ³κ° μλ€. (μ ν)
- λμ λλ μΈμ€ν΄μ€κ° μμ μλ μκ³ μμ μλ μμ λ μ ν κ΄κ³ κΈ°νΈλ₯Ό μ¬μ©νλ€.
κ΄κ³μ νμ κΈ°νΈ π©
- νλ² 21003 νμμ μ·¨λ―Έκ° λμ λΌλ μ λ³΄κ° μλ€λ©΄, 21003νλ²μ νμμ μ λ³΄κ° νμ μν°ν°μ λ°λμ μ‘΄μ¬ν΄μΌ νλ€. (νμ)
- λ°λΌμ νμμ μ·¨λ―Έ ν μ΄λΈμ λͺ¨λ νμ ν μ΄λΈμ λμλλ€.
- μ΄λ€ νμμ΄ μ΄λ€ μ·¨λ―Έλ₯Ό κ°λλ° κ·Έ νμμ΄ μ‘΄μ¬νμ§ μλλ€λ©΄ λκ° μλͺ»λ κ²μ΄ λλ€.
- μ΄μ κ°μ΄ μ΄λ ν μͺ½μ΄ μ‘΄μ¬νλ©΄ λ€λ₯Έ μͺ½λ λ°λμ μ‘΄μ¬ν΄μΌ νλ κ΄κ³λ₯Ό νμ κ΄κ³ κΈ°νΈλ₯Ό μ¬μ©νλ€.
ERD μν°ν° κ΄κ³ νν μ΄μ 리
1 : 1 κ΄κ³ : λΆλͺ¨(SHOP)λ νλμ μμ(FOOD)μ΄ μλ€.
1 : N κ΄κ³ : λΆλͺ¨(SHOP)λ νλ μ΄μμ μμ(FOOD)μ΄ μλ€.
M : N κ΄κ³ : νλ μ΄μμ λΆλͺ¨μ νλ μ΄μμ μμμ΄ μλ€.
1 : 1(o) κ΄κ³ : λΆλͺ¨λ νλμ μμμ΄ μμ μλ μλ€. (μμ μλ μλ€)
1 : N(o) κ΄κ³ : λΆλͺ¨λ μ¬λ¬κ°μ μμμ΄ μμ μλ μλ€. (μμ μλ μλ€)
ERD μ°μ΅ μμ - λμ κ΄λ¦¬ μμ€ν
[νμ ↔ λμ¬]
- νμλ²νΈPKκ° λμ¬ ν μ΄λΈμμ FKλ‘ μΌλ°μμ±μΌλ‘ μ°μ΄κ³ μλ€. ( μ μ )
- νμμ λμ¬λ₯Ό μ¬λ¬κ° ν μ μλ€. ( 1:N )
- μμ λμ¬νμ§ μμ νμμ΄ μμ μ μλ€. ( 1:N(μ ν) )
- λμ¬λ₯Ό ν λ λ°λμ νμ μ λ³΄κ° νμλ‘ μ‘΄μ¬ν΄μΌνλ€. ( 1[νμ]:N[μ ν] )
β
[λμ ↔ λμ¬]
- λμλ²νΈPKκ° λμ¬ ν μ΄λΈμμ FKλ‘ μΌλ°μμ±μΌλ‘ μ°μ΄κ³ μλ€. ( μ μ )
- λμκ° κ³Όκ±°μ μ¬λ¬λ² λμ¬λ κΈ°λ‘μ΄ μμ μ μμΌλ. ( 1:N )
- μμ λμ¬νμ§ μμ λμκ° μμ μ μλ€. ( 1:N[μ ν] )
- λμ¬λ₯Ό ν λ λ°λμ λμ μ λ³΄κ° νμλ‘ μ‘΄μ¬ν΄μΌνλ€. ( 1[νμ]:N[μ ν] )
[νμ ↔ μμ½]
- νμλ²νΈPKκ° μμ½ ν μ΄λΈμμ FKμ΄μ PKλ‘ μ°μ΄κ³ μλ€. ( μ€μ )
- νμμ μμ½μ μ¬λ¬κ° ν μ μλ€. ( 1:N )
- μμ μμ½νμ§ μμ νμμ΄ μμ μ μλ€. ( 1:N[μ ν] )
- μμ½μ ν λ λ°λμ νμ μ λ³΄κ° νμλ‘ μ‘΄μ¬ν΄μΌνλ€. ( 1[νμ]:N[μ ν] )
ν¨μ¨μ μΈ λͺ¨λΈλ§ μμ νκΈ°
μμ λμ κ΄λ¦¬ λͺ¨λΈλ§μ μ¬μ€ μλͺ»λ ꡬ쑰μ΄λ€.
λμ Entity κ°μ κ²½μ°, λμκ΄μ κ°μ μ± (μ± μ΄λ¦μ΄ λκ°μ)μ΄ μλ€λ κ°μ νμ λͺ¨λΈλ§μ νμ§λ§ μ¬κΈ°μ ν° νμ μ΄ μ‘΄μ¬νλ€. βμλνλ©΄ λμλ²νΈλ‘ κ°μ μ± μ΄ μλλΌλ λ²νΈλ₯Ό λ¬λ¦¬ν΄ ꡬλΆμ κ°λ₯ν μ§ λͺ°λΌλ, λκ°μ μλ£λ₯Ό μ€λ³΅νκ²λλ ꡬ쑰μ¬μ κ²°κ³Όμ μΌλ‘ λ°μ΄ν°κ³΅κ°μ λλΉνλ κ²°κ³Όλ₯Ό μ΄λνκΈ° λλ¬Έμ΄λ€.
βλ°λΌμ λμκ΄μ μ€μ λμλ₯Ό λνλ΄λ Entityμ μ€μ λμμ μμ±μ μ μνλ Entityλ₯Ό ꡬλΆν΄μΌ λλ€. λμλ²νΈλ§ λ€λ₯Έ λκ°μ μ± μΈ μμ± μ λ³΄κ° μμ ν κ°κΈ° λλ¬Έμ, μλ μ¬μ§μμ λ³Όμ μλ―μ΄ κ°μ λμμ μμ±λ€μ λ°μ΄ν°κ° μ€λ³΅μΌλ‘ μ μ₯λ¨μ νλ‘ λ³Ό μ μλ€.
λ°λΌμ μ΄ μμ±μ 보λ₯Ό μ€λ³΅ν΄μ ν ν μ΄λΈμ μ μ₯νλ κ²λ³΄λ€, ν μ΄λΈμ λ°λ‘ λΆλ¦¬ν΄μ μμ±μ λ°λ‘ μ μ₯νλκ² λ°μ΄ν°κ³΅κ°μ μ μ½ν μ μκ² λλ€. μ΄λ¬ν λΆλ΄ νμλ₯Ό μ κ·νλΌκ³ νλλ° μμΈν μ리λ λ€μ ν¬μ€ν μ μ°Έκ³ λ°λλ€.
μμ λ λμ κ΄λ¦¬ μμ€ν ERD
λμ μν°ν°λ₯Ό λΆλ¦¬ν΄, λμμ λμμ λ³΄λ‘ μͺΌκ°κ³ μ΄λ₯Ό μ°κ²°νλ€. κ·Έλ¦¬κ³ ISBN(κ΅μ νμ€λμλ²νΈ)μ μΈλν€λ‘ μ€μ ν΄ κ΄κ³λ₯Ό ꡬμ±νλ€. κ·Έλ¦¬κ³ μΆκ°μ μΌλ‘ μμ½ μν°ν°λ μ§κ΄μ μ΄κ², λμ¬μ μ°κ²°νλκ² μλλΌ, νμκ³Ό λμλ₯Ό μ°κ²°νλκ² λ§λ€. λ°λΌμ λμ μν°ν°μ μμ½ μν°ν°λ₯Ό μ°κ²°ν΄μ€λ€.
[λμ μ 보 ↔ λμ]
- ISBN(κ΅μ νμ€λμλ²νΈ) PKκ° λμ ν μ΄λΈμμ FKλ‘ μΌλ°μμ±μΌλ‘ μ°μ΄κ³ μλ€. ( μ μ )
- κ°μ μ± μ΄ μ¬λ¬κ° μμ μ μλ€. λμμ λ³΄κ° κ°μ λμκ° μ¬λ¬κ°. ( 1:N )
- μ μ€λ μ± μ΄ μμμ μλ€. λμμ 보λ 무νμ μ λ³΄μΌ λΏμ΄κ³ , λμ μν°ν°λ μ€μ 물리μ μν°ν°μ΄λ€. ( 1:N[μ ν] )
- λμλ λ°λμ λμ μ λ³΄κ° νμλ‘ μ‘΄μ¬ν΄μΌνλ€. ( 1[νμ]:N[μ ν] )
[λμ ↔ μμ½]
- λμλ²νΈ PKκ° μμ½ ν μ΄λΈμμ FKμ΄μ PKλ‘ μ°μ΄κ³ μλ€. ( μ€μ )
- νλμ λμμ μ¬λ¬κ° μμ½μ΄ κ±Έλ € μμμ μλ€. ( 1:N )
- μμ½μ΄ μλ λμκ° μμ μ μλ€. ( 1:N[μ ν] )
- μμ½ μ 보μλ λ°λμ λμ μ λ³΄κ° λ€μ΄ μμ΄μΌ νλ€. ( 1[νμ]:N[μ ν] )
ERD λ€μ΄μ΄κ·Έλ¨ ν΄ μΆμ²
μκ·Έλ¦ΌμΌλ‘ ERD λ€μ΄μ΄κ·Έλ¨μ 그리μ§λ§κ³ μννΈμ¨μ΄λ₯Ό λΉλ € μ§μμ μκ² κ΅¬μ±νλ κ²μ΄ λμ€μ μ μ§λ³΄μ ν λ μ μ©νλ€. μ΄ ν¬μ€ν μμλ λνμ μΈ ERD λ€μ΄μ΄κ·Έλ¨ ν΄ λκ°μ§λ₯Ό μκ°ν΄λ³Έλ€.
MySQL μν¬λ²€μΉμμ ERD λ§λ€κΈ°
- μν¬λ²€μΉ μ체μ ERD λ€μ΄μ΄κ·Έλ¨ ν΄μ΄ λ΄μ₯λμ΄ μλ€.
- 미리 μμ±λ SQLλ¬Έμ μλμΌλ‘ ERDλ‘ λ°κΏμ£ΌκΈ°λ νμ¬ μ μ©νλ€.
μ¨λΌμΈμμ ERD λ§λ€κΈ°
- μν¬λ²€μΉλ μ’ μ€λλ μννΈμ¨μ΄λΌμ 보기μλ μ¬λνκ³ κ°λ μ±λ κ·Έλ κ² μ’μ§ μλ€.
- μ¨λΌμΈ μ¬μ΄νΈμμ λ³΄λ€ μμΈνκ² ERDλ₯Ό κ·Έλ¦¬κ³ , 쿼리λ₯Ό μΆμΆν μ μμΌλ©° νμ λ κ°λ₯ν ERD CLOUDλ₯Ό κ°λ ₯ μΆμ²νλ λ°λ€.
# μ°Έκ³ μλ£
μ½κ² λ°°μ°λ μ€λΌν΄λ‘ λ°°μ°λ λ°μ΄ν°λ² μ΄μ€ κ°λ‘ κ³Ό μ€μ΅
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