database

Sub:
스키마schema
데이터data
데이터언어,data_language
DDL,data_definition_language 데이터정의어 - CREATE TABLE, DROP TABLE, ALTER, RENAME, TRUNCATE, ...
DML,data_manipulation_language 데이터조작어 - INSERT INTO, UPDATE, DELETE FROM, ...
DCL,data_control_language WpKo:데이터_제어_언어 데이터제어어 - GRANT, REVOKE, ROLLBACK, ..
TCL,transaction_control_language 트랜잭션제어어? - COMMIT, ROLLBACK, SAVEPOINT, ...
// 위의 언어(~L) 분류들은 엄밀하지는 않은 것 같다. SQL의 SELECT를 DQL - Data Query Language 로 따로 분류한 곳도 있고
SQL,structured_query_language
데이터모델data_model
계층형
관계형데이터모델 or 관계데이터모델 - RDM, relational_data_model - 가장 중요
etc.
데이터추상화data_abstraction - curr see 데이터모델data_model맨아래
연산operation
관계데이터연산relationship_data_operation
관계대수relational_algebra - 절차식 언어(procedural)
normal set operations : union intersection set_difference Cartesian_product
pure relational operations : select project join division
관계해석relational_calculus - 비절차식 언어(non-procedural)
domain relational calculus
tuple relational calculus[1]
DBMS,database_management_system -> VG:데이터베이스,database#s-3
hierarchical_database https://foldoc.org/hierarchical database
network_database https://foldoc.org/network database
relational_database https://foldoc.org/relational database WpKo:관계형_데이터베이스 WpEn:Relational_database
intelligent_database https://foldoc.org/intelligent database
flat_file_database WpKo:플랫_파일_데이터베이스 WpEn:Flat-file_database

뷰view
키key
무결성integrity
무결성제약조건integrity_constraint
테이블table

relation ≠ relationship. 처음에 이것 때문에 혼동.
릴레이션relation
관계relationship
relvar
{
//wpen
1995년 paper The Third Manifesto에서 Date와 Darwen이 소개.
릴레이션relation과의 혼동을 피하기 위한 용어라는데, chk

Wiki:RelVar
WpEn:Relvar
WpEn:Relation_(database)#Relation_variables
Google:Relvar
}
개체entity
튜플tuple
{
릴레이션relation의 행에 해당.
table의 열은 속성attribute, 행은 tuple. 비관계 파일에서의 레코드record와 같은 의미.
관계 데이터 모델에서 relation의 한 행.

릴레이션relation에서, 튜플tuple[2]
릴레이션에서, 튜플의 유일성(uniqueness of tuple):[3]
릴레이션은 튜플들의 VG:집합,set이기 때문에, 모든 튜플은 서로 달라야 함.

릴레이션에서, 튜플의 무순서성(no ordering of tuple):[4]
릴레이션의 튜플 사이에 순서는 의미가 없음. (집합은 그 원소들 사이에 순서가 없음)
다시 말해, 튜플 순서만 다른 두 릴레이션이 있다면, 같은 릴레이션임.


HashKr:튜플
}
필드field
{
행렬 terminology로는 열,column에 해당됨.
(열column ~= 필드field ~= 속성attribute)

Opp, 대비되는 개념: 레코드record

HashKr:필드_(데이터베이스) - SQL문 ALTER TABLE 설명함.
}
레코드record
도메인domain
{
하나의 속성attribute이 가질 수 있는 값들의 집합.
각 속성에 입력 가능한 값들의 범위.
각 속성이 취할 수 있는 모든 값들의 집합을 정의한 것.

A set of atomic(indivisible) values.
Data type is used for domain specification.
Data_type보다 더 구체적이고 작은 범위로 축소할 수가 있다. 그래서 database에서는 data type이라고 안 하고 domain이라는 용어를 따로 쓴다.[5]

ex.
성별 속성의 도메인은 ‘남’ 또는 ‘여’.
학년 속성의 도메인은 (4년제 학교) {1, 2, 3, 4}.

그러니 아마 PL의 type과 비슷?
}
속성attribute
차수degree
{
하나의 릴레이션relation에서 속성attribute의 전체 개수.
table에서 열의 수와 같음.

카디널리티cardinality와 달리 변화하는 일이 적음.

카디널리티와의 비교:
}
카디널리티cardinality
{
하나의 릴레이션relation에서 튜플tuple의 전체 개수.
튜플tuple의 수.

차수degree와 달리 자주 변할 수 있음. 동적. (삽입 시 +1, 삭제 시 -1)

차수와의 비교:
}
널null
질의query


