πŸ’»/CS

[DB] λ°μ΄ν„°λ² μ΄μŠ€ μ‹€μŠ΅

ruhz 2020. 12. 2. 05:16

μ‹€μŠ΅κ³Όμ œ

  • ν•œλΉ› 항곡사에 νšŒμ›μœΌλ‘œ κ°€μž…ν•˜λ €λ©΄, νšŒμ›μ•„μ΄λ””, λΉ„λ°€λ²ˆν˜Έ, μ„±λͺ…, μ‹ μš©μΉ΄λ“œμ •λ³΄λ₯Ό μž…λ ₯ν•΄μ•Όν•œλ‹€.
  • νšŒμ›μ˜ μ‹ μš©μΉ΄λ“œ μ •λ³΄λŠ” μ—¬λŸ¬ 개λ₯Ό μ €μž₯ν•  수 μžˆλŠ”λ°, μ„ΈλΆ€μ μœΌλ‘œλŠ” μ‹ μš©μΉ΄λ“œλ²ˆν˜Έ, μœ νš¨κΈ°κ°„μ„ μ €μž₯ν•  수 μžˆλ‹€.
  • ν•œλΉ› ν•­κ³΅μ‚¬μ—μ„œ λ³΄μœ ν•œ 비행기에 λŒ€ν•œ λΉ„ν–‰κΈ°λ²ˆν˜Έ, μΆœλ°œλ‚ μ§œ, μΆœλ°œμ‹œκ°„ 정보λ₯Ό μ €μž₯ν•˜κ³  μžˆλ‹€.
  • ν•œλΉ› ν•­κ³΅μ‚¬μ—μ„œλŠ” μ’Œμ„μ— λŒ€ν•΄ μ’Œμ„λ²ˆν˜Έ, 등급정보λ₯Ό μ €μž₯ν•˜κ³ μžˆλ‹€.
  • νšŒμ›μ€ μ’Œμ„μ„ μ˜ˆμ•½ν•˜λŠ”λ°, νšŒμ› ν•œ λͺ…은 μ’Œμ„μ„ ν•˜λ‚˜λ§Œ μ˜ˆμ•½ν•  수 있고, ν•œ μ’Œμ„μ€ νšŒμ› ν•œ λͺ…λ§Œ μ˜ˆμ•½ν•  수 μžˆλ‹€.
  • λΉ„ν–‰κΈ°μ—λŠ” μ’Œμ„μ΄ μ‘΄μž¬ν•˜λŠ”λ°, λΉ„ν–‰κΈ° ν•˜λ‚˜μ—λŠ” μ’Œμ„μ΄ μ—¬λŸ¬ 개 μ‘΄μž¬ν•  수 있고 ν•œ μ’Œμ„μ€ λ°˜λ“œμ‹œ ν•˜λ‚˜μ˜ λΉ„ν–‰κΈ°μ—λ§Œ μ‘΄μž¬ν•΄μ•Ό ν•œλ‹€. 그리고 μ’Œμ„μ€ λΉ„ν–‰κΈ°κ°€ μ—†μœΌλ©΄ μ˜λ―Έκ°€ μ—†λ‹€.

개체 정리

개체 속성
νšŒμ› νšŒμ›μ•„μ΄λ””, λΉ„λ°€λ²ˆν˜Έ, μ„±λͺ…, μ‹ μš©μΉ΄λ“œ(μ‹ μš©μΉ΄λ“œλ²ˆν˜Έ, μœ νš¨κΈ°κ°„)
λΉ„ν–‰κΈ° λΉ„ν–‰κΈ°λ²ˆν˜Έ, μΆœλ°œλ‚ μ§œ, μΆœλ°œμ‹œκ°„
μ’Œμ„ μ’Œμ„λ²ˆν˜Έ, 등급정보

 

관계 정리

관계 개체 λΆ„λ₯˜ λΉ„κ³ 
μ˜ˆμ•½ νšŒμ› : μ’Œμ„ 1 : 1  
쑴재 λΉ„ν–‰κΈ° : μ’Œμ„ 1 : N κ°•ν•œκ°œμ²΄ : μ•½ν•œκ°œμ²΄

 

개체-관계 λͺ¨λΈ

λ¦΄λ ˆμ΄μ…˜ ꡬ성

 

RDB - λ¦΄λ ˆμ΄μ…˜ μŠ€ν‚€λ§ˆ λ³€ν™˜ κ·œμΉ™ 5가지

λ¦΄λ ˆμ΄μ…˜ μŠ€ν‚€λ§ˆ λ³€ν™˜ κ·œμΉ™ E-R λ‹€μ΄μ–΄κ·Έλž¨μ— ν‘œν˜„λœ κ°œμ²΄μ™€ κ΄€κ³„λŠ” λ¦΄λ ˆμ΄μ…˜μœΌλ‘œ ν‘œν˜„ν•˜λŠ” 방법과 λ‹€λ₯΄λ‹€. κ·Έλž˜μ„œ λ¦΄λ ˆμ΄μ…˜ μŠ€ν‚€λ§ˆλ‘œ λ³€ν™˜ν•  λ•Œ κ·œμΉ™μ„ μ μš©ν•œλ‹€. 더 μ™„λ²½ν•˜κ²Œ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό

