Chuyển đến nội dung chính

Star Schema vs Snowflake Schema: Khác biệt & Trường hợp sử dụng

Hướng dẫn này phân tích star và snowflake schema — hai cách phổ biến để tổ chức dữ liệu trong kho dữ liệu. Bạn sẽ hiểu cách chúng hoạt động, điểm khác nhau và thời điểm dùng mỗi loại để phù hợp nhu cầu dữ liệu của bạn.
Đã cập nhật 16 thg 4, 2026  · 9 phút đọc

Nếu bạn làm việc với kho dữ liệu, bạn sẽ biết việc tổ chức dữ liệu sao cho hiệu quả và dễ xử lý quan trọng thế nào. Nhưng bạn đã bao giờ nghĩ về việc schema cơ sở dữ liệu nào phù hợp nhất với nhu cầu của mình chưa? Có hai khung chính bạn có thể dùng cho mục đích này: star schemasnowflake schema.

Star schema đơn giản và nhanh — lý tưởng khi bạn cần trích xuất dữ liệu để phân tích một cách nhanh chóng. Ngược lại, snowflake schema chi tiết hơn. Nó ưu tiên hiệu quả lưu trữ và quản lý các mối quan hệ dữ liệu phức tạp. 

Trong bài viết này, tôi sẽ giới thiệu cấu trúc của các schema này, làm nổi bật sự khác biệt của chúng và phân tích ưu điểm. Đến cuối bài, bạn sẽ biết mỗi schema phù hợp ở đâu và cách quyết định cái nào tốt nhất cho dự án dữ liệu của bạn.

Star Schema là gì?

Star schema là cách tổ chức dữ liệu trong cơ sở dữ liệu, đặc biệt là trong kho dữ liệu, nhằng giúp phân tích dễ dàng và nhanh hơn. Ở trung tâm là bảng chính gọi là bảng fact, chứa dữ liệu đo lường như doanh số hoặc doanh thu. Bao quanh là các bảng dimension, bổ sung chi tiết như tên sản phẩm, thông tin khách hàng hoặc ngày tháng. Bố cục này tạo thành hình ngôi sao.

Star schema layout.

Bố cục star schema. Ảnh: Tác giả.

Hãy cùng xem các đặc điểm chính của star schema:

  • Bảng dimension một cấp: Các bảng dimension kết nối trực tiếp với bảng fact mà không có các tầng bổ sung. Mỗi bảng tập trung vào một lĩnh vực như sản phẩm, khu vực hoặc thời gian, giúp dễ sử dụng.
  • Thiết kế phi chuẩn hoá (denormalized): Trong star schema, dữ liệu liên quan được lưu cùng trong một bảng theo cách phi chuẩn hoá. Ví dụ, một bảng sản phẩm có thể chứa cả ID sản phẩm, tên và danh mục tại cùng một nơi. Dù có thể lặp dữ liệu, cách này giúp truy vấn nhanh hơn.
  • Phổ biến trong kho dữ liệu: Star schema được dùng cho phân tích nhanh. Nó dễ dàng lọc hoặc tính tổng, nên thường là lựa chọn tốt cho kho dữ liệu nơi cần insight nhanh.

Hãy hiểu rõ hơn qua một sơ đồ star schema đơn giản. Bảng fact Sales nằm ở trung tâm. Nó chứa dữ liệu số bạn muốn phân tích, như doanh số hoặc lợi nhuận. Kết nối với nó là các bảng dimension với thông tin mô tả, như tên sản phẩm, vị trí khách hàng hoặc ngày tháng:

Real world example of star schema.

Ví dụ star schema. Ảnh: Tác giả. 

Dưới đây là ví dụ SQL đơn giản để thiết lập star schema với bảng fact Sales và các bảng dimension Product, CustomerDate:

-- Fact table
CREATE TABLE Sales (
    Sales_ID INT PRIMARY KEY,
    Product_ID INT,
    Customer_ID INT,
    Date_ID INT,
    Sales_Amount DECIMAL(10, 2),
    FOREIGN KEY (Product_ID) REFERENCES Product(Product_ID),
    FOREIGN KEY (Customer_ID) REFERENCES Customer(Customer_ID),
    FOREIGN KEY (Date_ID) REFERENCES Date(Date_ID)
);

