🖥️ Modification Anomaly의 종류와 예시데이터베이스는 유용한 정보를 저장하고 관리하기 위한 시스템입니다. 하지만 데이터베이스 설계가 적절하지 않으면 Modification Anomaly(수정 이상현상)가 발생할 수 있습니다. 이는 데이터베이스에 데이터를 추가하거나 수정, 삭제하는 과정에서 발생하는 문제들을 의미합니다. 이러한 문제는 데이터의 무결성을 손상시키고 불필요한 중복 데이터를 유발할 수 있습니다. Modification Anomaly는 크게 삽입 이상(Insertion Anomaly), 갱신 이상(Update Anomaly), 삭제 이상(Deletion Anomaly)으로 나뉩니다. 각각의 이상현상과 예시를 살펴보겠습니다.✅ 삽입 이상 (Insertion Anomaly)삽입 이상..
🖥️ 데이터베이스의 세 가지 제약: Domain, Entity, Referential Integrity Constraint데이터베이스는 유용한 정보를 저장하고 관리하기 위한 시스템입니다. 이 시스템에서는 데이터의 무결성을 보장하고 오류가 발생하지 않도록 다양한 제약 조건을 설정할 수 있습니다. 대표적으로 세 가지 제약, 즉 Domain Constraint, Entity Integrity Constraint, Referential Integrity Constraint가 있습니다. 각각의 제약은 데이터의 정확성과 일관성을 유지하는 데 중요한 역할을 합니다.✅ Domain Constraint (도메인 제약)도메인 제약은 특정 속성에 저장될 수 있는 값의 범위를 정의하는 제약입니다. 각 컬럼에 허용된 데이터 ..
Psycopg는 파이썬에서 PostgreSQL 데이터베이스에 연결하고 사용하기 위해 사용하는 PostgreSQL 데이터베이스 드라이버입니다. 파이썬 애플리케이션에서 PostgreSQL 데이터베이스에 쿼리를 보내고, 데이터를 읽거나 쓰는 작업을 할 수 있게 해주는 역할을 합니다. (마치 자바의 JDBC처럼..)💋 Psycopg의 주요 기능1. PostgreSQL 데이터베이스 연결Psycopg는 파이썬 애플리케이션이 PostgreSQL 데이터베이스에 연결할 수 있도록 해줍니다.사용자는 데이터베이스에 대한 연결을 설정하고, 그 위에서 쿼리를 실행할 수 있습니다.import psycopg2# 데이터베이스 연결 설정connection = psycopg2.connect( host="localhost", ..
💋 Friend Functions이란?✔️ 개념Friend Function은 특정 클래스의 private 또는 protected 멤버에 직접 접근할 수 있는 권한을 가진, 클래스 외부에서 정의된 함수입니다. (이게 뭔 짬뽕..?)친구 함수는 클래스의 멤버 함수가 아니지만, 클래스 내에서 friend 키워드를 사용하여 친구로 선언됩니다.⇒ 멤버 함수는 아닌데, 그래도 private 또는 protected 변수랑 함수에 직접 접근이 가능?!!✔️ 사용 방법친구 함수를 선언하기 위해서는 함수 앞에 friend 키워드를 붙이면 됩니다.class MyClass {private: int data;public: MyClass(int value) : data(value) {} friend void s..
💋 연산자 오버로딩이란?✔️ 개념C++에서 연산자 오버로딩(operator overloading)은 클래스 또는 structure에서 기존 연산자인 +, - , =, ==, *, /, % 등등을 재정의하는 것을 말합니다. 객체들에 대한 연산자 사용이 가능해져, 코드의 가독성과 재사용성을 높일 수 있습니다.✔️ 구조ReturnType operatorOP (arguments) { // 구현}OP는 오버로드하고자 하는 연산자보통 + 연산자의 이름은 + 그 자체임.ReturnType은 연산 결과의 타입arguments는 연산자의 피연산자연산자 오버로딩은 보통 멤버 함수나 friend 함수을 통해 구현됩니다.💋 구현 방법✔️ friend function에서 오버로딩#include class Complex..
C++에서 static 키워드는 클래스의 정적 멤버 변수와 정적 함수를 정의하는 데 사용됩니다.정적 멤버들은 클래스의 모든 인스턴스 간에 공유되며, 클래스 인스턴스 없이도 접근하고 사용할 수 있습니다.정적 멤버 변수와 함수는 클래스의 인스턴스와 관계없는 상태나 연산 을 다루고, 클래스 자체의 상태 정보를 유지하거나 클래스 수준의 연산을 수행할 때 유용합니다.💋 정적 멤버 변수 (Static Member Variables)class MyClass {public: static int count; // 정적 멤버 변수 선언 MyClass() { count++; } ~MyClass() { count--; }};int MyClass::count = 0; // 정적 멤버 변수 초기화클래스의 모든 ..
C++에서 const 키워드는 '상수'라는 뜻이다. 한 번 정해진 값은 바꿀 수 없게 만든다.const 사용 방법은 몇 가지가 있는데, 위치에 따라 의미가 달라진다.💋 변수 앞에 constconst int maxCount = 100;이 코드에서 maxCount는 100이라는 값을 갖고, 이 값은 상수로 선언되어 프로그램 내에서 바꿀 수 없다.💋 const와 포인터✔️ const int* ptrconst int* ptr = &maxCount;*ptr 를 변경할 수 없는 것!포인터 자체가 가리키는 주소 ptr는 변경 가능포인터가 가리키는 데이터 *ptr는 변경 불가능ptr은 int의 포인터인데, ptr이 가리키는 값을 바꿀 수 없다. 그래서 ptr = 200; 이런 식으로 값을 변경하려고 하면 컴파일 에..
💋 인트로C++에서 인라인 함수(inline function)는 일반적으로 컴파일러에게 함수 호출의 오버헤드를 줄이도록 요청하는 방법입니다.인라인 함수는 함수 호출이 일어나는 위치에서 함수 코드 자체로 대체됩니다. 이는 함수의 실행 속도를 향상시킬 수 있지만, 코드 크기가 증가할 수 있는 단점 이 있습니다. 인라인 함수는 작고, 빈번하게 호출되는 함수에 적합 합니다.💋 인라인 함수의 정의 방법인라인 함수는 inline 키워드를 사용하여 정의합니다. C++에서는 클래스 멤버 함수를 클래스 정의 내에서 정의할 때 자동으로 인라인으로 처리되기도 합니다.✔️ 예시 코드다음은 간단한 인라인 함수의 예시입니다.#include // 인라인 함수 정의inline int add(int x, int y) { re..
💋 참조란?✔️ 정의참조는 어떤 변수의 다른 이름을 제공합니다.예를 들어, 변수 robert에 대한 참조를 만들면, 이 참조를 통해 robert 변수를 직접 조작할 수 있습니다.int robert = 10;int& bob = robert; // bob은 robert의 참조bob = 20; // robert의 값도 20으로 변경됨bob은 robert의 저장 위치에 대한 참조이며, bob을 통해 robert를 조작할 수 있습니다. bob에서 이루어진 변경은 모두 robert에 반영됩니다.헷갈리죠?✔️ 참조 vs 일반변수만약에 bob이 참조변수가 아니라 일반변수였다 고 생각해 봅시당int robert = 10;int bob = robert;bob = 20;이렇게 되면 bob은 단지 rob..
💋 생성자란?✔️ 개념객체를 초기화하는 역할을 하는 member function초기화 = member variables의 값을 초기화객체 선언 시 자동으로 호출된다.💋 생성자 코드에서 사용하기✔️ 생성자 정의이름은 클래스 이름과 동일하게반환값은 없음class Money {public: Money(int dollar, int cent) // 생성자 : dollar(dollar), cent(cent) { } int getDollars() const { return dollar; } int getCents() const { return cent; }private: ..