{
    "componentChunkName": "component---src-templates-blog-template-js",
    "path": "/db-introduction/",
    "result": {"data":{"cur":{"id":"8dd785a1-bcdb-5ad7-b7e2-fbaaab369b14","html":"<p><strong>DB(database)</strong> : 서로 관계있는 데이터들의 집합<br>\n<strong>DBMS</strong> : <strong>Database Management System</strong>으로 데이터베이스를 만들고 관리할 수 있도록 하는 소프트웨어 / 시스템</p>\n<h2 id=\"-db를-사용하는-이유\" style=\"position:relative;\"><a href=\"#-db%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0\" aria-label=\" db를 사용하는 이유 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>💡 DB를 사용하는 이유?</h2>\n<h3 id=\"1-queries-질의\" style=\"position:relative;\"><a href=\"#1-queries-%EC%A7%88%EC%9D%98\" aria-label=\"1 queries 질의 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. Queries (질의)</h3>\n<p>파일 기반 시스템에서는 자신이 원하는 데이터를 조회하기에 한계가 있다.<br>\n하지만 DBMS에서는 <em><strong>DML(Data Manipulation Language)</strong></em> 을 이용해 쉽게 데이터를 조회할 수 있고, <em><strong>Schema</strong></em>를 이용해 데이터 구조(Schema)와 데이터를 분리할 수 있다.</p>\n<blockquote>\n<h4 id=\"dml-종류\" style=\"position:relative;\"><a href=\"#dml-%EC%A2%85%EB%A5%98\" aria-label=\"dml 종류 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>DML 종류</h4>\n<ul>\n<li><strong>High-level or non-procedural languages (ex. SQL)</strong><br>\n어떻게 검색할지(<strong>how</strong>)가 아닌 어떤 데이터를 검색할지(<strong>what</strong>)을 명시함 -> <strong>declarative</strong><br>\n레코드 집합으로 검색하고 나서, 이를 하나하나씩 처리<br>\n<strong>set-at-a-time</strong> or <strong>set-oriented</strong> DML이라고도 불림</li>\n<li><strong>Low-level or procedural Languages</strong><br>\n한번에 한 레코드씩 절차적으로 검색<br>\n<strong>record-at-a-time</strong> DML이라고도 불림</li>\n</ul>\n</blockquote>\n<h3 id=\"2-integrity-무결성\" style=\"position:relative;\"><a href=\"#2-integrity-%EB%AC%B4%EA%B2%B0%EC%84%B1\" aria-label=\"2 integrity 무결성 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. Integrity (무결성)</h3>\n<p>DBMS에서는 <em><strong>제약조건(constraint)</strong></em> 을 이용해서 데이터의 일관성을 유지한다.</p>\n<h3 id=\"3-update-갱신\" style=\"position:relative;\"><a href=\"#3-update-%EA%B0%B1%EC%8B%A0\" aria-label=\"3 update 갱신 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. Update (갱신)</h3>\n<p>DBMS에서는 <em><strong>DDL(Data Definition Language)</strong></em> 을 이용해서 데이터를 보다 쉽게 추가/삭제/갱신 할 수 있다.</p>\n<h3 id=\"4-multiple-users-다중-사용자\" style=\"position:relative;\"><a href=\"#4-multiple-users-%EB%8B%A4%EC%A4%91-%EC%82%AC%EC%9A%A9%EC%9E%90\" aria-label=\"4 multiple users 다중 사용자 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. Multiple Users (다중 사용자)</h3>\n<p>하나의 데이터에 두 명 이상의 사용자가 접근해서 데이터를 수정하려고 하면 데이터의 무결성이 깨질 수 있다.<br>\n이런 상황을 막기 위해 DBMS에서는 데이터 업데이트가 순서대로(<em><strong>serial</strong></em> order) 일어나도록 <em><strong>동시성 제어</strong></em>를 통해 다중 사용자를 허용한다.</p>\n<h3 id=\"5-crashes-크래시\" style=\"position:relative;\"><a href=\"#5-crashes-%ED%81%AC%EB%9E%98%EC%8B%9C\" aria-label=\"5 crashes 크래시 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>5. Crashes (크래시)</h3>\n<p>DBMS에서는 Crash가 일어났을 때를 대비하기 위해 <em><strong>Transactions, Commit, Rollback, Recovery</strong></em> 등을 제공한다.</p>\n<h3 id=\"6-data-physically-separate-물리적으로-떨어져-있는-데이터\" style=\"position:relative;\"><a href=\"#6-data-physically-separate-%EB%AC%BC%EB%A6%AC%EC%A0%81%EC%9C%BC%EB%A1%9C-%EB%96%A8%EC%96%B4%EC%A0%B8-%EC%9E%88%EB%8A%94-%EB%8D%B0%EC%9D%B4%ED%84%B0\" aria-label=\"6 data physically separate 물리적으로 떨어져 있는 데이터 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>6. Data Physically Separate (물리적으로 떨어져 있는 데이터)</h3>\n<p><em><strong>Key</strong></em> 를 이용해서 떨어져 있는 데이터에 대해서도 쉽게 접근할 수 있다.</p>\n<h3 id=\"7-security-보안\" style=\"position:relative;\"><a href=\"#7-security-%EB%B3%B4%EC%95%88\" aria-label=\"7 security 보안 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>7. Security (보안)</h3>\n<p>DBMS에서는 <em><strong>View</strong></em> 를 이용해 데이터에 접근할 수 있는 사람들을 제어할 수 있다.</p>\n<h3 id=\"8-efficiency\" style=\"position:relative;\"><a href=\"#8-efficiency\" aria-label=\"8 efficiency permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>8. Efficiency</h3>\n<p>DBMS에서는 데이터의 양이 많아졌을 때도 효율적으로 관리하기 위해 <em><strong>Index</strong></em> 를 제공한다.</p>\n<h3 id=\"9-new-needs\" style=\"position:relative;\"><a href=\"#9-new-needs\" aria-label=\"9 new needs permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>9. New Needs</h3>\n<p>필요에 따라 <em><strong>Data mining</strong></em> 을 통해 데이터를 요약/분석/예측 할 수 있다.</p>\n<hr>\n<h2 id=\"-db-시스템의-주요-특징\" style=\"position:relative;\"><a href=\"#-db-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%98-%EC%A3%BC%EC%9A%94-%ED%8A%B9%EC%A7%95\" aria-label=\" db 시스템의 주요 특징 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>📌 DB 시스템의 주요 특징</h2>\n<h3 id=\"1-self-describing-nature-of-a-db-system\" style=\"position:relative;\"><a href=\"#1-self-describing-nature-of-a-db-system\" aria-label=\"1 self describing nature of a db system permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. Self-describing nature of a DB system</h3>\n<p>DB 시스템은 데이터 뿐만 아니라 DB 구조, 타입, 제약조건에 대한 완전한 정의를 포함한다.<br>\n<strong>metadata</strong> 라고 불리는 특정 DB의 설명을 <em><strong>Catalog</strong></em> 에 저장한다.</p>\n<h3 id=\"2-1-insulation-between-programs-and-data\" style=\"position:relative;\"><a href=\"#2-1-insulation-between-programs-and-data\" aria-label=\"2 1 insulation between programs and data permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2-1. Insulation between programs and data</h3>\n<p>program-data 간의 독립<br>\nDBMS 액세스 프로그램을 변경하지 않고도 데이터 구조와 저장소를 변경할 수 있다.<br>\n(파일 기반 시스템에서는 프로그램에 의해 액세스 되는 파일의 구조가 변경되면 프로그램을 변경해야 함)</p>\n<h3 id=\"2-2-data-abstraction-데이터-추상화\" style=\"position:relative;\"><a href=\"#2-2-data-abstraction-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B6%94%EC%83%81%ED%99%94\" aria-label=\"2 2 data abstraction 데이터 추상화 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2-2. Data abstraction (데이터 추상화)</h3>\n<p>program-data와 program-operation의 독립성을 허용하는 특징<br>\n데이터가 어떻게 저장되고 접근되는지는 사용자가 몰라도 된다.</p>\n<h3 id=\"3-support-of-multiple-views-of-the-data\" style=\"position:relative;\"><a href=\"#3-support-of-multiple-views-of-the-data\" aria-label=\"3 support of multiple views of the data permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. Support of multiple views of the data</h3>\n<p>각각 사용자마다 DBMS의 다른 view를 볼 수 있다.<br>\n각각 사용자는 자신이 원하는 데이터만 따로 볼 수 있다.</p>\n<h3 id=\"4-sharing-of-data-and-multiuser-transaction-processing\" style=\"position:relative;\"><a href=\"#4-sharing-of-data-and-multiuser-transaction-processing\" aria-label=\"4 sharing of data and multiuser transaction processing permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. Sharing of data and multiuser transaction processing</h3>\n<p>동시 사용자가 DB에 검색, 업데이트 할 수 있도록 허용<br>\nDBMS의 동시성 제어를 통해 <em><strong>transaction</strong></em>이 올바르게 실행되거나 중단된다.</p>\n<blockquote>\n<p><strong>Transaction</strong> : 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위로, <em><strong>ACID(Atomicity, Consistency, Isolation, Durability)</strong></em> 를 만족해야 함<br>\n<strong>OLTP</strong> : Online Transaction Processing으로 DB application의 중요한 부분</p>\n</blockquote>\n<hr>\n<h2 id=\"-db-시스템의-장점\" style=\"position:relative;\"><a href=\"#-db-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%98-%EC%9E%A5%EC%A0%90\" aria-label=\" db 시스템의 장점 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>🎯 DB 시스템의 장점</h2>\n<p><strong>1. 중복 제어</strong><br>\n<strong>2. 비인가 접근 제한</strong><br>\n<strong>3. 영속 저장</strong><br>\n<strong>4. 효율적 질의 처리를 위한 저장 구조 제공 (ex. index)</strong></p>\n<hr>\n<h2 id=\"-dbms를-사용하지-않는-경우\" style=\"position:relative;\"><a href=\"#-dbms%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EC%A7%80-%EC%95%8A%EB%8A%94-%EA%B2%BD%EC%9A%B0\" aria-label=\" dbms를 사용하지 않는 경우 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>❌ DBMS를 사용하지 않는 경우</h2>\n<ul>\n<li>DBMS 사용에 비용이 너무 많이 들 경우</li>\n<li>DBMS를 사용하지 않아도 잘 짜여져 있는 경우</li>\n<li>제한된 저장공간을 가진 임베디드 시스템처럼 DBMS를 사용할 수 없는 경우</li>\n<li>모델링 한계 때문에 복잡한 데이터를 다룰 수 없는 경우</li>\n<li>사용자가 원하는 특별한 기능을 DBMS가 제공할 수 없는 경우 (ex. GIS, location-based service)</li>\n</ul>\n<div class=\"table-of-contents\">\n<ul>\n<li>\n<p><a href=\"#-db%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0\">💡 DB를 사용하는 이유?</a></p>\n<ul>\n<li><a href=\"#1-queries-%EC%A7%88%EC%9D%98\">1. Queries (질의)</a></li>\n<li><a href=\"#2-integrity-%EB%AC%B4%EA%B2%B0%EC%84%B1\">2. Integrity (무결성)</a></li>\n<li><a href=\"#3-update-%EA%B0%B1%EC%8B%A0\">3. Update (갱신)</a></li>\n<li><a href=\"#4-multiple-users-%EB%8B%A4%EC%A4%91-%EC%82%AC%EC%9A%A9%EC%9E%90\">4. Multiple Users (다중 사용자)</a></li>\n<li><a href=\"#5-crashes-%ED%81%AC%EB%9E%98%EC%8B%9C\">5. Crashes (크래시)</a></li>\n<li><a href=\"#6-data-physically-separate-%EB%AC%BC%EB%A6%AC%EC%A0%81%EC%9C%BC%EB%A1%9C-%EB%96%A8%EC%96%B4%EC%A0%B8-%EC%9E%88%EB%8A%94-%EB%8D%B0%EC%9D%B4%ED%84%B0\">6. Data Physically Separate (물리적으로 떨어져 있는 데이터)</a></li>\n<li><a href=\"#7-security-%EB%B3%B4%EC%95%88\">7. Security (보안)</a></li>\n<li><a href=\"#8-efficiency\">8. Efficiency</a></li>\n<li><a href=\"#9-new-needs\">9. New Needs</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"#-db-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%98-%EC%A3%BC%EC%9A%94-%ED%8A%B9%EC%A7%95\">📌 DB 시스템의 주요 특징</a></p>\n<ul>\n<li><a href=\"#1-self-describing-nature-of-a-db-system\">1. Self-describing nature of a DB system</a></li>\n<li><a href=\"#2-1-insulation-between-programs-and-data\">2-1. Insulation between programs and data</a></li>\n<li><a href=\"#2-2-data-abstraction-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B6%94%EC%83%81%ED%99%94\">2-2. Data abstraction (데이터 추상화)</a></li>\n<li><a href=\"#3-support-of-multiple-views-of-the-data\">3. Support of multiple views of the data</a></li>\n<li><a href=\"#4-sharing-of-data-and-multiuser-transaction-processing\">4. Sharing of data and multiuser transaction processing</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"#-db-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%98-%EC%9E%A5%EC%A0%90\">🎯 DB 시스템의 장점</a></p>\n</li>\n<li>\n<p><a href=\"#-dbms%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EC%A7%80-%EC%95%8A%EB%8A%94-%EA%B2%BD%EC%9A%B0\">❌ DBMS를 사용하지 않는 경우</a></p>\n</li>\n</ul>\n</div>","excerpt":"DB(database) : 서로 관계있는 데이터들의 집합 DBMS : Database Management System으로 데이터베이스를 만들고 관리할 수 있도록 하는 소프트웨어 / 시스템 💡 DB를 사용하는 이유? 1. Queries (질의) 파일 기반 시스템에서는 자신이 원하는 데이터를 조회하기에 한계가 있다. 하지만 DBMS에서는 DML(Data Manipulation Language) 을 이용해 쉽게 데이터를 조회할 수 있고, Schema를 이용해 데이터 구조(Schema)와 데이터를 분리할 수 있다. DML 종류 High-level or non-procedural languages (ex. SQL) 어떻게 검색할지(how)가 아닌 어떤 데이터를 검색할지(what)을 명시함 -> declarative 레코드 집합으로 검색하고 나서, 이를 하나하나씩 처리 set-at-a-time or set-oriented DML이라고도 불림 Low-level or procedural Lang…","frontmatter":{"date":"December 06, 2021","title":"[Database] DB? DBMS??","categories":"Database","author":"JFe","emoji":"🔍"},"fields":{"slug":"/db-introduction/"}},"next":{"id":"61972368-b84a-58d1-aef7-2786843a1342","html":"<p>드디어..! 블로그 시작하기로 했습니다.</p>\n<p>사실 이전에 <strong>velog</strong>에도 시험 공부하면서 몇 개 정리해두긴 했지만 별로 많이 하진 않았고,<br>\n이후에 올해 여름부터 <strong>gatsby</strong>를 이용해서 제대로 된 블로그를 만드려고 했었지만 디자인부터 다 하려니 막막해서 하다가 그만뒀었습니다..ㅎ</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 133.33333333333331%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIEAwH/xAAXAQEBAQEAAAAAAAAAAAAAAAAEAgAB/9oADAMBAAIQAxAAAAFigUacoNzPSJzJ6MRX/8QAGhAAAgMBAQAAAAAAAAAAAAAAABEBAhIDEP/aAAgBAQABBQJCEIQjcQag6WtqPEf/xAAXEQEBAQEAAAAAAAAAAAAAAAAAARIR/9oACAEDAQE/AbHGYy//xAAXEQEBAQEAAAAAAAAAAAAAAAAAARIR/9oACAECAQE/AZXWrG3/xAAYEAACAwAAAAAAAAAAAAAAAAABIBAiMf/aAAgBAQAGPwJgDFMT/8QAHBAAAgICAwAAAAAAAAAAAAAAAREAIRAxUWFx/9oACAEBAAE/IWd+Z7XnvA6gELOpyxIIQ6gCUSf/2gAMAwEAAgADAAAAEFf4Av/EABgRAQEAAwAAAAAAAAAAAAAAACEAARAR/9oACAEDAQE/EEzp0Il//8QAFxEAAwEAAAAAAAAAAAAAAAAAAAERIf/aAAgBAgEBPxBERBJTen//xAAcEAEAAwADAQEAAAAAAAAAAAABABEhQVFxYTH/2gAIAQEAAT8QqQATh8nieJVPZWORsb4IfEt2OpiYsBtlN394i8O0HMNRdgBtsIapeoOsQaBD2f/Z'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Jeju-pic.jpg\"\n        title=\"Jeju-pic.jpg\"\n        src=\"/static/3557bf46c467b6a0a4d0f3c3e6d54d95/80e3c/Jeju-pic.jpg\"\n        srcset=\"/static/3557bf46c467b6a0a4d0f3c3e6d54d95/4ec73/Jeju-pic.jpg 180w,\n/static/3557bf46c467b6a0a4d0f3c3e6d54d95/158ba/Jeju-pic.jpg 360w,\n/static/3557bf46c467b6a0a4d0f3c3e6d54d95/80e3c/Jeju-pic.jpg 720w,\n/static/3557bf46c467b6a0a4d0f3c3e6d54d95/47311/Jeju-pic.jpg 1080w,\n/static/3557bf46c467b6a0a4d0f3c3e6d54d95/644c5/Jeju-pic.jpg 1440w,\n/static/3557bf46c467b6a0a4d0f3c3e6d54d95/1b11e/Jeju-pic.jpg 2874w\"\n        sizes=\"(max-width: 720px) 100vw, 720px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      />\n    </span></p>\n<p>그러다가 갑자기 이번 기말 시험 공부는 어디에 정리할까 고민하다 다시 블로그를 만들어볼까 생각했고, 괜찮은 <strong>gatsby</strong> 테마를 찾아서 바로 만들어버렸네요.<br>\n제주도 갔다와서 조금 변화가 있었던 것 같기도 하고 그냥 시험기간이어서 바로 만들었지 않을까 ^^,,<br>\n아무래도 테마없이 노베이스에서 디자인부터 하다가 포기하는 것보다는 괜찮은 테마 골라서 내 입맛대로 바꾸는게 훨씬 도움되는 듯.</p>\n<p>일단 블로그는 기술 블로그긴 하지만 이렇게 일상 관련 두서없는 포스트들도 올릴 생각이다. 물론 내 성격상 거의 안올릴 듯 하지만,,<br>\n이번 학기 마지막 기말 시험들 디비나 기학개, 데통 등 정리 글들 먼저 올리고 나서 종강하고 이전에 못올린 컴구, 운체 정리 글들을 올리지 않을까라고 생각해봅니다. 아 알고 스터디도 계속하면서 이제 여기도 올려야지</p>\n<p>종강하고 할 것들은 나중에 생각하고 당장 지금 발등에 불은 어카지;;</p>","frontmatter":{"date":"December 06, 2021","title":"[일상] 시작!","categories":"일상","author":"JFe","emoji":"👋"},"fields":{"slug":"/first-content/"}},"prev":{"id":"8cee292d-045e-5407-a06a-9a810f44bcf2","html":"<h3 id=\"data-model\" style=\"position:relative;\"><a href=\"#data-model\" aria-label=\"data model permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Data Model</h3>\n<p><strong>데이터 추상화</strong>를 달성하기 위해 필요한 수단 제공<br>\n데이터베이스의 <strong>구조(data types, relationships)</strong>, 이런 구조를 조작하기 위한 <strong>연산</strong>, 데이터베이스가 가져야 할 <strong>제약조건</strong>의 집합으로 구성</p>\n<h2 id=\"-data-model-종류\" style=\"position:relative;\"><a href=\"#-data-model-%EC%A2%85%EB%A5%98\" aria-label=\" data model 종류 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>📚 Data Model 종류</h2>\n<ul>\n<li>\n<h3 id=\"conceptual-data-models\" style=\"position:relative;\"><a href=\"#conceptual-data-models\" aria-label=\"conceptual data models permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conceptual data models</h3>\n<p>다수의 사용자가 데이터를 인식하는 방법과 비슷하게 개념(entity, attribute, relationship 등)을 제공<br>\nentity-based or object-based data model이라고도 불림 (<em><strong>ER model</strong></em>)<br>\n<strong>high-level, semantic</strong></p>\n</li>\n<li>\n<h3 id=\"physical-data-models\" style=\"position:relative;\"><a href=\"#physical-data-models\" aria-label=\"physical data models permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Physical data models</h3>\n<p>데이터가 컴퓨터 저장매체에 어떻게 저장되는지에 관한 자세한 정보들을 제공<br>\n<strong>low-level, internal</strong></p>\n</li>\n<li>\n<h3 id=\"implementation-data-models\" style=\"position:relative;\"><a href=\"#implementation-data-models\" aria-label=\"implementation data models permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Implementation data models</h3>\n<p>개념적 모델을 컴퓨터가 처리할 수 있도록 변환<br>\n관계형데이터모델, 네트워크/계층 모델 등이 있음<br>\n<strong>representational, logical</strong></p>\n</li>\n<li>\n<h3 id=\"self-describing-data-models\" style=\"position:relative;\"><a href=\"#self-describing-data-models\" aria-label=\"self describing data models permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Self-Describing data models</h3>\n<p>데이터 description과 데이터 값들을 연결<br>\nNoSQL 시스템에서 주로 사용</p>\n</li>\n</ul>\n<hr>\n<h2 id=\"-schema--instance\" style=\"position:relative;\"><a href=\"#-schema--instance\" aria-label=\" schema  instance permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>📜 Schema &#x26; Instance</h2>\n<h3 id=\"database-schema\" style=\"position:relative;\"><a href=\"#database-schema\" aria-label=\"database schema permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Database Schema</h3>\n<p>데이터베이스 구조, 데이터 타입, 제약조건에 대한 설명을 기술한 <strong>메타데이터</strong>의 집합으로<br>\n데이터베이스 설계 중 지정되면 거의 변경되지 않음</p>\n<h3 id=\"database-instance\" style=\"position:relative;\"><a href=\"#database-instance\" aria-label=\"database instance permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Database Instance</h3>\n<p><strong>특정한 순간</strong>에 데이터베이스에 저장되어 있는 실제 데이터로<br>\n<em><strong>Database State</strong></em>라고도 불림</p>\n<blockquote>\n<p><strong>Initial Database State</strong> : DBMS에 처음 불려왔을 때의 state<br>\n<strong>Valid State</strong> : 데이터베이스의 구조와 제약조건을 만족하는 state</p>\n</blockquote>\n<hr>\n<h2 id=\"-three-schema-architecture\" style=\"position:relative;\"><a href=\"#-three-schema-architecture\" aria-label=\" three schema architecture permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>🚦 Three-Schema Architecture</h2>\n<p><a href=\"https://jfelog.netlify.app/db-introduction/#-db-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%98-%EC%A3%BC%EC%9A%94-%ED%8A%B9%EC%A7%95\">DB 시스템의 주요 특징</a> 중 1 ~ 3번을 만족하기 위한 구조로<br>\n사용자 어플리케이션과 물리적 데이터베이스를 분리시키기 위한 목적을 가지고 있다.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 709px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 53.888888888888886%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAMBAgX/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAHdi6xoB//EABcQAAMBAAAAAAAAAAAAAAAAAAACMRD/2gAIAQEAAQUCLq0//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQAGPwJf/8QAGhABAAIDAQAAAAAAAAAAAAAAARARACExUf/aAAgBAQABPyFtUvPBqesf/9oADAMBAAIAAwAAABBgD//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABoQAQEAAgMAAAAAAAAAAAAAAAERECEAMWH/2gAIAQEAAT8QQVGu5Zwaooaum538cf/Z'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"three-schema.jpg\"\n        title=\"three-schema.jpg\"\n        src=\"/static/78bef189f7701a81b15f8557b62b0f05/bd958/three-schema.jpg\"\n        srcset=\"/static/78bef189f7701a81b15f8557b62b0f05/4ec73/three-schema.jpg 180w,\n/static/78bef189f7701a81b15f8557b62b0f05/158ba/three-schema.jpg 360w,\n/static/78bef189f7701a81b15f8557b62b0f05/bd958/three-schema.jpg 709w\"\n        sizes=\"(max-width: 709px) 100vw, 709px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      />\n    </span></p>\n<ul>\n<li>\n<h3 id=\"internalphysical-schema\" style=\"position:relative;\"><a href=\"#internalphysical-schema\" aria-label=\"internalphysical schema permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Internal(physical) Schema</h3>\n<p>물리적인 storage 구조와 접근 경로에 대해 설명한다.<br>\n일반적으로 <strong>physical</strong> data model을 사용</p>\n</li>\n<li>\n<h3 id=\"conceptuallogical-schema\" style=\"position:relative;\"><a href=\"#conceptuallogical-schema\" aria-label=\"conceptuallogical schema permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conceptual(logical) Schema</h3>\n<p>전체 데이터베이스의 구조와 제약조건들에 대해 설명한다.<br>\n일반적으로 <strong>conceptual(ex. ER)</strong> 이나 <strong>implementation(ex. relational)</strong> data model을 사용</p>\n</li>\n<li>\n<h3 id=\"externalview-level-schema\" style=\"position:relative;\"><a href=\"#externalview-level-schema\" aria-label=\"externalview level schema permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>External(view level) Schema</h3>\n<p>다양한 사용자 뷰에 대해 설명한다.<br>\n보통 conceptual schema와 같은 데이터 모델을 사용하고, 사용자가 관심있어 하는 부분에 대해서만 보여주고 나머지는 숨긴다.</p>\n</li>\n</ul>\n<p>실제로 요청이 들어오면 그 <strong>요청</strong>을 <strong>데이터</strong>로 변환하기 위해 <strong>Mapping</strong>이 필요하다.<br>\n실제 데이터는 physical level에만 존재하기 때문에 <strong>external schema</strong>로부터 요청이 들어오면 <strong>conceptual schema</strong>를 거쳐 <strong>internal schema</strong>에서 실제 데이터에 접근해 요청을 수행한다.</p>\n<hr>\n<h2 id=\"-data-independence\" style=\"position:relative;\"><a href=\"#-data-independence\" aria-label=\" data independence permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>🏳 Data Independence</h2>\n<p>데이터베이스 시스템에서 한 level의 schema가 변경되었을 때, 다른 상위 level의 schema 변경이 필요하지 않도록 독립되어 있는 것<br>\n상위 스키마의 변경 없이 해당 스키마와 상위 레벨 스키마 사이의 mapping만 변경하면 된다.</p>\n<ul>\n<li>\n<h3 id=\"logical-data-independence\" style=\"position:relative;\"><a href=\"#logical-data-independence\" aria-label=\"logical data independence permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Logical data independence</h3>\n<p>external schema 변경 없이 <em><strong>conceptual(logical) schema</strong></em>를 변경할 수 있는 능력</p>\n</li>\n<li>\n<h3 id=\"physical-data-independence\" style=\"position:relative;\"><a href=\"#physical-data-independence\" aria-label=\"physical data independence permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Physical data independence</h3>\n<p>conceptual(logical) schema 변경 없이 <em><strong>internal(physical) schema</strong></em>를 변경할 수 있는 능력</p>\n</li>\n</ul>\n<div class=\"table-of-contents\">\n<ul>\n<li>\n<ul>\n<li><a href=\"#data-model\">Data Model</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"#-data-model-%EC%A2%85%EB%A5%98\">📚 Data Model 종류</a></p>\n</li>\n<li>\n<p><a href=\"#-schema--instance\">📜 Schema &#x26; Instance</a></p>\n<ul>\n<li><a href=\"#database-schema\">Database Schema</a></li>\n<li><a href=\"#database-instance\">Database Instance</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"#-three-schema-architecture\">🚦 Three-Schema Architecture</a></p>\n</li>\n<li>\n<p><a href=\"#-data-independence\">🏳 Data Independence</a></p>\n</li>\n</ul>\n</div>","frontmatter":{"date":"December 06, 2021","title":"[Database] Data Model & Schema","categories":"Database","author":"JFe","emoji":"🤸‍♂️"},"fields":{"slug":"/db-model-schema/"}},"site":{"siteMetadata":{"siteUrl":"https://jfelog.netlify.app","comments":{"utterances":{"repo":"Go-Jaecheol/Jfe_Blog"}}}}},"pageContext":{"slug":"/db-introduction/","nextSlug":"/first-content/","prevSlug":"/db-model-schema/"}},
    "staticQueryHashes": ["1073350324","1956554647","2938748437"]}