Database
<Primary key vs Foreign Key>
[Orders]
Order_ID (PK: Primary Key)
Customer_ID (FK: Foreign Key)
Product
[Customers]
Customer_ID (PK: Primary Key)
Name
Address
<Transaction log> (also known as database log, binary log)
It is needed to store a record of all data changes made to the database.
Database의 ACID특성 보장.
ACID란 데이터베이스의 transaction이 안전하게 수행된다는 것을 보장하기 위한 성질을 기리키는 약어이다.
Atomicity(원자성): Transaction과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력
Consistency(일관성): 데이터가 미리 정의된 규칙에 의해서만 수정이 가능한 특성.
Isolation(독립성): 다른 transaction 작업이 끼어들지 못하도록 보장함.
Durability(지속성): 성공적으로 수행된 transaction은 영원히 반영되어야 한다.
<ER (Entity-Relation) Model>
(Will be added soon)
<NOSQL>
Relational DB가 아님. 테이블간의 관계를 정의하지 않는다.
(key, value)로 데이터를 나타냄. key값에 대한 입/출력만 지원. JOIN불필요. 대용량데이터 가능. 스키마 없음. 데이터 업데이트가 느리다는 단점이있음.
<Normalization>
Relational database의 설계단계에서 데이터의 중복을 최소화하기 위해 데이터의 구조를 결정하는 방법을 normalization이라고 한다.
주로 크고 제대로 조직되지 않은 테이블들에서 작고 잘 조직된 테이블들로 변경한다.
<Clustered index and Non-Clustered index>
Clustered index
Clustered index defines the order in which data is physically stored in a table.
Ex) Dictionary
Non-Clustered index
Stored in one place and table data is stored in another place.
Ex) Book Index
Some facts about this:
A table can have only one clustered index
A table can have multiple non-clustered indexes.
Cluster index is faster than non-clustered index
<Normalization in Database>
1NF (Normal Form): 릴레이션에 속한 모든 속성의 도메인이 원자 값으로만 구성되어 있으면 1NF이다.
2NF: 릴레이션의 partial 종속성을 없애주는 것을 2NF라고한다. 기본키의 일부에만 종속되어서는 안된다. Partial dependency(=Composite primary key의 keys중에 하나의 key에만 종속. Composite primary key가 없다면 partial dependenc도 없다.)를 제거한 테이블이다. (즉, 현재 테이블의 핵심주제와 상관없는 column들은 모두 제거한다)
3NF: If every non-key attribute functionally dependent on the primary key, then the relation will be in 3NF. 일반 column에만 종속된 컬럼은 다른 테이블로 빼준다.