본문 바로가기

전체 글193

03. 정규화 정규화 정규화 : 테이블을 재구성하여 논리적 구조를 개선하는 절차 불필요하게 중복되는 데이터를 제거하여 저장 공간을 절약하고 전체적인 성능을 향상시킨다. 규칙에 따라 테이블이나 필드를 세분화하면 관리 편의성도 좋아진다. → 하나의 데이터가 한 곳에 저장되도록 한다. 제 1 정규화 : 필드의 데이터를 원자화(atomicity)한다. 필드에는 단일값을 저장하고 필드끼리는 독립적이어야한다. 만일 필드에 단일값을 저장하지 않고 한 필드에 “수학, 국어, 영어” 와 같이 저장한다면 과목의 수에 제한이 없어 필드의 길이를 미래를 생각해서 미리 충분히 확보해야하므로 저장 공간을 낭비하게 되며, 단일 값이 아니므로 = 연산자로 값을 비교할 수도 없고 문자열 검색 알고리즘은 그 한계상 신뢰하기도 어렵다. 뿐만 아니라 수.. 2022. 12. 29.
02. relational model, 관계형 모델 Instances of Branch and Staff Relations 필드 Field : 열, column : 가장 작은 단위의 데이터 : 엔터티의 속성을 나타냄 Attribute 특성 : 엔티티를 설명하는 특성 데이터베이스에서 필드와 특성은 본직적으로 같은 것이다. 엔터티의 특수한(고유한) 성질. 레코드 Record : 튜플 tuple : 행 row : 논리적으로 연관된 필드의 집합 여러 레코드가 모여 하나의 테이블을 만든다. 테이블 table : 파일 file : 서로 연관된 레코드의 집합 엔터티 entity : 현실세계에 존재하는 것을 데이터베이스 상에 표현하기 위해 사용하는 추상적인 개념 고객을 관리하기 위해 사용하는 데이터베이스에서 ID, 나이, 클래스 라는 정보를 통해 고객이라는 엔터티(객체.. 2022. 12. 29.
01. SQL INSERT : 새로운 레코드를 추가하는 명령 INSERT INTO 테이블 (필드목록) VALUES (값목록) INSERT INTO tCity (name, area, popu, region) VALUES ('서울', 605, 974, '경기'); 다음과 같이 쓰면 순서대로 대응되어 저장된다. 더 짧게 쓸 수 있다. INSERT INTO tCity VALUES ('서울', 605, 974, '경기'); 하지만 필드 목록이 없는 대신 값 목록이 완전하고 순서도 반드시 지켜져야 한다. 필드 목록을 같이 적는 다면 필드에 대응되는 순서로만 적는다면 테이블의 필드 순서와는 바뀌어도 상괸없다. UPDATE : 레코드의 필드값을 변경할 때 UPDATE 테이블 SET 필드=값 [, 필드=값] WHERE 조건; UPDA.. 2022. 12. 29.
00. 데이터베이스 데이터베이스 : 컴퓨터의 기억 능력을 통해 자료를 가공 및 저장, 활용하는 일체의 기술 자료는 아무리 많아도 재료일 뿐 그 자체로 유용하지 않다. 자료를 활용하려면 합산, 집계등의 알고리즘을 통해 정보를 가공해야 한다. 데이터베이스는 방대한 자료를 집약하여 저장할 뿐만 아니라 모아 놓은 자료를 가공하여 유용한 정보를 뽑아내는 기술이다. # 데이터베이스가 갖춰야할 요건 대용량 : 대규모의 데이터를 무리없이 저장해야 한다. 은행의 고객은 수천만명이고 고객당 거래 정보도 수천건이어서 정보량이 조 단위에 이른다. 원활한 업무를 위해 모든 데이터를 완벽하게 저장해야한다. 효율성 : 대용량의 데이터를 유지하려면 고성능 서버와 막대한 비용이 필요하다. 고가의 장비를 최대한 활용하려면 저장 구조를 정교하게 설계하여 불.. 2022. 12. 29.
[도서 리뷰] 파이썬 라이브러리를 활용한 텍스트 분석 NLP를 개인 프로젝트에 적용할 수 있도록 안내하는 책 텍스트를 기반으로 한 AI 모델을 만들고자할 때 이 책으로 도움을 받을 수 있다. 일기나, 말투를 기반으로 사람의 감정을 분석하는 서비스나, 문법 자동 완성 서비스 등등 사람의 말을 기반으로 AI 모델을 학습하여 제공할 수 있는 서비스는 NLP를 기반으로 한다. 개인적으로 졸업프로젝트로 NLP를 공부해야하는 상황이었는데 우선 NLP 모델을 만들어 학습하기 전에 원하는 모델을 학습하기 위한 데이터를 준비하는 과정부터 난감하였다. 데이터를 어디서 끌어와야할지, 크롤링을 한다면 어떻게 시작해야할지 그런데 이 책은 데이터를 준비하는 과정(크롤링)부터 모은 데이터들로 할 수 있는 다양한 NLP 모델들을 소개한다. 또한 모델의 성능을 높일 수 있는 방법을 차례.. 2022. 11. 30.
[Inception] 0. 과제 이해하기 This project consists in having you set up a small infrastructure composed of different services under specific rules. - You have to use docker-compose. - It means you have to build yourself the Docker images of your project. • A Docker container that contains NGINX with TLSv1.2 or TLSv1.3 only. • A Docker container that contains WordPress + php-fpm (it must be installed and configured) only wit.. 2022. 11. 15.
[ CPP08 ] 0. 과제 이해하기 STL을 사용해봅시다. 최대한 많이 ex00 오른발을 내딛기 위한 쉬운 연습. type T를 이용하는 템플릿 함수 easyfind를 작성하세요. 이 함수는 두개의 파라미터를 받는데 첫번째는 type T이고 두번째는 int 입니다. 첫번째 파라미터는 정수로된 컨테이너이다. 이 함수는 첫번째 파라미터에서 두번째 파라미터가 처음으로 발견되는 부분을 찾습니다. 발견되지 않으면 예외를 던지거나 에러값을 반환하세요. 하고 싶은대로 하세여 영감이 필요하십니까? 표준 컨테이너가 어떻게 동작하는지 분석해보세요. 물론 모든 상황에서 잘 동작한다는 것을 보여줄 테스트도 준비해야합니다. You don’t have to handle associative containers. ex01 정수 N의 최대를 저장할 수 있는 Span .. 2022. 8. 6.
[ CPP07 ] 0. 과제이해하기 템플릿을 공부해봅시다. ex02 Array 타입 T를 요소로 포함하는 템플릿 클래스 Array를 만드세요. 이 클래스는 다음의 행동과 함수를 따릅니다. 생성자는 파라미터가 없습니다. 빈 array를 만들어요. unsigned int n 을 파라미터로 받는 생성자는 n개의 요소를 가진 array를 만들고 디폴트값으로 초기화합니다. Tip: Try to compile int * a = new int(); then display *a. 복사생성자와 대입연산자는 모두 복사 후 원본 배열이나 복사본을 수정해도 다른 배열에는 영향을 주지 않습니다. 딥카피하라고 메모리를 할당할 때 new 연산자를 사용해야한다. 메모리를 사전에 할당하는 것은 금지입니다. 요소는 [ ] 연산자를 통해서 접근할 수 있다. [ ] 연산자로.. 2022. 8. 6.
[ CPP06 ] 0. 과제이해하기 타입 캐스트에 대해서 알아봅시다. 업캐스팅 자식클래스 객체를 부모클래스의 포인터로 가리키는 것 (부모클래스) *(변수) = (자식 클래스 객체); 위의 변수로는 자식클래스 객체에서 부모클래스의 public에 해당하는 멤버만 접근할 수 있다. 다운캐스팅 부모 클래스 포인터가 가리키는 객체를 자식 클래스의 포인터로 가리키는 것 (자식 클래스 포인터 변수) = (자식 클래스 *)(부모 클래스 포인터 변수); 명시적으로 형변환을 해야한다. 다운캐스팅시 부모클래스 포인터 변수가 부모클래스 객체를 가리키고 있을때 위와 같이 형변환하고 자식 클래스의 멤버를 호출하면 컴파일시에는 문제가 없지만 실행 중에 오류가 발생할 수 있어 위험하다. type casting : 변수의 type을 강제로 변환하는 것 묵시적 명시적 :.. 2022. 8. 6.