๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณต๋ถ€/Oracle

[ex28] modeling

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„
    1. ์š”๊ตฌ์‚ฌํ•ญ ์ˆ˜์ง‘ ๋ฐ ๋ถ„์„
    2. ๊ฐœ๋… ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง
    3. ๋…ผ๋ฆฌ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง
    4. ๋ฌผ๋ฆฌ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง
    5. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์ถ•
    
    
    ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง
    - ์š”๊ตฌ ๋ถ„์„ ๊ธฐ๋ฐ˜ > ์ˆ˜์ง‘ํ•œ ๋ฐ์ดํ„ฐ > ๋ถ„์„ > ์ €์žฅ ๊ตฌ์กฐ ์ƒ์„ฑ > ๋„์‹ํ™” > ERD(์‚ฐ์ถœ๋ฌผ)
    - ๋ฐ์ดํ„ฐ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ์ž‘์—…
    - DBMS ์ข…๋ฅ˜๋ฅผ ๊ฒฐ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค.
    - ๊ฐœ๋… ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง > ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„ํ•œ ์„ค๊ณ„๋„ > ํ…Œ์ด๋ธ” + ์ปฌ๋Ÿผ + ๊ด€๊ณ„
    - ๋…ผ๋ฆฌ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง > ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ์งˆ ๋ฐ˜์˜ > ์†์„ฑ + ๋„๋ฉ”์ธ + ํ‚ค > ์ œ๋Œ€๋กœ ๋œ ์„ค๊ณ„๋„
    - ๋ฌผ๋ฆฌ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง > ํŠน์ • DBMS ๊ฒฐ์ • > ์˜ค๋ผํด ์„ ์ • + ๋ฐ˜์˜ > ๋ฌผ๋ฆฌ์  ์„ค์ •..
    
    
    
    1. ERD, Entity Relationship Diagram
    - ์—”ํ‹ฐํ‹ฐ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•œ ๊ทธ๋ฆผ
    - ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋ธ๋ง ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜
    - ์†, ์˜คํ”ผ์Šค, ์ „๋ฌธํ‹€(exERD, ER-Win ๋“ฑ)
    
    2. Entity, ์—”ํ‹ฐํ‹ฐ
    - ๋‹ค๋ฅธ Entity์™€ ๋ถ„๋ฅ˜๋  ์ˆ˜ ์žˆ๊ณ , ๋‹ค๋ฅธ Entity์— ๋Œ€ํ•ด ์ •ํ•ด์ง„ ๊ด€๊ณ„๋ฅผ ๋งบ์„ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋‹จ์œ„
    - ๋ฆด๋ ˆ์ด์…˜ = ๊ฐ์ฒด = ๋ ˆ์ฝ”๋“œ = ์—”ํ‹ฐํ‹ฐ = ํ…Œ์ด๋ธ”(ํ–‰)
        a. ํ•™์ƒ ์ •๋ณด ๊ด€๋ฆฌ
            - ์ •๋ณด ์ˆ˜์ง‘: ์•„์ด๋””, ํ•™์ƒ๋ช…, ๋‚˜์ด, ์ฃผ์†Œ, ์—ฐ๋ฝ์ฒ˜..
            - ํ•™์ƒ(_์•„์ด๋””_, ํ•™์ƒ๋ช…, ๋‚˜์ด, ์ฃผ์†Œ, ์—ฐ๋ฝ์ฒ˜)
            
        b. ๊ฐ•์˜์‹ค ์ •๋ณด ๊ด€๋ฆฌ 
            - ์ •๋ณด ์ˆ˜์ง‘: ๊ฐ•์˜์‹ค ํ˜ธ์ˆ˜, ํฌ๊ธฐ, ์ธ์›์ˆ˜, ์šฉ๋„, ๋ฉด์ ..
            - ๊ฐ•์˜์‹ค(๊ฐ•์˜์‹ค ํ˜ธ์ˆ˜, ํฌ๊ธฐ, ์ธ์›์ˆ˜)
    
    3. Attribute, ์†์„ฑ
    - ์—”ํ‹ฐํ‹ฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ •๋ณด
    - ์ปฌ๋Ÿผ
    
    4. Entity Relationship, ์—”ํ‹ฐํ‹ฐ ๊ด€๊ณ„
    - ํ•™์ƒ(์ด๋ฆ„, ๋‚˜์ด..)
    - ๊ต์‚ฌ(์ด๋ฆ„,๋‹ด๋‹น๊ณผ๋ชฉ..)
    - ํ•™๊ธ‰(ํ•™๋…„,๋ฐ˜..)
    - ํ•™์ƒ <-> ํ•™๊ธ‰ <-> ๊ต์‚ฌ
    
    
    
    ERD ๊ทธ๋ฆฌ๋Š” ๋ฐฉ๋ฒ• > Entity, Attribute, Relationship ๋“ฑ์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•
    
    1. Entity
    - ์‚ฌ๊ฐํ˜•
    - ์ด๋ฆ„์„ ์ž‘์„ฑ
    - ERD๋‚ด์— ๋™์ผํ•œ ์—”ํ‹ฐํ‹ฐ๋ช… ์‚ฌ์šฉ๊ธˆ์ง€
    
    2. Attribute
    - ๋™๊ทธ๋ผ๋ฏธ
    - ์—”ํ‹ฐํ‹ฐ์— ์—ฐ๊ฒฐ
    - ์ถ”๊ฐ€ ํ‘œ๊ธฐ์‚ฌํ•ญ(์†์„ฑ์— ๋Œ€ํ•œ ์„ฑ์งˆ ๊ธฐ์ˆ )
        a. NN, Not Null
            - ํ•ด๋‹น ์†์„ฑ์€ ๋ฐ˜๋“œ์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.
            - ํ•„์ˆ˜๊ฐ’
            
        b. ND, not Duplicate
            - ํ•ด๋‹น ์†์„ฑ์€ ์ค‘๋ณต๋  ์ˆ˜ ์—†๋‹ค.
            - ์œ ์ผ๊ฐ’(Unique)
        
        1. ์ค‘๋ณต๋˜๋ฉด ์•ˆ๋˜๊ณ , ์ƒ๋žต๋˜๋ฉด ์•ˆ๋œ๋‹ค.(NN,ND)
            - #*์†์„ฑ๋ช…
        2. ์ƒ๋žต๋˜๋ฉด ์•ˆ๋œ๋‹ค.(NN)
            - *์†์„ฑ๋ช…
        3. ์ค‘๋ณต๋˜๋ฉด ์•ˆ๋œ๋‹ค.(ND)
            - #์†์„ฑ๋ช…
        4. ์ค‘๋ณต๋˜๋„ ๋˜๊ณ , ์ƒ๋žต๋˜๋„ ๋œ๋‹ค.
            - ์†์„ฑ๋ช…
            -o์†์„ฑ๋ช…
            -optional
    
    3. Relationship
    - ๋งˆ๋ฆ„๋ชจ
    - ์—”ํ‹ฐํ‹ฐ์™€ ์—”ํ‹ฐํ‹ฐ์˜ ๊ด€๊ณ„
    - ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ‘œํ˜„(***)
    - ๊ด€๊ณ„์˜ ํŒจํ„ด
        
        A์—”ํ‹ฐํ‹ฐ : B์—”ํ‹ฐํ‹ฐ
        a. 1:1
            - ์ผ๋Œ€์ผ
        b. 1:N
            - ์ผ๋Œ€๋‹ค
        c. N:M
            - ๋‹ค๋Œ€๋‹ค
    
    
    
    
    ๋น„๋””์˜ค ๋Œ€์—ฌ์ 
    
    1. ์—”ํ‹ฐํ‹ฐ ์ •์˜
        - ์žฅ๋ฅด
        - ๋น„๋””์˜ค
        - ํšŒ์›
    
    2. ์†์„ฑ ์ •์˜
    
    3. ์‹๋ณ„์ž ์„ ์–ธ
        - ๊ธฐ๋ณธํ‚ค
    
    ----------------------- ๊ฐœ๋…์  ๋ชจ๋ธ๋ง
    
    4. ๋…ผ๋ฆฌ ๋ชจ๋ธ๋ง > ๋…ผ๋ฆฌ ERD
        - 1~3์„ ๋ฐ˜๋ณต > ์ „๋ฌธ์ ์œผ๋กœ ๊ทธ๋ฆฌ๊ธฐ
    
    ----------------------- ๋…ผ๋ฆฌ ๋ชจ๋ธ๋ง
    
    5. ๋ฌผ๋ฆฌ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง > ์˜ค๋ผํด ๋งž๊ฒŒ ๊ตฌ์ฒด์ 
        - ๋ฌผ๋ฆฌ๋ช…(์‹๋ณ„์ž) ์ƒ์„ฑ > name
        - ์ž๋ฃŒํ˜• > varchar2
        - ๊ธธ์ด > 30
        - ๋„๋ฉ”์ธ > 2๊ธ€์ž~5๊ธ€์ž ์ด๋‚ด์˜ ํ•œ๊ธ€
        - ์ œ์•ฝ์‚ฌํ•ญ ์ƒ์„ฑ
    
    ----------------------- ๋ฌผ๋ฆฌ ๋ชจ๋ธ๋ง
    
    
    
    
    
    
    
    ๋ชจ๋ธ๋ง ์ž‘์—… > ERD(๋…ผ๋ฆฌ,๋ฌผ๋ฆฌ) > [์ •๊ทœํ™”] > ์•ˆ์ •์„ฑ ๋†’๊ณ , ํšจ์œจ์  ๊ตฌ์กฐ๋กœ ๋ณ€๊ฒฝ > ERD
    
    
    
    
    
    
    
    ์ •๊ทœํ™”, Normalization
    - ์ž๋ฃŒ์˜ ์†์‹ค์ด๋‚˜, ๋ถˆํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์—†์• ๊ณ , ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ์ข…์†์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ
    ์œ„ํ•ด ERD๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ์ž‘์—…
    - ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ํ…Œ์ด๋ธ”(ERD) > ๋น„์ •ํ˜•, ๋น„์ •๊ทœํ™” ์ƒํƒœ > ์ •๊ทœํ™” > ์ •๊ทœํ™”๋œ ๊ตฌ์กฐ์˜ ERD
    - ์ œ 1 ์ •๊ทœํ™” > ์ œ 2 ์ •๊ทœํ™” > ์ œ 3 ์ •๊ทœํ™” ..
    
    ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์ด ์ง€ํ–ฅํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ
    1. ์›์ž๊ฐ’์„ ๊ฐ€์ง„๋‹ค.
    2. ์ตœ๋Œ€ํ•œ null์„ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค.
    3. ์ค‘๋ณต๊ฐ’์„ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค.
    
    ์ด์ƒ ํ˜„์ƒ
    1. ์‚ฝ์ž… ์ด์ƒ, Insertion Anomaly
        - ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ, ์›ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๊นŒ์ง€ ๊ฐ™์ด ๋„ฃ์–ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ
    2. ๊ฐฑ์‹  ์ด์ƒ, Update Anomaly
        - ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ 2๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์— ๋™์‹œ ์กด์žฌ > ๋‘˜ ์ค‘ 1๊ฐœ๋งŒ ์ˆ˜์ • ๋ฐœ์ƒ > ๋‘˜ ์ค‘ ์–ด๋А ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ?
    3. ์‚ญ์ œ ์ด์ƒ, Deletion Anomaly
        - ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ, ์›ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๊นŒ์ง€ ๊ฐ™์ด ์ง€์›Œ์•ผ ํ•˜๋Š” ์ƒํ™ฉ
        
    
    
    ํ•จ์ˆ˜ ์ข…์†, Functional Dependency
    - 1๊ฐœ์˜ ํ…Œ์ด๋ธ” ๋‚ด ์ปฌ๋Ÿผ๋ผ๋ฆฌ์˜ ๊ด€๊ณ„ ํ‘œํ˜„
    - *** ์ •๊ทœํ™”๋ž€ '๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์†'์ด๋‚˜ '์ดํ–‰ ํ•จ์ˆ˜ ์ข…์†'์„ ๋ชจ๋‘ ์—†์• ๊ณ ,
    ๋ชจ๋“  ์ปฌ๋Ÿผ ๊ด€๊ณ„๋ฅผ '์™„์ „ ํ•จ์ˆ˜ ์ข…์†'์œผ๋กœ ๋งŒ๋“œ๋Š” ์ž‘์—…์ด๋‹ค.
    
    1. ์™„์ „ ํ•จ์ˆ˜ ์ข…์†, Full Functional Dependency
    2. ๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์†, Partial Functional Dependency
    3. ์ดํ–‰ ํ•จ์ˆ˜ ์ข…์†, Transitive Functional Dependency
    
    
    
    ์ •๊ทœํ™”
    - ๋น„์ •๊ทœํ™” > ์ •๊ทœํ™”
    - 1NF > 2NF > 3NF(Normal Form)
    
    ์ œ 1 ์ •๊ทœํ™”, 1NF
    - ๋ชจ๋“  ์ปฌ๋Ÿผ(์†์„ฑ)์€ ์›์ž๊ฐ’์„ ๊ฐ€์ง„๋‹ค.
    - ๋‹ค์ค‘๊ฐ’(์—ฌ๋Ÿฌ๊ฐœ๋กœ ๋ถ„๋ฆฌ ๊ฐ€๋Šฅํ•œ ๊ฐ’)์„ 1๊ฐœ์˜ ์ปฌ๋Ÿผ์•ˆ์— ๋„ฃ์ง€ ์•Š๋Š”๋‹ค.
    - ๋‹ค์ค‘๊ฐ’์„ ๊ฐ€์ง€๋Š” ์ปฌ๋Ÿผ ์ฐพ๊ธฐ > ์—†์• ๋Š” ์ž‘์—…
    
    
    ์ œ 2 ์ •๊ทœํ™”, 2NF
    - ๊ธฐ๋ณธํ‚ค(PK)๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ๋‚˜๋จธ์ง€ ์ปฌ๋Ÿผ์€ ๊ธฐ๋ณธํ‚ค์— ์™„์ „ ํ•จ์ˆ˜ ์ข…์†์ด์–ด์•ผ ํ•œ๋‹ค.
    - ๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์† ๊ฒ€์ƒ‰!! > ๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์† ์ œ๊ฑฐ!!
    - ์ฃผ๋กœ ๋ณตํ•ฉํ‚ค๋ฅผ ๊ฐ€์ง€๋Š” ํ…Œ์ด๋ธ”์—์„œ ๋ฐœ๊ฒฌ๋œ๋‹ค.
        - ์ผ๋ถ€ ์ปฌ๋Ÿผ์ด ๋ณตํ•ฉํ‚ค ์ผ๋ถ€์—๋งŒ ์ข…์†๋˜๋Š” ํ˜„์ƒ์„ ์ œ๊ฑฐํ•˜๋Š” ์ •๊ทœํ™”
    
    ์ œ 3 ์ •๊ทœํ™”, #NF
    - ๊ธฐ๋ณธํ‚ค(PK)๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ๋‚˜๋จธ์ง€ ์ปฌ๋Ÿผ์€ ๊ธฐ๋ณธํ‚ค์— ์™„์ „ ํ•จ์ˆ˜ ์ข…์†์ด์–ด์•ผ ํ•œ๋‹ค.
    - ์ดํ–‰ ํ•จ์ˆ˜ ์ข…์† ๊ฒ€์ƒ‰!! > ์ดํ–‰ ํ•จ์ˆ˜ ์ข…์† ์ œ๊ฑฐ!!
        - ์ปฌ๋Ÿผ์ด ๊ธฐ๋ณธํ‚ค๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํ‚ค์— ์ข…์†๋˜๋Š” ํ˜„์ƒ์„ ์ œ๊ฑฐํ•˜๋Š” ์ •๊ทœํ™”
    
    ์—ญ์ •๊ทœํ™”
    - ์ •๊ทœํ™”๋œ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ์›๋ž˜๋Œ€๋กœ ๋˜๋Œ๋ฆฌ๋Š” ์ž‘์—…
    - 2๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ” > 1๊ฐœ ํ…Œ์ด๋ธ”
    - ์ˆ˜์—… ์ค‘ ์‚ฌ์šฉ ๊ธˆ์ง€!!

 