-- Dimension table: Product
CREATE TABLE Product (
    Product_ID INT PRIMARY KEY,
    Product_Name VARCHAR(100),
    Category VARCHAR(50)
);

-- Dimension table: Customer
CREATE TABLE Customer (
    Customer_ID INT PRIMARY KEY,
    Customer_Name VARCHAR(100),
    Location VARCHAR(50)
);

-- Dimension table: Date
CREATE TABLE Date (
    Date_ID INT PRIMARY KEY,
    Date DATE,
    Year INT,
    Month VARCHAR(20)
);

Bố cục này tăng tốc truy vấn vì không có các phép nối phức tạp. Ví dụ, truy vấn sau đây truy xuất tổng doanh số theo vị trí khách hàng, tận dụng các phép nối đơn giản của star schema:

SELECT c.Location, SUM(s.Sales_Amount) AS TotalSales
FROM Sales s
JOIN Customer c ON s.Customer_ID = c.Customer_ID
GROUP BY c.Location;

Tuy nhiên, bạn sẽ phải chấp nhận một số dư thừa dữ liệu vì các bảng dimension có thể chứa thông tin lặp lại.

Ưu điểm và hạn chế của star schema

Giờ bạn đã biết star schema là gì, hãy xem vì sao nó nổi bật:

  • Hiệu năng truy vấn nhanh hơn: Star schema đơn giản hóa việc truy xuất dữ liệu, làm cho truy vấn nhanh. Ví dụ, nếu tôi muốn xem xu hướng doanh số, tôi sẽ nối bảng fact với các bảng dimension phù hợp. Phần hay nhất là tôi làm tất cả điều này mà không phải xử lý các quan hệ phức tạp. Điều đó giúp truy vấn chạy nhanh hơn và tiết kiệm nhiều thời gian.
  • Dễ hiểu: Cấu trúc của nó hợp lý và đơn giản để hiểu, ngay cả với người không chuyên kỹ thuật. Thành viên mới có thể nhanh chóng nắm được bảng nào chứa dữ liệu họ cần, đẩy nhanh phân tích và đơn giản hóa bảo trì.

Dù có nhiều lợi ích, star schema vẫn có một nhược điểm. Như tôi đã đề cập, do phi chuẩn hoá, các bảng dimension thường chứa thông tin lặp lại, điều này làm tăng mức sử dụng lưu trữ. Ví dụ, nếu nhiều sản phẩm thuộc cùng một danh mục, tên danh mục có thể lặp lại cho mỗi sản phẩm, chiếm thêm dung lượng.

Snowflake Schema là gì?

Snowflake schema là một cách khác để tổ chức dữ liệu. Trong schema này, các bảng dimension được tách thành các bảng phân dimension nhỏ hơn để dữ liệu được tổ chức và chi tiết hơn — giống như những bông tuyết trong một hồ lớn. 

Snowflake schema layout.

Bố cục snowflake schema. Ảnh: Tác giả.

Hãy xem các đặc điểm chính của snowflake schema khiến nó khác biệt với những schema khác:

  • Bảng dimension nhiều cấp: Chúng ta có thể chia nhỏ các bảng dimension thành các bảng cụ thể hơn. Ví dụ, nếu tôi muốn theo dõi vị trí cửa hàng, thay vì đưa tất cả chi tiết vị trí vào một bảng lớn, tôi có thể tách thành các bảng riêng cho quốc gia, bang/tỉnh và thành phố. Như vậy, mỗi bảng chỉ chứa thông tin cần thiết để giảm dư thừa và cải thiện tổ chức.
  • Chuẩn hoá để tiết kiệm lưu trữ: Khác với star schema, snowflake schema tuân theo thiết kế chuẩn hoá, giúp tránh trùng lặp dữ liệu. Ví dụ, thay vì lặp lại danh mục sản phẩm như Electronics cho mọi sản phẩm, tôi có thể lưu danh mục ở một bảng riêng và liên kết với từng sản phẩm.
  • Phù hợp với môi trường dữ liệu phức tạp: Snowflake schema hoạt động tốt nhất cho môi trường dữ liệu phức tạp vì nó dùng các bảng nhiều cấp để xử lý quan hệ rắc rối và cấu trúc dữ liệu phân cấp.

