일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 프로세스 주소 공간
- CPU 스케줄링
- 커널 동기화
- 김영한
- Extendable hashing
- 갤럭시 S24
- 코딩테스트 [ ALL IN ONE ]
- vite
- 시그널 핸들러
- 인터럽트
- 온디바이스AI
- concurrency control
- 쉬운코드
- 데이터베이스
- BreadcrumbsComputer-Networking_A-Top-Down-Approach
- 트랜잭션
- recoverability
- 반효경
- Git
- 개발남노씨
- 백엔드
- 시스템프로그래밍
- 네트워크
- 쉬운 코드
- B tree 데이터삽입
- SQL
- 운영체제
- 코딩애플
- SDK
- 운영체제와 정보기술의 원리
- Today
- Total
목록CS 지식/데이터베이스 (23)
티끌모아 태산

저번 시간에 이어서 DB 정규화를 공부해 보도록 하겠습니다. 3NF, BCNF. 저번 시간 마지막에 배운 내용이 2NF로 모든 non-prime attribute는 모든 key에 fully functionally dependent 해야 한다. 위 사진을 살펴보면 empl_name에 중복된 데이터가 발생합니다. 이러한 중복데이터가 발생하는 이유를 살펴보겠습니다. 먼저 {empl_id} -> {empl_name} 으로 FD 입니다. 그리고 account_id -> empl_id 로 즉, account_id가 같으면 empl_id가 같다는 뜻입니다. 이는 결국 account_id -> empl_name 으로 정의할 수 있습니다. 또 다른 키를 살펴봐도 같은 논리로 정의할 수 있습니다. 이러한 관계를 trans..

이번시간에는 FD를 사용해서 DB를 정규화하는 방법에 대해서 배워보도록 하겠습니다. *이상현상을 없애려면? 테이블을 분해! 따라서 정규화는 곧 관련있는 속성들로만 릴레이션을 구성하기 위해 릴레이션을 관심사별로 분리하며 함수적 종속성을 판단하여 진행한다. 정규화 = 릴레이션 분리 + 함수 종속성 판단 DB 정규화(normalization) 데이터 중복과 insertion, update, deletion anomaly를 최소화 하기 위해 일련의 normal forms(NF)에 따라 relational DB를 구성하는 과정입니다. 이때, Normal froms는 정규화 되기 위해 준수해야하는 몇 가지 rule들이 있는데 이 각각의 rule을 normal form(NF)이라고 합니다. 정규화 과정에서 주의해야할..

이번 시간에는 DB를 설계하는 방법의 기본이 되는 functional dependency(함수 종속)에 대해서 공부해 보도록 하겠습니다. 이상현상이 발생하지 않도록, 테이블을 관련있는 속성들로만 구성하기 위해 테이블을 분해하는 과정을 정규화라고 하였습니다. 그리고 함수적 종속성을 판단하여 정규화를 수행합니다. Functional dependency(함수 종속) 한 테이블에 있는 두 개의 attribute(s)집합(set) 사이의 제약(a constraint)를 의미합니다. 예를들어, EMPLOYEE 테이블에 6개의 attributes가 있는데 다음과 같이 두개의 집합으로 나눠보겠습니다. 그러면 이 두개의 집합 사이에 어떤 관계가 있을까요? 이 두 집합 사이에는 서로 다른 두 튜플의 X 값이 같다면 Y 값..

이번 시간에도 배운 내용을 정리해 보도록하겠습니다. ORDER BY 조회 결과를 특정 attribute(s) 기준으로 정렬하여 가져오고 싶을 때 사용합니다. 이때, default 정렬 방식은 오름차순입니다. 오름차순 정렬: ASC 내림차순 정렬: DESC - 임직원들의 정보를 연봉 순서대로 정렬해서 알고 싶다. SELECT * FROM employee ORDER BY salary DESC; 우선, * 통해 선택된 튜플의 모든 attribute 정보를 가져온 다음 연봉 기준으로 내림차순 해줍니다. ❗️만약 여기서 추가로 부서별로 연봉을 내림차순으로 정렬하고 싶을 땐 어떻게 해야할까요? ORDER BY는 하나의 attribute뿐만 아니라 여러개의 attribute를 정렬할 수 있습니다. 그리고 앞에 써준 ..