X→Y
X: 결정자determinant, Y: 종속자dependent
X가 Y를 함수적으로 결정.
Y가 X에 함수적으로 종속되어 있음.

부분함수적종속성partial_functional_dependency
완전함수적종속성full_functional_dependency - 일반적으로 함수적 종속성은 완전함수종속성을 의미.




Up: database
}

데이터독립성data_independency
{
데이터data의 논리적 or 물리적 구조가 변경되더라도, 응용프로그램이 직접 영향을 받지 않는 특성.
  • 응용프로그램에 영향을 주지 않으면서 DB구조 변경을 가능하게 함.
  • (반대로) DB에 영향을 주지 않으면서 응용프로그램을 수정할 수 있게 함.
각 단계 스키마schema 사이에 적절한 내부 사상을 한다면, 하위스키마가 변경되어도 상위스키마에 영향을 주지 않도록, 변경 내용을 숨길 수 있음.

외부 - 개념 사상
외부스키마를 변경해도 전체 개념적 스키마는 변경되지 않거나 변경되더라도 변경 내용이 최소화.
논리적 데이터 독립성 logical data independence 제공

개념 - 내부 사상
물리적 구조의 변경에 따른 내부 스키마가 수정되더라도 연관된 개념-내부 사상 정보만 수정하면 상위 스키마에 대한 영향을 최소화.
물리적 데이터 독립성 physical data independence 제공

[6]
}

