[DB] Basic DATABASE / SQL / Schema ๐Ÿ’ฏ๏ธ

jungeundelilahLEEยท2021๋…„ 1์›” 12์ผ
0

DB(DataBase)

๋ชฉ๋ก ๋ณด๊ธฐ
1/8

goal

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ณธ์งˆ (Create(์ƒ์„ฑ), Read(์ฝ๊ธฐ), Update(์ˆ˜์ •), Delete(์‚ญ์ œ))

DATABASE (DB/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค) ๐Ÿ’ฏ๏ธ


DB์˜ ๋ณธ์งˆ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” (์šฐ๋ฆฌ๊ฐ€) ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณณ์ด๋‹ค (์‰ฝ๊ฒŒ ํŒŒ์ผ์— st๋ฌธ์„œ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ์ƒ๊ฐํ•ด๋ณด์ž)
  • file < spreadsheet < database (ํŒŒ์ผ๋ณด๋‹ค, ์—‘์…€๋ณด๋‹ค ํ›จ์”ฌ๋” ์ง„ํ™”ํ•œ version)
  • ์ž๋™์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ crudํ•ด์„œ "๊ตฌ์กฐํ™”" ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ 

CRUD

  • Create / ์ƒ์„ฑ (input)
  • Read / ์ฝ๊ธฐ (output)
  • Update / ์ˆ˜์ • (input)
  • Delete / ์‚ญ์ œ (input)

DB์˜ ํ•„์š”์„ฑ

  • ๋งค๋ฒˆ ์„œ๋ฒ„ ์ปดํ“จํ„ฐ์˜ in-memory ์ƒํƒœ๋กœ ์žˆ์„ ์ˆœ ์—†๋‹ค. (๋„๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค..)
    • in-memory : ์„œ๋ฒ„๊ฐ€ ์ผœ์žˆ์„ ๋™์•ˆ๋งŒ ๋ณ€์ˆ˜์— ํ• ๋‹น๋œ ๊ฐ’์„ ํ†ตํ•ด ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ
  • file I/O (input/output) : ํŒŒ์ผ๋กœ ๊ฐ€์ ธ์˜ค๋ฉด, ์ „์ฒด๋ฅผ ๊ฐ€์ ธ์™€์„œ ํ•„ํ„ฐ๋งํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์šฉ๋Ÿ‰์ด ๋งค์šฐ ์ปค์ง„๋‹ค.
  • etc

DB์˜ ์ž‘๋™์ˆœ์„œ

  • ์ž‘๋™ ์ˆœ์„œ
    • client : "๋‚จ์ž ์ง์›๋“ค ๋ชฉ๋ก ๋ณด์—ฌ์ค˜"
    • server : clinet์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ, SELECT*FROM employee WHERE gender = 'M'๊ณผ ๊ฐ™์€ 'query ๋ฌธ'์„ database์— ๋ณด๋ƒ„
    • database : server๊ฐ€ ๋ณด๋‚ด์ค€ ์ฟผ๋ฆฌ๋ฌธ์„ ํ•„ํ„ฐ๋งํ•จ
    • database : ๊ฒฐ๊ณผ๊ฐ’์„ server์— ๋ณด๋ƒ„ (json, xml๋“ฑ์˜ ํ˜•์‹์œผ๋กœ)
    • server : ๋”ฐ๋กœ ๊ฐ€๊ณตํ•  ํ•„์š”์—†์ด ๊ทธ๋Œ€๋กœ client์— ๋ณด์—ฌ์คŒ

์‹ค์ œ DB์˜ ์ƒ๊น€์ƒˆ

DATABASESPREADSHEET
- ํ…Œ์ด๋ธ”
- Column & Row
- ํ•„ํ„ฐ๋ง : by Query
- ์‹œํŠธ
- Column & Row
- ํ•„ํ„ฐ๋ง
query language example
SELECT *
FROM employee
WHERE gender = M

DB์˜ ์ข…๋ฅ˜ (2๊ฐ€์ง€)

Relational(๊ด€๊ณ„ํ˜•)_SQL && Non-Relational(๋น„๊ด€๊ณ„ํ˜•)_NoSQL
(๊ฐ๊ฐ์˜ ์ข…๋ฅ˜๋Š” ์•„๋ž˜ ๋žญํ‚น์„ ์ฐธ๊ณ )


20210112 DB Ranking

  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์••๋„์  ์ˆœ์œ„ ๋ฐ ์‚ฌ์šฉ๋Ÿ‰ / ๋งค~์šฐ ์—ญ์‚ฌ๊ฐ€ ๊ธธ๋‹ค

  • Oracle : ๊ด€๊ณต์„œ, ๊ธˆ์œต๊ถŒ, ๋Œ€๊ธฐ์—…์—์„œ ๋งŽ์ด ์”€ (๋น„์Œˆ)

  • MySQL : ๋ฌด๋ฃŒ / ์˜คํ”ˆ์†Œ์Šค / SNS๊ณผ ๊ฐ™์€ ์„œ๋น„์Šค ๋“ฑ

  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋งž์ง€ ์•Š๋Š”, noSQL ์˜ ํ๋ฆ„์ด ๋‘๋‘ฅ