이번시간에는 SQL에서 JOIN의 의미와 종류 그리고 특징에 대해서 배운내용을 정리해보도록 하겠습니다. JOIN SQL에게 JOIN은 두 개 이상의 테이블들에 있는 데이터를 한번에 조회하는 것입니다. 그리고 이 JOIN은 여러 종류가 있습니다. implicit join vs explicit join - ID가 1인 임직원이 속한 부서 이름은? SELECT D.name FROM employee AS E, department AS D WHERE E.id = 1 AND E.dept_id = D.id; 이렇게 FROM절에는 테이블만 나열하고 WHERE절에 join condition을 명시하는 방식을 implicit 방식이라 합니다. 위 내용처럼 implicit join은 가독성과 잘못된 쿼리 작성 가능성 때문에..

이번시간에는 SQL에서 NULL의 의미를 알아보고 비교 연산에서의 결과에 대해서 알아보도록 하겠습니다. NULL unknown: 알려지지 않음. unavailable or withheld: 공개하지 않음, 이용할 수 없음. not applicable: 해당 사항x, 적용 불가 이렇게 SQL에서 NULL의 의미는 이렇게 다양한것을 알 수 있다. 업데이트 하지 않았거나, 보안상 공개하지 않았다거나 등등. NULL과의 비교 연산 SELECT id FROM employee WHERE birth_date = NULL; 이런식으로 작성하면 아무결과값을 받을 수 없다. NULL과 비교 연산을 하기 위해서는 'IS' 또는 "IS NOT" 을 사용해야 한다. SELECT id FROM employee WHERE birt..

이번시간에는 SQL에서 subquery를 통해 다양한 조건으로 데이터를 조회하는 방법에 대해서 배워 subquery와 관련된 대표적으로 중요한 기본기들을 익혀보겠습니다. subquery - ID가 14인 임직원보다 생일이 빠른 임직원의 ID, 이름, 생일을 알고싶다.-> employee table 참조 SELECT birth_date FROM employee WHERE id = 14; 우선, ID가 14인 임직원의 생일을 파악한다. -> 예를들어 result: 1992-08-04 라 했을 때, 다음과 같이 작성하면 된다. SELECT id, name, birth_date FROM employee WHERE birth_date < 1992-08-04; ❗️이때, SELECT 문을 두 번 작성하게 되는데, ..

지금까지 데이터베이스를 정의하고 스키마를 정의한 후 데이터를 추가, 수정, 삭제하는 방법에 대해서 배웠습니다. 이번시간에는 select 문을 활용해서 데이터를 읽어오는 기본적인 문법에 대해서 알아보도록 하겠습니다. SELECT statement -> 데이터 조회하기 - ID가 9인 임직원의 이름과 직군을 알고 싶다.-> employee table 참조 SELECT name, position FROM employee WHERE id = 9; employee 테이블에서 이름과 직군 데이터를 조회한다. projection attributes: 내가 원하는 속성 selection condition: 조건 ✅- project 2002를 리딩(leading) 하고 있는 임직원의 ID와 이름과 직군을 알고싶을 때 -..

이번 시간에도 '쉬운 코드' 님의 강의를 듣고 정리한 내용입니다. 저번시간에 IT회사 RDB 만들기 예시로 SQL을 활용하여 부서, 사원, 프로젝트 관련 정보들을 저장할 수 있는 테이블을 만들고 각각의 스키마를 정의하였습니다. 이렇게 테이블을 수정해 주는 이유는 department 테이블을 만들 당시에 employee 테이블이 없었기 때문입니다. 4개의 테이블을 만들었으니 이제 이 테이블에 데이터를 추가해 보도록 하겠습니다. 우선 EMPLOYEE의 데이블 구조를 살펴보면 다음과 같습니다. ❗️저번시간에도 배웠지만 테이블을 만들 때 constraints를 주의해야합니다. 데이터 추가하기: attributes 순서대로 데이터 추가하기 INSERT INTO table_name VALUES(); 위 사진에서 마..

보통, 현업에서 데이터베이스를 구축할 때 가장 먼저 프로젝트에 맞는 스키마를 정의하는 작업을 진행한다. 이렇게 전체적인 구조를 잡은 후에 실제로 SQL을 사용해서 테이블을 생성한다. 데이터베이스의 구조를 정의할 때 만들려는 서비스의 스펙과 데이터 일관성, 편의성, 확장성등을 종합적으로 고려해서 DB 스키마를 정의하는 것이 중요하다. 시니어 개발자와 주니어 개발자의 중요한 차이중 하나가 이렇게 데이터베이스를 설계하는 능력에 있다. 데이터베이스 생성: create database dbname; 데이터베이스 목록보기: show databases; 데이터베이스 목록 중에 어떤 데이터베이스를 사용하는지 확인: select database(); 데이터베이스 사용: use dbname; 데이터베이스 삭제: drop ..