Hãy hiểu qua một sơ đồ snowflake schema đơn giản. Ở trung tâm là bảng fact, chứa dữ liệu đo lường. Nó kết nối tới các bảng dimension mô tả các fact, và các bảng dimension này tiếp tục phân nhánh thành các bảng phân dimension, tạo thành cấu trúc như bông tuyết. 

Ví dụ, ở đây tôi tách Product thành các bảng Manufacturer Category và tách bảng Customer thành các bảng Transaction Location :

Real world example of snowflake schema.

Ví dụ snowflake schema. Ảnh: Tác giả.

Dưới đây là ví dụ SQL minh hoạ snowflake schema, trong đó bảng Product được chuẩn hoá thêm thành các bảng CategoryManufacturer:

-- Fact table remains the same
CREATE TABLE Sales (
    Sales_ID INT PRIMARY KEY,
    Product_ID INT,
    Customer_ID INT,
    Date_ID INT,
    Sales_Amount DECIMAL(10, 2),
    FOREIGN KEY (Product_ID) REFERENCES Products(Product_ID),
    FOREIGN KEY (Customer_ID) REFERENCES Customers(Customer_ID),
    FOREIGN KEY (Date_ID) REFERENCES Dates(Date_ID)
);

-- Dimension table: Product
CREATE TABLE Product (
    Product_ID INT PRIMARY KEY,
    Product_Name VARCHAR(100),
    Category_ID INT,
    Manufacturer_ID INT,
    FOREIGN KEY (Category_ID) REFERENCES Category(Category_ID),
    FOREIGN KEY (Manufacturer_ID) REFERENCES Manufacturer(Manufacturer_ID)
);

-- Sub-dimension table: Category
CREATE TABLE Category (
    Category_ID INT PRIMARY KEY,
    Category_Name VARCHAR(50)
);

-- Sub-dimension table: Manufacturer
CREATE TABLE Manufacturer (
    Manufacturer_ID INT PRIMARY KEY,
    Manufacturer_Name VARCHAR(100)
);

Truy vấn sau đây tính tổng doanh số theo danh mục sản phẩm. Dù có nhiều phép nối hơn so với star schema, nó tiết kiệm lưu trữ hơn:

SELECT cat.Category_Name, SUM(s.Sales_Amount) AS TotalSales
FROM Sales s
JOIN Product p ON s.Product_ID = p.Product_ID
JOIN Category cat ON p.Category_ID = cat.Category_ID
GROUP BY cat.Category_Name;

Ưu điểm và hạn chế của snowflake schema

Giống như star schema, snowflake schema cũng có những ưu điểm riêng. Hãy xem đó là gì:

  • Ít dư thừa dữ liệu: Chuẩn hoá đảm bảo cùng một dữ liệu không được lưu nhiều lần, giảm trùng lặp.
  • Lưu trữ hiệu quả cho tập dữ liệu lớn: Schema này tiết kiệm không gian lưu trữ bằng cách tránh dữ liệu lặp lại, lý tưởng để quản lý tập dữ liệu lớn.

Tuy nhiên, bên cạnh các ưu điểm, cũng có vài hạn chế. Ví dụ, truy vấn có thể chậm hơn vì có nhiều phép nối giữa các bảng. Ngoài ra, cấu trúc nhiều cấp khó thiết kế và bảo trì hơn so với các schema đơn giản như star schema. Vì vậy, chỉ nên dùng nếu bạn có đội ngũ DBA giàu kinh nghiệm.

Tôi khuyến nghị xem khóa học Database Design nếu bạn muốn tìm hiểu thêm về cách cấu trúc dữ liệu hiệu quả cho phân tích. 

