CHƯƠNG 2 : KIẾN TRÚC DATAWAREHOUSE
2.3. Mơ hình dữ liệu đa chiều
2.3.2. Định nghĩa lược đồ
Data warehouse và kho dữ liệu hướng chủ đề có thể được định nghĩa bằng ngơn ngữ truy vấn khai phá dữ liệu (data mining query language) như mô tả bên dưới.
Định nghĩa lược đồ được miêu tả theo cú pháp sau:
define lược đồ (tên lược đồ) [<danh sách chiều>]: <danh sách độ đo>
Định nghĩa chiều được miêu tả theo cú pháp sau:
define dimension (tên chiều) as (<danh sách các thuộc tính>)
Bây giờ hãy xét ví dụ làm thế nào để định nghĩa lược đồ hình sao, lược đồ bơng tuyết và lược đồ chịm sao trong nội dung mơ tả ở phần trên.
Định nghĩa lược đồ hình sao:
define lược đồ sales_star [time, item, branch, location]:
dollars_sold = sum(sales_in_dollars), units_sold = count(*)
define dimension time as (time_key, day, day_of_week, month, quarter, year) define dimension item as (item_key, item_name, brand, type, supplier_type) define dimension branch as (branch_key, branch_name, branch_type)
define dimension location as (location_key, street, city, province_or_state, country)
Lệnh define lược đồ ở trên tạo ra một lược đồ gọi là sale_star tương ứng tới bảng sự
kiện sales ở trung tâm của lược đồ. Lệnh này chỉ ra các chiều và hai độ đo là dollars_sold và units_sold. Các chiều cụ thể là time, item, branch và location. Lệnh
define dimension được dùng để định nghĩa ra các chiều này.
Định nghĩa lược đồ bông tuyết:
define lược đồ sales_snowflake [time, item, branch, location]:
dollars_sold = sum(sales_in_dollars), units_sold = count(*)
define dimension time as (time_key, day, day_of_week, month, quarter, year) define dimension item as (item_key, item_name, brand, type, supplier
(supplier_key, supplier_type))
define dimension branch as (branch_key, branch_name, branch_type) define dimension location as (location_key, street, city
(city_key, city, province_or_state, country))
Định nghĩa này thì tương tự như định nghĩa của sale_star trong định nghĩa lược đồ
chiều item của lược đồ sale_star đã được chuẩn hoá trên lược đồ sales_snowflake
thành hai bảng chiều là item và supplier. Chú ý rằng định nghĩa chiều cho supplier thì được chỉ ra trong định nghĩa của chiều item. Định nghĩa chiều supplier theo cách này tạo ra một supplier_key trên định nghĩa chiều item. Tương tự như vậy, chiều location của lược đồ sale_star đã được chuẩn hoá trên lược đồ sale_sowflake thành hai bảng
chiều, location và city. Định nghĩa chiều city được chỉ ra trong cùng định nghĩa của
chiều location. Theo cách này, thuộc tính city_key được tao ra một cách tường minh
trong định nghĩa bảng chiều location. Định nghĩa lược đồ chịm sao thực:
Lược đồ chịm sao có thể được định nghĩa như là một tập hợp của các lược đồ liên kết lại. Dưới đây là một ví dụ định nghĩa lược đồ chịm sao ở trên:
define lược đồ sales [time, item, branch, location]:
dollars_sold = sum(sales in dollars), units_sold = count(*)
define dimension time as (time_key, day, day_of_week, month, quarter, year) define dimension item as (item_key, item_name, brand, type, supplier_type) define dimension branch as (branch_key, branch_name, branch_type)
define dimension location as (location_key, street, city, province_or_state, country) define lược đồ shipping [time, item, shipper, from location, to location]:
dollars_cost = sum(cost_in_dollars), units shipped = count(*)
define dimension time as time in lược đồ sales define dimension item as item in lược đồ sales
define dimension shipper as (shipper_key, shipper_name, location as location in lược đồ sales, shipper_type)
define dimension from_location as location in lược đồ sales define dimension to_location as location in lược đồ sales
Lệnh define lược đồ được sử dụng để định nghĩa ra lược đồ dữ liệu là sales và shipping tương ứng với 2 bảng sự kiện của lược đồ chịm sao được mơ tả ở trên. Các
chiều time, item và location của lược đồ sales được chia sẻ với lược đồ shipping.
Trong ví dụ trên phần định nghĩa lược đồ shipping, chiều time được lấy lại định nghĩa từ từ chiều sales.