-- ๋ณตํ•ฉํ‚ค ์ƒ์„ฑํ•˜๊ธฐ + ์‚ฌ์šฉํ•˜๊ธฐ

-- ํ•™์ƒ
create table tblStudent (
    seq number primary key,     --๋ฒˆํ˜ธ(PK)
    name varchar2(30) not null  --ํ•™์ƒ๋ช…
);

-- ๊ณผ๋ชฉ
create table tblSubject (
    seq number primary key,     --๋ฒˆํ˜ธ(PK)
    name varchar2(30) not null  --๊ณผ๋ชฉ๋ช…
);

-- ์ˆ˜๊ฐ• ์‹ ์ฒญ (๋ณตํ•ฉํ‚ค ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•)
-- ORA-02260: table can have only one primary key
create table tblRegister (
    
    -- ์ปฌ๋Ÿผ ์ˆ˜์ค€์—์„œ๋Š” ๋ณตํ•ฉํ‚ค๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์—†๋‹ค.
    --student_seq number primary key,
    --subject_seq number primary key,
    --regdate date default sysdate
    
    student_seq number references tblStudent(seq),
    subject_seq number references tblSubject(seq),
    regdate date default sysdate,
    
    constraint register_pk primary key(student_seq, subject_seq) --๋ณตํ•ฉํ‚ค ์„ ์–ธ
    
);

