F-Lab
🚀
상위권 IT회사 합격 이력서 무료로 모아보기

장고에서의 데이터베이스 상속과 활용

writer_thumbnail

F-Lab : 상위 1% 개발자들의 멘토링

AI가 제공하는 얕고 넓은 지식을 위한 짤막한 글입니다!



장고에서의 데이터베이스 상속의 중요성

장고(Django)는 파이썬 기반의 웹 프레임워크로, 데이터베이스 모델링에서 상속을 통해 코드의 재사용성을 높일 수 있습니다.

왜냐하면 많은 경우에 크리에이티드 엣, 업데이티드 엣 같은 모든 모델이 가져야 할 필드들이 있기 때문입니다.

이러한 필드들을 하나의 베이스 모델로 지정하고 다른 모델들이 이를 상속받도록 하면 코드의 중복을 줄일 수 있습니다.

이 글에서는 장고에서 데이터베이스 상속을 활용하는 방법과 그 장점을 살펴보겠습니다.

특히, 추상화 클래스와 멀티 테이블 상속을 중심으로 다룰 것입니다.



추상화 클래스(Abstract Class)

추상화 클래스는 실제 데이터베이스 테이블로 생성되지 않는 클래스입니다.

왜냐하면 메타 클래스에서 abstract = True로 설정하면 부모 클래스는 추상적으로 상속해 주기 위해 존재하기 때문입니다.

이 방식은 공통 필드들을 정의하고 이를 상속받는 모델들이 해당 필드들을 가지도록 할 수 있습니다.

예를 들어, 다음과 같은 코드를 통해 추상화 클래스를 정의할 수 있습니다.

class BaseModel(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True

이렇게 하면 상속받는 모델들은 created_at과 updated_at 필드를 자동으로 가지게 됩니다.



멀티 테이블 상속(Multi-table Inheritance)

멀티 테이블 상속은 부모 클래스와 자식 클래스 모두 데이터베이스 테이블로 생성되는 방식입니다.

왜냐하면 부모 클래스의 테이블이 실제로 DB에 반영되기 때문입니다.

이 방식은 부모 클래스의 데이터를 자식 클래스에서 참조할 수 있도록 합니다.

예를 들어, 다음과 같은 코드를 통해 멀티 테이블 상속을 정의할 수 있습니다.

class Person(models.Model):
    name = models.CharField(max_length=100)

class Student(Person):
    school = models.CharField(max_length=100)

이렇게 하면 Person과 Student 두 개의 테이블이 생성되고, Student는 Person의 데이터를 참조할 수 있습니다.



프록시 모델(Proxy Model)

프록시 모델은 기존 모델의 동작을 변경하지 않고 새로운 동작을 추가할 수 있는 방식입니다.

왜냐하면 프록시 모델은 실제 데이터베이스 테이블을 생성하지 않기 때문입니다.

이 방식은 기존 모델의 데이터를 그대로 사용하면서 새로운 메서드나 속성을 추가할 수 있습니다.

예를 들어, 다음과 같은 코드를 통해 프록시 모델을 정의할 수 있습니다.

class Person(models.Model):
    name = models.CharField(max_length=100)

class PersonProxy(Person):
    class Meta:
        proxy = True

    def get_uppercase_name(self):
        return self.name.upper()

이렇게 하면 PersonProxy는 Person의 데이터를 그대로 사용하면서 get_uppercase_name 메서드를 추가할 수 있습니다.



장고에서의 상속 활용 사례

장고에서의 상속은 다양한 활용 사례가 있습니다.

왜냐하면 공통 필드들을 정의하고 이를 상속받는 모델들이 해당 필드들을 가지도록 할 수 있기 때문입니다.

예를 들어, 사용자 인증 시스템에서 공통 필드들을 정의하고 이를 상속받는 방식으로 구현할 수 있습니다.

또한, 블로그 시스템에서 게시글과 댓글 모델이 공통 필드들을 상속받도록 할 수 있습니다.

이렇게 하면 코드의 중복을 줄이고 유지보수를 용이하게 할 수 있습니다.



결론

장고에서의 데이터베이스 상속은 코드의 재사용성을 높이고 유지보수를 용이하게 하는 중요한 기법입니다.

왜냐하면 많은 경우에 크리에이티드 엣, 업데이티드 엣 같은 모든 모델이 가져야 할 필드들이 있기 때문입니다.

추상화 클래스, 멀티 테이블 상속, 프록시 모델을 통해 다양한 방식으로 상속을 활용할 수 있습니다.

이 글을 통해 장고에서의 데이터베이스 상속에 대한 이해를 높일 수 있기를 바랍니다.

따라서 이러한 요소들을 고려하여 데이터베이스 모델을 설계하고 구현하는 것이 중요합니다.

ⓒ F-Lab & Company

이 컨텐츠는 F-Lab의 고유 자산으로 상업적인 목적의 복사 및 배포를 금합니다.

조회수
F-Lab
소개채용멘토 지원
facebook
linkedIn
youtube
instagram
logo
(주)에프랩앤컴퍼니 | 사업자등록번호 : 534-85-01979 | 대표자명 : 박중수 | 전화번호 : 1600-8776 | 제휴 문의 : info@f-lab.kr | 주소 : 서울특별시 강남구 테헤란로63길 12, 438호 | copyright © F-Lab & Company 2025