Til

    테이블간의 Cardinality와 객체 내의 Attribute간의 Cardinality?

    Introduction 며칠 전 친구한테 질문을 받았다. 학교의 DB 과제였는데, DB 모델링시 테이블간의 Cardinality는 중요하게 여겨지는데, 한 테이블(Entity가 속하는) 안의 Attribute간의 Cardinality는 중요하게 여기지 않는 이유를 설명하라는 것이었다. 당연하게 걍 신경안써도 되는거 아님? 이라는 말을 하기 싫었다. 따라서 나름대로의 이유를 생각하고 조사해보았다. 이런 질문에 답하기 위해서는 Cardinality의 정의와 그러면 왜 테이블간의 Cardinality를 신경쓰는가?에 먼저 답하는 것이 중요하다. Cardinality의 정의 Cardinality는 집합론에서 사용하는 단어로, 집합의 크기를 뜻한다. the cardinality of a set is a measu..

    Flask + SQLAlchemy를 사용하며 배운것들을 정리

    migrate 변수는 뭘 하는거냐 Migrate 변수는 뭐하는 변수람 flask 에서 migration을 하는 코드를 보면 다음과 같은 코드를 볼 수 있다. migrate = Migrate(app, db) 역시나 이게 왜 필요한지 말 안해주는 사람이 많다. 그래서 찾아봤는데...커맨드를 입력하기 위해 필요한 변수였다. flask 공식문서 의 Command Reference를 보면. The following example initializes the extension with the standard Flask command-line interface: from flask_migrate import Migrate migrate = Migrate(app, db)이것까지 해야, db migrate를 실행시킬 수..

    C++의 Rule of Zero

    한참 전에 업무에서 C++을 사용하던, 평생 C++을 쓸 것 같았던 그 시절 공부했던 기록을 찾아서 남겨본다. Rule of Three, Rule of Five에 대해서 간단히 정리하자면... Rule of Three는 소멸자, 복사 생성자, 복사 할당 연산자 중 하나를 정의했다면 다른 것도 같이 정의해야 한다는 것이다. Rule of Five는 모던으로 넘어오면서 위의 3개에서 이동 생성자, 이동 할당 연산자를 추가 한 것이다. 단순히 무조건 기계적으로 만들어라라기 보다는, 저 중 하나를 만들었으면 다른 것에 대한 생각을 무조건 하고, 적절한 처리를 해야된다는 뜻이다. (포인터를 멤버로 가지고 있고 소멸자에서 그 포인터를 할당 해제 하는 클래스가 있을 때, 복사 생성자를 정의 안하면 복사된 인트선스와 ..

    Elixir의 Ecto에서 virtual 키워드가 의미하는 것

    처음에는 OOP의 virtual 개념이랑 헷갈려서 많이 혼동했던 부분. ecto에서 field를 정의할 때 virtual을 정해줄 수 있다. 여기서 virtual은 DB에 저장하지 않는 field라는 뜻이다. DB에 저장하지도 않은 테이블이 왜 필요하나면, 이것을 이용해서 유용한 처리를 할 수 있기 때문이다. 그 스키마와 연관된 값이지만 저장할 필요는 없는, 그런 값이 필요할 때가 있다. 공식 문서에서 발췌한 설명이다. 이 경우에서는 password 필드를 virtual로 하였다. password 필드는 평문 패스워드가 들어가는데 DB에 직접 들어갈 필요는 없다. 하지만 user와 관련된 값이기에 분리하기도 애매하다 virtual로 저장되기에 DB에 저장되지 않는다. changeset에서 이 값을 변환해..