• 3 minutes to read

효율적인 다중 테넌트 SaaS 관리를 위해서는 각 테넌트(고객)가 사용하는 소프트웨어 유형과 접근 URL을 체계적으로 관리할 수 있는 데이터베이스 구조가 필요합니다. 여기서는 Tenants, ServicesTypes, TenantsServicesLinks 세 개의 테이블을 사용하여 다중 테넌트 환경을 손쉽게 관리하는 방법을 소개합니다.

테이블 구조 개요

이 설계는 세 개의 주요 테이블을 통해 다중 테넌트 SaaS 시스템에서 각 테넌트가 사용하는 소프트웨어와 접근 URL을 관리합니다.

  1. Tenants 테이블 – 각 테넌트(고객) 정보, 즉 SaaS 서비스를 사용하는 기업 정보를 저장합니다.
  2. ServicesTypes 테이블 – 제공하는 SaaS 소프트웨어 유형을 저장합니다. 예: "Employee Licensing," "Vendor Licensing," "Report Writer" 등.
  3. TenantsServicesLinks 테이블TenantsServicesTypes를 연결하여, 각 테넌트가 사용하는 소프트웨어와 그에 대한 접근 URL을 저장합니다.

테이블 설계

1. Tenants 테이블

테넌트의 ID와 이름을 저장하며, 각 테넌트를 고유하게 식별합니다. TenantIDBIGINT 형식으로 자동 증가 값으로 설정하여, 각 테넌트가 등록될 때마다 고유 ID를 자동으로 생성합니다.

CREATE TABLE Tenants (
    TenantID BIGINT PRIMARY KEY IDENTITY(1, 1),
    TenantName NVARCHAR(100) NOT NULL
);

2. ServicesTypes 테이블

사용 가능한 SaaS 소프트웨어 유형을 저장합니다. ServiceID는 자동 증가 값으로 설정하여, 각 소프트웨어 유형이 등록될 때마다 고유 ID가 생성됩니다.

CREATE TABLE ServicesTypes (
    ServiceID INT PRIMARY KEY IDENTITY(1, 1),
    ServiceName NVARCHAR(100) NOT NULL
);

각 테넌트가 사용하는 소프트웨어와 접근 URL을 연결하는 중간 테이블입니다. 이 테이블은 다대다 관계를 관리하기 위해 테넌트와 서비스 유형을 연결하고, 각 서비스의 URL을 추가로 저장할 수 있습니다. TenantServiceID도 자동 증가 값으로 설정됩니다.

CREATE TABLE TenantsServicesLinks (
    TenantServiceID INT PRIMARY KEY IDENTITY(1, 1),
    TenantID BIGINT NOT NULL,
    ServiceID INT NOT NULL,
    ServiceURL NVARCHAR(255) NOT NULL,
    FOREIGN KEY (TenantID) REFERENCES Tenants(TenantID),
    FOREIGN KEY (ServiceID) REFERENCES ServicesTypes(ServiceID)
);

예제 데이터 입력

다음은 위의 테이블에 데이터를 삽입하는 예제입니다.

-- 테넌트 정보 삽입
INSERT INTO Tenants (TenantName)
VALUES ('A Company'), ('B Company');

-- SaaS 유형 정보 삽입
INSERT INTO ServicesTypes (ServiceName)
VALUES ('Employee Licensing'), ('Vendor Licensing'), 
       ('Report Writer'), ('Internal Audit');

-- 테넌트별 SaaS URL 정보 삽입
INSERT INTO TenantsServicesLinks (TenantID, ServiceID, ServiceURL)
VALUES (1, 1, 'https://a-company.com/employee-licensing'), 
       (1, 2, 'https://a-company.com/vendor-licensing'), 
       (2, 3, 'https://b-company.com/report-writer');

결론

이 설계를 통해 각 테넌트가 사용하는 소프트웨어와 URL을 체계적으로 관리할 수 있으며, 테넌트별 SaaS 이용 현황을 쉽게 파악할 수 있습니다. 이러한 구조는 다중 테넌트 SaaS 환경에서 필수적인 관리 기능을 제공하며, 유지보수와 확장성 측면에서도 유리한 구조를 제공합니다.

더 깊이 공부하고 싶다면
DevLec에서는 실무 중심의 C#, .NET, ASP.NET Core, Blazor, 데이터 액세스 강좌를 단계별로 제공합니다. 현재 수강 가능한 강좌 외에도 더 많은 과정이 준비되어 있습니다.
DevLec.com에서 자세한 커리큘럼을 확인해 보세요.
DevLec 공식 강의
C# Programming
C# 프로그래밍 입문
프로그래밍을 처음 시작하는 입문자를 위한 C# 기본기 완성 과정입니다.
ASP.NET Core 10.0
ASP.NET Core 10.0 시작하기 MVC Fundamentals Part 1 MVC Fundamentals Part 2
웹 애플리케이션의 구조와 MVC 패턴을 ASP.NET Core로 실습하며 익힐 수 있습니다.
Blazor Server
풀스택 웹개발자 과정 Part 1 풀스택 웹개발자 과정 Part 2 풀스택 웹개발자 과정 Part 3
실무에서 바로 활용 가능한 Blazor Server 기반 관리자·포털 프로젝트를 만들어 봅니다.
Data & APIs
Entity Framework Core 시작하기 ADO.NET Fundamentals Blazor Server Fundamentals Minimal APIs
데이터 액세스와 Web API를 함께 이해하면 실무 .NET 백엔드 개발에 큰 도움이 됩니다.
VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com