Sử dụng cách tiếp cận lai (Hybrid)

Trong các dự án thực tế, thường sử dụng cả hai mẫu ở những lớp khác nhau để kết hợp điểm mạnh của mỗi cách tiếp cận:

  • Giữ cấu trúc chuẩn hoá hơn (snowflake) ở lớp kho để đảm bảo nhất quán và dễ bảo trì
  • Xuất các data mart dạng ngôi sao hoặc view phi chuẩn hoá cho BI và báo cáo

Cách này giúp đội ngũ cân bằng giữa tính toàn vẹn và quản trị dữ liệu với khả năng tiêu thụ phân tích nhanh, đơn giản.

Star Schema vs Snowflake Schema

Cả star và snowflake schema đều được dùng rộng rãi trong kho dữ liệu, nhưng đặc điểm riêng khiến chúng phù hợp với các nhu cầu khác nhau. Hãy xem chúng khác nhau ra sao về cấu trúc, hiệu năng, yêu cầu lưu trữ và trường hợp sử dụng.

Cấu trúc

Trong star schema, tất cả các bảng dimension kết nối trực tiếp với một bảng fact trung tâm. Điều này có nghĩa toàn bộ dữ liệu tham chiếu của bạn chỉ cách dữ liệu chính một bước, giúp dễ hiểu và làm việc.

Ngược lại, snowflake schema chia các bảng dimension thành các bảng phân dimension nhỏ, cụ thể hơn. Ví dụ, bạn có thể có các bảng riêng cho quốc gia, bang/tỉnh và thành phố thay vì một bảng vị trí. Mặc dù tạo ra cấu trúc có tổ chức và chi tiết hơn, nó cũng đòi hỏi nhiều kết nối (join) hơn để truy cập dữ liệu — là lý do chính khiến snowflake schema phức tạp hơn star schema.

Hiệu năng

Về tốc độ, star schema thường tốt hơn. Vì tất cả bảng dimension kết nối trực tiếp với bảng fact, truy vấn thường cần ít phép nối hơn, nghĩa là hiệu năng nhanh hơn. Giả sử bạn muốn phân tích doanh số theo khu vực — trong trường hợp này, bạn có thể dùng star schema để truy xuất dữ liệu với xử lý tối thiểu.

Ngược lại, snowflake schema thường chậm hơn vì bạn phải nối qua nhiều bảng để truy xuất dữ liệu. Mỗi phép nối thêm thời gian xử lý, khiến snowflake kém hiệu quả hơn cho các tác vụ cần kết quả truy vấn nhanh.

Khóa học Joining Data in SQL là phần mở đầu tuyệt vời để học cách nối bảng, áp dụng lý thuyết tập quan hệ và làm việc với truy vấn lồng.

Yêu cầu lưu trữ

Star schema tốn nhiều không gian lưu trữ hơn vì lưu thông tin dư thừa trong các bảng dimension. Ví dụ, nếu nhiều sản phẩm thuộc cùng một danh mục, tên danh mục sẽ lặp lại cho mỗi sản phẩm, làm tăng nhu cầu lưu trữ.

Tuy nhiên, snowflake schema chuẩn hoá dữ liệu để mọi thông tin chỉ được lưu một lần. Ví dụ, thay vì lặp lại tên danh mục, chúng được lưu trong bảng riêng và liên kết với bảng sản phẩm bằng khoá ngoại. Thiết kế này tiết kiệm không gian, phù hợp với tập dữ liệu lớn.

Trường hợp sử dụng

Star schema lý tưởng cho hệ thống xử lý phân tích trực tuyến (OLAP), báo cáo và tác vụ business intelligence. Sự đơn giản khiến chúng hoàn hảo cho các tình huống cần tốc độ và dễ sử dụng, như tạo dashboard nhanh hoặc báo cáo doanh số.

Snowflake schema thường được dùng cho phân tích tài chính hoặc hệ thống quản lý quan hệ khách hàng (CRM). Việc tổ chức phân cấp chi tiết và tiết kiệm lưu trữ quan trọng hơn tốc độ truy vấn trong các trường hợp này.