SQL (Structured Query Language) ๐Ÿ’ฏ๏ธ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB)์™€ ๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋””์ž์ธ๋œ query ์–ธ์–ด

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์šฉ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

  • SQL์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— query๋ฅผ ๋ณด๋‚ด์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์ถ”์ถœํ•ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค. (query : ์งˆ์˜๋ฌธ)

  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” SQL ์–ธ์–ด๋กœ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒŒ์ผ์•ˆ์— ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๊ณ , ์ž๋ฃŒ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

  • ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ๊ฐ€ ์—„๊ฒฉํ•˜๋‹ค.

  • SQL์€ ํ…Œ์ด๋ธ”์ด ์žˆ์œผ๋ฉฐ, ํ–‰(row)๊ณผ ์—ด(column)๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

    • table : ์ผ๊ด€์ ์ธ ํŠน์ง•์„ ๊ฐ€์ง„, ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ธฐ ์œ„ํ•œ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ์ง‘๋‹จ
    • record : (=row) ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์†์„ฑ(attribute (= column))์œผ๋กœ ์ด๋ฃจ์–ด์ง
    • table์—์„œ ํŠน์ •ํ•œ record์˜ ๋‚ด์šฉ์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š”, "column"์˜ ๋‚ด์šฉ์„ ๊ธฐ์ค€์œผ๋กœ ์ฐพ์Œ -> ์ด๋•Œ record๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ธฐ์ค€์ด ๋˜๋Š” column์„ "Primary key(๊ธฐ์ค€ํ‚ค)"๋ผ๊ณ ํ•จ
    • column์˜ ๊ธฐ์ค€์„ ํ•œ์ •์‹œํ‚ค๋Š” ๊ฒƒ์„ -> constraints(์ œ์•ฝ)์ด๋ผ๊ณ ํ•จ
    • Primary key : ๋‹ค๋ฅธ record์™€ ์ค‘๋ณต๋  ์ˆ˜ ์—†์Œ / ๋น„์–ด์žˆ์„ ์ˆ˜ ์—†์Œ (is not null) /



Schema ๐Ÿ’ฏ๏ธ

: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ตฌ์„ฑ๋˜๋Š” ๋ฐฉ์‹๊ณผ ์„œ๋กœ ๋‹ค๋ฅธ entity(ํ…Œ์ด๋ธ”๋กœ ํ‘œํ˜„๋˜๋Š” ์ •์˜์˜ ๋‹จ์œ„) ๊ฐ„ ์˜ ๊ด€๊ณ„์— ๋Œ€ํ•œ ์„ค๋ช…

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ํ•„์š”ํ•œ ๋‚ด์šฉ (๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณด์—ฌ์งˆ ๊ฒƒ์ธ์ง€)

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ฒญ์‚ฌ์ง„

  • fields ๋“ค์€ ํ–‰๊ณผ ์—ด๋กœ ํ‘œํ˜„ํ•˜๋ฉด "์—ด"์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ๋“ค

    • entities : ํ…Œ์ด๋ธ”๋กœ ํ‘œํ˜„๋˜๋Š” ์ •์˜์˜ ๋‹จ์œ„
    • fields : Teachers์—์„œ - Name, Department, Classes
      Classes์—์„œ - Name, Room NUmber, Teacher, Students ์™€ ๊ฐ™์ด "์—ด"์— ํ•ด๋‹น๋˜๋Š” ๊ฒƒ๋“ค
    • record : Teachers์—์„œ ๊ฐ fields์— ํ•ด๋‹นํ•˜๋Š” ์ •๋ณด(?)

  • 1 : N (์ผ๋Œ€๋‹ค์˜ ๊ด€๊ณ„)

    • ๊ฐ ํ…Œ์ด๋ธ”์—๋Š” ๊ณ ์œ ํ•œ ID๋ผ๋Š” field๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด๋Š” ๊ฐ ํ…Œ์ด๋ธ”์˜ record ํ•˜๋‚˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ˆซ์ž๋กœ, ์ž๋™์ ์œผ๋กœ ๊ทธ ๊ฐ’์ด ์ฆ๊ฐ€ํ•จ / ID field๋Š” ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค(Primary key) ์—ญํ• ์„ ํ•จ
    • ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์—์„œ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค(primary key)๋ฅผ ์ฐธ์กฐํ•  ๋•Œ, ํ•ด๋‹น ๊ฐ’์„ ์™ธ๋ž˜ํ‚ค(Foreign key)๋ผ๊ณ  ํ•จ / ์œ„ ์˜ˆ์‹œ์—์„œ ClassID๋ผ๋Š” field๋Š” Classes ํ…Œ์ด๋ธ”์—์„œ ํŠน์ • ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
    • .
      .
      .
      .
      .
      .
      ๋‹ค์‹œ... ์กด๋‚˜ ๋ชป์•Œ์•„๋“ฃ๊ฒ ๋„ค...
profile
delilah's journey

0๊ฐœ์˜ ๋Œ“๊ธ€