drop table tblRegister;


-- ์„ฑ์ 
create table tblScore (
    seq number primary key,
    score number not null,
    
    -- ๋ณตํ•ฉํ‚ค๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค๋Š” ์ปฌ๋Ÿผ ์ˆ˜์ค€์œผ๋กœ ์„ ์–ธํ•  ์ˆ˜ ์—†๋‹ค.
    student_seq number,
    subject_seq number,
    
    constraint score_fk foreign key(student_seq, subject_seq) 
        references tblRegister(student_seq, subject_seq)
);




insert into tblStudent values (1, 'ํ™๊ธธ๋™');
insert into tblStudent values (2, '์•„๋ฌด๊ฐœ');
insert into tblStudent values (3, 'ํ•˜ํ•˜ํ•˜');

insert into tblSubject values (1, '์ž๋ฐ”');
insert into tblSubject values (2, '์˜ค๋ผํด');
insert into tblSubject values (3, 'JDBC');
insert into tblSubject values (4, 'JSP');
insert into tblSubject values (5, 'Spring');

insert into tblRegister values (1, 1, sysdate);
insert into tblRegister values (1, 2, sysdate);
insert into tblRegister values (1, 3, sysdate);
insert into tblRegister values (2, 2, sysdate);
insert into tblRegister values (2, 4, sysdate);
insert into tblRegister values (2, 5, sysdate);
insert into tblRegister values (2, 1, sysdate);
insert into tblRegister values (3, 2, sysdate);
insert into tblRegister values (3, 5, sysdate);