Bảng so sánh

Dưới đây là so sánh nhanh giữa star và snowflake schema để giúp bạn quyết định cái nào phù hợp nhất với nhu cầu dữ liệu. Tôi đã làm nổi bật các khác biệt chính trong bảng này, tập trung vào cấu trúc, hiệu năng, lưu trữ và trường hợp sử dụng:

Tính năng

Star schema

Snowflake schema

Cách tiếp cận lai

Cấu trúc

Bảng fact trung tâm liên kết tới các dimension phi chuẩn hoá

Bảng fact trung tâm liên kết tới các dimension chuẩn hoá

Mô hình lõi chuẩn hoá, cộng thêm các data mart dạng ngôi sao hoặc view phi chuẩn hoá cho lớp tiêu thụ

Độ phức tạp

Đơn giản, ít phép nối hơn

Phức tạp, nhiều phép nối hơn

Trung bình, có nhiều phần chuyển động, nhưng mỗi lớp đơn giản hơn cho mục đích của nó

Dư thừa dữ liệu

Dư thừa cao do dimension phi chuẩn hoá

Dư thừa thấp do dimension chuẩn hoá

Dư thừa ở mức trung bình do phi chuẩn hoá có chọn lọc

Hiệu năng truy vấn

Truy vấn nhanh hơn nhờ cấu trúc đơn giản

Truy vấn chậm hơn vì có thêm phép nối

Nhanh cho BI vì lớp tiêu thụ được phi chuẩn hoá

Lưu trữ

Cần nhiều lưu trữ hơn do dư thừa

Cần ít lưu trữ hơn nhờ chuẩn hoá

Cần lưu trữ ở mức vừa phải vì các mart/view có thể thêm một số trùng lặp

Dễ bảo trì

Dễ thiết kế và bảo trì

Khó thiết kế và bảo trì hơn

Dễ bảo trì, vì các mart có thể dựng lại từ lõi được kiểm soát

Phù hợp nhất cho

Tập dữ liệu nhỏ đến trung bình

Tập dữ liệu lớn và phức tạp

Nền tảng dữ liệu hiện đại vừa cần quản trị vừa cần hiệu năng BI

Chọn Schema phù hợp

Khi nào dùng star schema

Nếu mục tiêu chính của bạn là tổ chức dữ liệu đơn giản và nhanh chóng, star schema sẽ rất phù hợp. Dùng trong các trường hợp sau:

  • Nếu bạn đang xây dựng mô hình ngữ nghĩa cho công cụ BI (ví dụ, Power BI) và muốn số lượng bảng và quan hệ ít. Nó hỗ trợ lọc/nhóm trực quan và thường hoạt động tốt cho biểu đồ tương tác.
  • Nếu bạn muốn chạy các truy vấn đơn giản như tìm tổng doanh số theo khu vực, hãy dùng star schema. Vì tất cả bảng dimension kết nối trực tiếp với bảng fact, nó tránh phức tạp không cần thiết và cho kết quả nhanh hơn.
  • Bạn cũng có thể dùng star schema khi ưu tiên tốc độ. Nó giảm số lượng phép nối, nên truy vấn chạy nhanh hơn. Tôi từng dùng để tạo nhiều báo cáo doanh số, tiết kiệm rất nhiều thời gian so với các thiết kế khác.
  • Nếu tập dữ liệu của bạn nhỏ đến trung bình, sự dư thừa của star schema sẽ không phải vấn đề. Dù có dữ liệu lặp, nó vẫn hoạt động tốt mà không làm quá tải lưu trữ.

Khi nào dùng snowflake schema

