Skip to content

Commit

Permalink
[#1] Chapter 01 Item 02~03 Note
Browse files Browse the repository at this point in the history
  • Loading branch information
hamgui-2022 committed Sep 22, 2023
1 parent 763b784 commit aaf071c
Show file tree
Hide file tree
Showing 6 changed files with 92 additions and 3 deletions.
Binary file modified .DS_Store
Binary file not shown.
Binary file modified Chapter 01 - Database Introduction/.DS_Store
Binary file not shown.
40 changes: 40 additions & 0 deletions Chapter 01 - Database Introduction/Item 02 - View of Data/Note.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,44 @@

> 작성자: 이재혁
> Database system은 사용자가 데이터에 접근하고 수정할 수 있도록 하는 상호 연관된(inter-related) 데이터와 프로그램의 집합이다. <br><br>
> Database system의 주요 목적은 사용자에게 데이터에 대한 *추상적인* 뷰를 제공하는 것이다. <br>
> 즉, 시스템은 데이터가 어떻게 저장되고 유지되는지에 대한 특정한 세부사항을 숨김
## 목차
- Data Models
- Schemas and Instances

## Data Models
> 데이터 모델은 데이터, 데이터 관계, 데이터 의미론, 일관성 제약을 설명하기 위한 개념적 도구의 집합이다.
- <span style = "color: blue">**Relational Model**</span>
- 모든 데이터는 다양한 <span style = "color: red">**tables**</span> (or <span style = "color: red">**relations**</span>)에 저장된다.
![relational-model](./relational-model.png)
- <span style = "color: blue">**Entity-Relationship Model**</span>
- E-R 데이터 모델은 Entity라 불리는 기본적인 개체들ㅇ릐 집합과 이 개체들 간의 관계를 이용한다.
- E-R 모델은 DB 설계에서 널리 사용됨.
- <span style = "color: blue">**Semi-structured Data Model**</span>
- 동일한 유형의 개별 데이터 항목들이 서로 다른 attribute 집합을 가질 수 있는 데이터의 specification을 허용함
- JSON과 XML(Extensible Markup Language)가 널리 사용되는 semi-structured data 표현임
- <span style = "color: blue">**Object-Based Data Model**</span>
- 객체 지향 프로그래밍(특히 Java, C++ or C#에서)은 지배적인 소프트웨어 개발 방법론이 되었다. 이로 인해 처음에는 구별되는 객체 지향 데이터 모델이 개발되었지만,
- 오늘날 객체의 개념은 관계형 DB에 잘 통합되어 있음
- DB 시스템은 프로시저를 DB 시스템에 저장하고 DB 시스템에 의해 실행되도록 함.
- 이는 캡슐화, 방법, 객체 아이덴티티 개념으로 관계형 모델을 확장한 것으로 볼 수 있음

## Schemas and Instances
> - 데이터베이스는 정보가 삽입되고 삭제됨에 따라 시간의 흐름에 따라 변화함.
> - 특정 순간에 데이터베이스에 저장된 정보의 집합을 **인스턴스**라고 함.
> - 데이터베이스의 전체적인 설계를 **스키마**라고 함.
> 스키마와 인스턴스의 개념은 프로그래밍 언어로 작성된 프로그램에 비유하여 이해할 수 있다.
> - 데이터베이스 **스키마**는 프로그램 내의 변수 선언(타입 정의와 함께)에 해당함.
> - 각 변수는 주어진 순간에 특정한 값을 가짐. 한 시점의 프로그램 내 변수의 값은 데이터베이스 스키마의 **인스턴스**에 해당함.
데이터베이스 시스템들은 추상화 레벨들에 따라 분할되는 여러 스키마들을 갖는다.
- Physical Schema(물리적 스키마)는 물리적 레벨에서 데이터베이스 설계를 기술함
- Logical Schema(논리적 스키마)는 논리적 레벨에서 데이터베이스 설계를 기술함

Physical data independence
- 논리 스키마를 변경하지 않고 물리적 스키마를 수정할 수 있음
- 응용 프로그램은 논리 스키마에 따라 달라짐
- 일반적으로, 다양한 수준과 구성요소들 사이의 인터페이스는 일부 파츠의 변화가 다른 부분들에 심각한 영향을 미치지 않도록 잘 정의되어야 함.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,53 @@

> 작성자: 이재혁
> Database system은 데이터베이스 스키마를 지정하는 데이터 정의 언어(DDL)와 데이터베이스 쿼리 및 업데이트를 표현하는 데이터 조작 언어(DML)을 제공한다. <br>
> DDL과 DML은 두 개의 별개 언어가 아니라 단순히 SQL 언어와 같은 하나의 데이터베이스 언어의 일부를 구성함. <br>
> 거의 모든 관계형 DB 시스템은 SQL 언어를 사용.
## 목차
- Data-Definition Language(DDL)
- Data-Manipulation Language(DML)
- Structured Query Language(SQL)

## Data-Definition Language(DDL)
**DDL을 통해 데이터베이스 스키마를 지정함.** DDL은 추가적인 property를 지정하는 데에도 사용됨<br>
DDL문 집합에 의해 데이터베이스 시스템이 사용하는 저장 구조와 접근 방법을 지정함. 이 statements는 데이터베이스 스키마의 구현 세부사항을 정의하는데, 보통 사용자로부터 숨겨져 있음.<br>
DDL compiler는 <span style="color: red">*data dictionary*</span>에 저장되어 있는 table template의 set를 생성.
```SQL
create table department
(dept_name char(20),
building char(15),
budget numeric(12,2));
```

<br>
Data dictionary는 metadata(data에 대한 data)를 포함함. <br>
- Database schema
- Integrity constraints: primary key
- Authorization: who can access what data

## Data-Manipulation Language(DML)
DML은 사용자가 적절한 데이터 모델에 의해 구성된 데이터에 접근하거나 조작할 수 있도록 하는 언어이다.<br>
접근 유형:
- DB에 저장된 정보 검색
- DB에 새 정보 삽입
- DB에서 정보 삭제
- DB에 저장된 정보 수정

DML에는 기본적으로 두 가지 타입이 있다:
- 절차적(Procedural) DML : 사용자에게 어떤 데이터가 필요하고 어떻게 그 데이터를 얻을 것인지를 지정해야 함.
- 선언형(Declarative) DML(또는 비절차형 DML) : 사용자가 해당 데이터를 얻는 방법을 지정하지 않고 필요한 데이터를 지정할 것을 요구.

```SQL
select instructor.ID, department.dept_name
from instructor, department
where instructor.dept_name = department.dept_name and department.budget > 95000;
```

## Structured Query Language(SQL)
- DBMS에서 데이터를 정의하고 관리하기 위해 고안된 특수 목적 프로그래밍 언어
- 가장 널리 쓰이는 상용 언어
- 응용 프로그램은 일반적으로 다음을 통해 데이터베이스에 접근함:
- 언어 확장을 통해 내장된 SQL 또는
- SQL 쿼리를 데이터베이스로 보낼 수 있는 응용 프로그램 인터페이스(예: ODBC/JDBC)
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Consider the employee database of Figure 2.17. What are the appropriate **primar

#### <span style= "color: red">Answer</span>
***Employee (<u>person_name</u>, street, city)***<br>
***works (<u>person_name</u>, company_name, salary)***<br>
***works (<u>person_name</u>, <u>company_name</u>, <u>salary</u>)***<br>
***company (<u>company_name</u>, city)***

### <span style= "color: blue">Problem 2.6</span>
Expand All @@ -48,11 +48,11 @@ Consider the employee database of Figure 2.17. Give an expression in the relatio
#### <span style= "color: red">Answer</span>
a.
$$ \Pi_{person\_name}\,(\sigma_{city="Miami"}(employee)) $$
$$ \Pi_{person\_name}\,(\sigma_{city= "Miami"}(employee)) $$
b.
$$ \Pi_{person\_name}\,(\sigma_{salary>100000}(works)) $$
c.
$$ \Pi_{person\_name}\,(\sigma_{city="Miami"\wedge \,salary>100000}(employee\bowtie works)) $$
$$ \Pi_{person\_name}\,(\sigma_{city= "Miami"\wedge \,salary>100000}(employee\bowtie works)) $$

### <span style= "color: blue">Problem 2.7</span>
Consider the bank database of Figure 2.18. Give an expression in the relational algebra for each of the following queries: <br>
Expand Down

0 comments on commit aaf071c

Please sign in to comment.