함수 종속성 (Functional Dependency) : 속성들 간의 종속 관계 Y는 X에 함수 종속 = X -> Y: X의 값에 의해 Y의 값이 오직 하나로 결정됨 X = 결정자 / Y = 종속자 완전 함수 종속 : 종속자가 기본키에 종속되며, 기본키를 구성하는 모든 속성이 포함된 기본키의 부분집합에 대해 종속됨 ex) 릴레이션의 기본키 = (고객ID, 상품ID) (수량), (구매 금액) 속성은 기본키를 구성하는 속성 (고객ID, 상품ID)를 모두 알아야 식별가능하므로 기본키에 완전 함수 종속 부분 함수 종속 : 종속자가 기본키가 아닌 다른 속성에 종속되거나, 기본키를 구성하는 속성들 중 일부에만 종속됨 ex) (주문 상품) 속성은 기본키의 부분집합인 (상품ID)만 알아도 식별가능하므로 기본키에 부분..
정규화를 거치지 않고 DB에 데이터들이 불필요하게 중복되어 릴레이션 조작시 발생하는 이상현상 삽입이상 (Insertion Anomaly) : 삽입할 때 불필요한 데이터를 추가해야 삽입할 수 있는 현상 ex) 테이블에 경영학과를 추가할 때, 학생의 정보(불필요한 데이터)가 있어야 함 삭제 이상 (Delete Anomaly) : 삭제할 때 원하지 않는 값이 연쇄 삭제됨 ex) 테이블에서 학생을 삭제할 때, 학과의 정보가 삭제됨 갱신 이상 (Update Anomaly) : 중복된 데이터 중 일부만 변경되어 데이터에 모순이 일어나는 현상 ex) 컴퓨터공학의 학과명이 소프트웨어학으로 변경되는 경우, 1000개의 데이터를 모두 변경해야 함 학생 테이블, 학과 테이블 두 개의 테이블로 분리하여 갱신 이상 방지
무결정 제약 조건 : 데이터베이스에 저장된 데이터의 무결성, 일관성 보장 1. 개체 무결성 : 기본 키를 구성하는 속성은 NULL 값이나 중복값을 가질 수 없음 2. 참조 무결성 : 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 함 3. 도메인 무결성 : 특정 속성의 값이 도메인에 속한 값이어야함 4. Null 무결성 : 테이블의 특정 속성 값이 null이 될 수 없음 5. 고유 무결성 : 테이블의 특정 속성에 대해 각 레코드들이 다른 값을 가져야 함 6. 키 무결성 : 하나의 테이블은 적어도 하나의 키를 가짐
스키마 (Schema) : 데이터베이스의 구조와 제약 조건에 대한 전반적인 명세를 기술한 메타데이터 집합 간단히 말하자면, DB내에 데이터가 어떤 구조로 저장되는 지 나타내는 데이터베이스 구조 스키마는 DDL로 기술하고, DDL 컴파일러에 의해 번역되어 데이터 사전에 저장됨 - 외부 스키마 (서브 스키마): 사용자 뷰, 서브 스키마, 일반 사용자는 SQL을 통해, 프로그래머는 개발 언어를 통해 DB에 접근 - 개념 스키마: 전체적인 뷰, DBA에 의해 구성 - 내부 스키마: 저장 스키마, 물리적인 저장장치 입장 - 하나의 데이터베이스시스템에 여러개의 외부스키마 존재 가능 - 하나의 외부스키마를 여러 개의 프로그램/사용자가 공유 가능 - 개념 스키마, 내부 스키마는 하나만 존재 시스템 카탈로그 (Syste..
데이터베이스 키(Key) : 하나 이상의 속성(attribute)의 집합 키의 특성 유일성: 키값으로 튜플을 유일하게 식별함 최소성: 키를 구성하는 속성들 중 최소한의 속성들로만 키를 구성함 슈퍼키 (Super Key) 릴레이션 내 튜플을 유일하게 식별하는 하나의 속성 또는 속성들의 집합 유일성 만족, 최소성 만족 X 후보키 (Candidate Key) 튜플을 유일하게 식별할 수 있는 최소한의 속성들의 모임 모든 릴레이션은 하나 이상의 후보키를 가짐 모든 튜플에 대해 유일성과 최소성 만족 기본키 (Primary Key) 후보키 중 선택된 키, 유일성과 최소성 만족 NULL값을 가질 수 없음 (개체 무결성) 동일한 값이 중복되어 저장될 수 없음 (개체 무결성) 외래키 (Foreign Key) 다른 릴레이션..
https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr [프로그래머스][C++] 가장 큰 수 #include #include #include using namespace std; bool compare(string a, string b) { return a + b > b + a; } string solution(vector numbers) { strin..
https://programmers.co.kr/learn/courses/30/lessons/12952 코딩테스트 연습 - N-Queen 가로, 세로 길이가 n인 정사각형으로된 체스판이 있습니다. 체스판 위의 n개의 퀸이 서로를 공격할 수 없도록 배치하고 싶습니다. 예를 들어서 n이 4인경우 다음과 같이 퀸을 배치하면 n개의 퀸은 programmers.co.kr [프로그래머스][C++] N-Queen #include #include #include using namespace std; int answer = 0; int arr[15]; bool check(int r) { for (int i = 0; i < r; i++) { if (arr[r] == arr[i] || abs(arr[r] - arr[i]) =..
https://programmers.co.kr/learn/courses/30/lessons/12949 코딩테스트 연습 - 행렬의 곱셈 [[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]] programmers.co.kr [프로그래머스][C++] 행렬의 곱셈 #include #include using namespace std; vector solution(vector arr1, vector arr2) { int r1 = arr1.size(); int r2 = arr2.size();// == c1 int c2 = arr2[0].size(); vector answer..