Snowflake schema phù hợp hơn để biểu diễn phân cấp và dữ liệu tham chiếu dùng chung, đặc biệt khi nhiều thuộc tính dimension lặp lại trên nhiều hàng. Dùng trong các trường hợp sau:

  • Khi các dimension của bạn có phân cấp rõ ràng (ví dụ, Quốc giaBang/VùngThành phố) và bạn muốn mô hình hoá các cấp đó tách biệt thành các bảng.​
  • Nếu bạn muốn kiểm soát chặt chẽ dữ liệu tham chiếu dùng chung (ví dụ, danh sách chuẩn như danh mục, nhà sản xuất hoặc địa lý) để giảm trùng lặp và dễ giữ định nghĩa nhất quán trong toàn kho dữ liệu.
  • Bạn cũng có thể dùng snowflake schema nếu dữ liệu thay đổi thường xuyên, như cập nhật tên khu vực. Nó đảm bảo cập nhật nhất quán trên toàn bộ dữ liệu liên quan để giảm lỗi và công sức bảo trì.
  • Nếu phân tích của bạn liên quan đến nhiều cấp dữ liệu, snowflake schema có thể giúp bạn tổ chức và biểu diễn các mối quan hệ này một cách rõ ràng.

Lựa chọn schema trong kho dữ liệu đám mây

Trong nhiều kho dữ liệu đám mây hiện đại, lưu trữ tương đối rẻ so với tính toán. Điều đó có nghĩa “thêm lưu trữ” từ các dimension phi chuẩn hoá thường kém quan trọng hơn chi phí tính toán để quét và nối dữ liệu.

Khi chọn giữa star và snowflake, hãy cân nhắc mô hình giá của nền tảng (tính toán so với lưu trữ), mức độ đồng thời truy vấn, và liệu bạn có thể dùng cache/view vật hoá để giảm chi phí truy vấn hay không.

Lời kết

Trong bài viết này, tôi đã trình bày sự khác biệt giữa star và snowflake schema, điểm mạnh và thời điểm dùng mỗi loại. Hy vọng bạn đã có hiểu biết rõ ràng và mẹo thực tiễn cho công việc! Nếu muốn học thêm, hãy xem các tài nguyên trên DataCamp:

FAQs

Mục đích của indexing trong các schema này là gì?

Indexing cải thiện hiệu năng truy vấn trong cả hai schema bằng cách tăng tốc độ truy xuất dữ liệu.

Bảng dimension và bảng fact nghĩa là gì?

Các bảng dimension lưu trữ thuộc tính mô tả (như tên sản phẩm hoặc ngày tháng) mô tả dữ liệu trong bảng fact.

Trong khi đó, các bảng fact lưu dữ liệu định lượng, như con số doanh số hoặc giá trị giao dịch, và kết nối với các bảng dimension.

Các schema này có phù hợp cho dữ liệu phi cấu trúc không?

Không, các schema này được thiết kế cho dữ liệu có cấu trúc. Dữ liệu phi cấu trúc cần các mô hình khác như NoSQL hoặc data lake.

Tôi có thể thiết kế star và snowflake schema như thế nào?

Để tạo và trực quan hoá các schema này, bạn có thể dùng công cụ mô hình dữ liệu (ERDPlus), công cụ BI (Tableau, Power BI, QlikView) hoặc nền tảng đám mây (Databricks).

Có lựa chọn thay thế nào cho star và snowflake schema không?

Có, bạn có thể dùng Galaxy schema, mô hình Data Vault hoặc các mô hình chiều phức tạp hơn. Các lựa chọn này chủ yếu khác nhau ở cách tổ chức dữ liệu và xử lý mối quan hệ giữa các thông tin.


Laiba Siddiqui's photo
Author
Laiba Siddiqui
LinkedIn
Twitter

Tôi là một chiến lược gia nội dung, yêu thích việc đơn giản hóa các chủ đề phức tạp. Tôi đã giúp các công ty như Splunk, Hackernoon và Tiiny Host tạo nội dung hấp dẫn và giàu thông tin cho khán giả của họ.

Chủ đề

Khóa học Data Engineering

Courses

Introduction to Data Engineering

4 giờ
126.7K
Tìm hiểu về thế giới kỹ thuật dữ liệu trong khóa học ngắn này, bao gồm các công cụ và chủ đề như ETL và điện toán đám mây.
Xem chi tiếtRight Arrow
Bắt đầu khóa học
Xem thêmRight Arrow