원자값atomic_value
{
더 이상 분해할 수 없는 VG:값,value


E-R * , ER_model , ER_diagram , ...
{
개체-관계 모델링(Entity-Relationship Modelling E-R model
개체-관계 다이어그램(Entity-Relationship Diagram)이라 한다. 줄여서 ERD E-R diagram
WpKo:개체-관계_모델

개체-관계 모델(E-R model) : 현실 세계를 개체entity와 개체 간의 관계relationship를 이용해 개념적 구조로 표현하는 방법.
개체-관계 다이어그램(E-R diagram, Entity-Relationship diagram, E-R 다이어그램) : 현실 세계를 개체-관계 모델을 이용해 개념적으로 모델링하여 그림으로 표현한 것[7]

개체entity 사각형
개체 간 관계relationship 마름모
개체나 관계의 속성attribute 타원
각 요소를 연결하는 링크(연결선)
[8]

bmks en
Introduction of ER Model
https://www.geeksforgeeks.org/introduction-of-er-model/
er diagram의 기호들 설명.

}

관계형데이터베이스relational_database // pagename 뒤에 RDB 추가?
{
RDB
DB중 relational database가 인기있다.
spreadsheet 비슷하다.
하나 이상의 테이블table 또는 릴레이션relation으로 정리한다.
행row, 열column이 있다.

row - 행, 로우.
레코드record튜플tuple로도 부른다.
고유키primary_key가 각 row를 식별한다.
i.e. 각 row마다 그것만의 고유 키key가 있다.
테이블table 안의 row는 다른 테이블들의 row로 연결이 가능. (tbw 외래키foreign_key와의 관계 정확히 서술...)

column - 컬럼, 속성attribute, 필드field



시스템카탈로그system_catalog
{
DB는 자기자신을 설명하는 본성(self-describing nature)을 가진다.
DB 구조 / 제약조건의 서술 (Description of DB structure / constraints)이 저장되는 곳이 system catalog.
// 제약조건constraint
}
제약조건constraint

Codd_12_rules
{
RDB? RDBMS? 이기 위한 조건?
0번에서 12번까지 13개의 조건들.
사실 이것을 다 만족하는 db가 별로 없는듯? - 규칙이 엄격한 편.
WpKo:커드의_12_규칙
WpEn:Codd's_12_rules
}

database schema와 database instance.
데이터베이스스키마database_schema : 릴레이션스키마relation_schema들의 모임, 정적임.
데이터베이스인스턴스database_instance : 특정 시점에서의 모든 릴레이션인스턴스relation_instance들의 모임, 동적임.
스냅샷snapshot, 데이터베이스스냅샷database_snapshot { 어떤 시각에서 / 어느 시점에서 database상태state. database_state. }

함수function ... SQL함수? SQL_function
IN
집합함수? aggregate_function
튜플tuple 하나하나에 적용되는 게 아니라 전체 묶음에 대해 적용된다.
MAX, MIN, SUM, AVG
ex. SELECT MAX(SALARY), SUM(SALARY) FROM EMPLOYEE;
COUNT - tuple 수나 값들의 수를 되돌려준다.
Ex.
SELECT COUNT(*) FROM EMPLOYEE;
SELECT COUNT (DISTINCT SALARY) FROM EMPLOYEE;

complete_set
{
관계대수relational_algebra,
관계연산relation_operation,
관계데이터연산relationship_data_operation,
연산operation, 중 어디에 분류해야 적당한지? 일단 여기에 적음.

R.A operation에서 complete set이란:
{σ, π, ∪, -, ×}
대충, 이 연산(자) 집합만으로 모든 연산을 나타낼 수 있다는?? 기본연산집합 같은? - chk



tmp; to mv

여러 DB 분류 - from http://kocw.net/home/search/kemView.do?kemId=1335378 김정준 1. 33m
{
메인 메모리 DB
DB의 일부 또는 전부를 main memory에 상주시켜 운용
분산 DB
물리적으로 여러 개의 DB 시스템을 네트워크로 연결하여,
논리적으로 하나의 DB 시스템처럼 사용자가 사용할 수 있는 DB
멀티미디어 DB
슷자, 문자 같은 일반 데이터data뿐만 아니라 영상 음향 등을 효과적으로 저장 및 처리하는 DB
공간 DB
공간에 존재하는 점, 선, polygon 등을 포함하는 객체의 data를 저장 및 검색하는데 최적화된 DB
비정형 DB
빅데이터big_data 처리를 위해 전통적인 관계형데이터베이스(RDB)와는 다르게 설계된, NoSQL
빅데이터의 세 특징(3V) : 양(volume) 속도(velocity) 다양성(variety)
대표적 NoSQL 데이터 모델:
  • column
  • document
  • key-value
  • graph
ex.
MongoDB, Cassandra, HBase, ...
}

ER_diagram
{
ER 다이어그램을 그리는 설계도구로는 ER win, ER studio, Power Builder, DA# 등이 있다 (김정준)
ER 모델의 구성 요소는
엔티티 개체entity 직사각형
애트리뷰트속성attribute 타원
관계 관계relationship 마름모 1:1, 1:n, m:n
}

RDB 외

NoSQL
{
// tmp; chk; from Namu:NoSQL
단어 뜻은 Not only SQL
대충,
한 개 장비의 성능을 향상시키는(scale up: 수직적 확장) 비용 때문에,
일관성consistency을 약간 포기하고, 여러 컴퓨터에 데이터를 분산하는(scale out: 수평적 확장) // distributed_system distribution
스키마schema없이 동작.
따라서 비형식적인 데이터를 다루는 것이 용이함.
하지만 DB가 스키마를 직접 관리하지 않는다는 것이지, 암묵적인 schema는 있음. - type 불일치 발생 가능.


기타


https://database.sarang.net/
대개 게시판이고, 왼쪽에 'DB 문서들', '스터디'에 오래 된 문서들 보존 있음.



오토셋 AutoSet - 2019년까지만 운영한다고.. 일단 페이지 살아있기는 함 http://autoset.net/

via 생활코딩 mysql https://opentutorials.org/course/3161
{
WAMP는 Google:bitnami wamp검색해서 https://bitnami.com/stack/wamp/installer 를 저기선 추천.
그리고 설치 후 Windows의 'WAMP packaged by Bitnami'에도 항목 있으며
C:\Bitnami\wampstack-8.0.20-0\manager-windows.exe
를 배경화면에 바로가기 만들어도 된다.
또한 다음 MySQL(바이너리 이름이 mysql임에도 사실은 MariaDB임) console로 가는 batch file
cd C:\Bitnami\wampstack-8.0.20-0\mariadb\bin
mysql -u root -p(비밀번호여섯글자이상)
을 배경화면에 바로가기 만들어 놓으면 편하다.
}