jaehoney.tistory.com

-- κ·œμΉ™ "1:1 κ΄€κ³„λŠ” μ™Έλž˜ν‚€λ‘œ λ³€ν™˜ν•œλ‹€."
-- : ν•„μˆ˜ μ°Έμ—¬ν•˜λŠ” 개체(νšŒμ›-μ’Œμ„)λ₯Ό μ„œλ‘œ μ™Έλž˜ν‚€λ‘œ 지정해 관계(μ˜ˆμ•½) ν‘œν˜„
CREATE TABLE νšŒμ›(
    νšŒμ›μ•„μ΄λ””  VARCHAR(20) NOT NULL,
    λΉ„λ°€λ²ˆν˜Έ    VARCHAR(20) NOT NULL,
    μ„±λͺ…        VARCHAR(20) NOT NULL,
    μ’Œμ„λ²ˆν˜Έ    INT,
    PRIMARY KEY(νšŒμ›μ•„μ΄λ””),
    UNIQUE(μ’Œμ„λ²ˆν˜Έ),
    FOREIGN KEY(μ’Œμ„λ²ˆν˜Έ) REFERENCES μ’Œμ„(μ’Œμ„λ²ˆν˜Έ)
);

-- κ·œμΉ™ "닀쀑 κ°’ 속성은 λ¦΄λ ˆμ΄μ…˜μœΌλ‘œ λ³€ν™˜"
-- : λΆ€λͺ¨μ˜ κΈ°λ³Έν‚€(νšŒμ›μ•„μ΄λ””)λ₯Ό μ™Έλž˜ν‚€λ‘œ ν¬ν•¨μ‹œν‚€κ³ , μžμ‹ μ˜ 속성과 μ‘°ν•©ν•΄ κΈ°λ³Έν‚€ 생성
CREATE TABLE μ‹ μš©μΉ΄λ“œ(
    νšŒμ›μ•„μ΄λ””   VARCHAR(20) NOT NULL,
    μ‹ μš©μΉ΄λ“œλ²ˆν˜Έ BIGINT,
    μœ νš¨κΈ°κ°„     DATE,
    PRIMARY KEY(νšŒμ›μ•„μ΄λ””, μ‹ μš©μΉ΄λ“œλ²ˆν˜Έ),
    FOREIGN KEY(νšŒμ›μ•„μ΄λ””) REFERENCES νšŒμ›(νšŒμ›μ•„μ΄λ””)
);

CREATE TABLE λΉ„ν–‰κΈ°(
    λΉ„ν–‰κΈ°λ²ˆν˜Έ   INT NOT NULL,
    μΆœλ°œμ‹œκ°„     TIME,
    μΆœλ°œλ‚ μ§œ     DATE,
    PRIMARY KEY(λΉ„ν–‰κΈ°λ²ˆν˜Έ)
);

-- κ·œμΉ™ "1:N κ΄€κ³„λŠ” μ™Έλž˜ν‚€λ‘œ λ³€ν™˜ν•œλ‹€."
-- : 1(λΉ„ν–‰κΈ°)의 κΈ°λ³Έν‚€λ₯Ό N(μ’Œμ„)의 μ™Έλž˜ν‚€λ‘œ 지정
-- : μ•½ν•œκ°œμ²΄(μ’Œμ„)κ°€ μ°Έμ—¬ν•˜λŠ” 경우, 기본킀에 μ™Έλž˜ν‚€(λΉ„ν–‰κΈ°λ²ˆν˜Έ)λ₯Ό 포함
CREATE TABLE μ’Œμ„(
    μ’Œμ„λ²ˆν˜Έ     INT NOT NULL,
    λΉ„ν–‰κΈ°λ²ˆν˜Έ   INT NOT NULL,
    λ“±κΈ‰         INT NOT NULL,
    νšŒμ›μ•„μ΄λ””   VARCHAR(20),
    PRIMARY KEY(μ’Œμ„λ²ˆν˜Έ, λΉ„ν–‰κΈ°λ²ˆν˜Έ),
    UNIQUE(νšŒμ›μ•„μ΄λ””),
    FOREIGN KEY(λΉ„ν–‰κΈ°λ²ˆν˜Έ) REFERENCES λΉ„ν–‰κΈ°(λΉ„ν–‰κΈ°λ²ˆν˜Έ),
    FOREIGN KEY(νšŒμ›μ•„μ΄λ””) REFERENCES νšŒμ›(νšŒμ›μ•„μ΄λ””)
);