insert into tblScore values (1, 100, 1, 1);
insert into tblScore values (2, 90,  1, 2);
insert into tblScore values (3, 80,  1, 3);
insert into tblScore values (4, 70,  2, 2);
insert into tblScore values (5, 60,  3, 2);

select * from tblStudent;
select * from tblSubject;
select * from tblRegister;
select * from tblScore;

-- ํ•™์ƒ + ๊ณผ๋ชฉ > ์ˆ˜๊ฐ• ์‹ ์ฒญ > ๋ชฉ๋ก
select 
    st.name as "ํ•™์ƒ๋ช…",
    sj.name as "๊ณผ๋ชฉ๋ช…"
from tblStudent st
    inner join tblRegister r
        on st.seq = r.student_seq
            inner join tblSubject sj
                on sj.seq = r.subject_seq;


-- ํ•™์ƒ + ๊ณผ๋ชฉ > ์ˆ˜๊ฐ• ์‹ ์ฒญ > ๋ชฉ๋ก + ์„ฑ์ 
select 
    st.name as "ํ•™์ƒ๋ช…",
    sj.name as "๊ณผ๋ชฉ๋ช…",
    sc.score as "์„ฑ์ "
from tblStudent st
    inner join tblRegister r
        on st.seq = r.student_seq
            inner join tblSubject sj
                on sj.seq = r.subject_seq
                    left outer join tblScore sc
                        on r.student_seq = sc.student_seq and r.subject_seq = sc.subject_seq;

'ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณต๋ถ€ > Oracle' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ex29] PL/SQL  (0) 2023.03.30
[ex27] transaction  (0) 2023.03.30
[ex26] Hierarchical Query  (0) 2023.03.30
[ex25] with  (0) 2023.03.30
[ex24] rank  (0) 2023.03.30