rated by 0 users
This post has 2 Replies | 0 Followers

Top 10 Contributor
Male
Posts 194
Trinh Minh Cuong Posted: 01-22-2010 10:53 AM

Tôi có đọc được một bài viết rất hay về kiểu dữ liệu Hierarchy ID trong SQL 2008

http://msdn.microsoft.com/en-us/magazine/cc794278.aspx

Bạn nào quan tâm dịch cùng chia xẻ với mọi người nhé.

 

Cường,

Top 25 Contributor
Male
Posts 42

Có thể chọn dịch một đoạn hay một phần nào đó trong bài viết được không anh?


Top 10 Contributor
Female
Posts 62

Hi hi, em vừa thi xong, dịch được 1 đoạn đầu, thấy bài này hay quá!!!

 


Mô hình hóa Dữ liệu Phân cấp của bạn với SQL Server 2008

Kent Tegels

 

Code download tại đây: SQLHierarchyID2008_09a.exe (155 KB)
Browse the Code Online


Bài viết này dựa trên một phiên bản phát hành của SQL Server 2008 RC0. Tất cả thông tin ở đây có thể bị thay đổi.

Bài viết này thảo luận về:

  • Mô hình hóa hierarchical data

  • Tạo một danh sách tài liệu hệ thống

  • Chuyển về HierarchyID

  • Kiểm thử hệ thống

Và sử dụng :
SQL Server 2008

  Nội dung

Hierarchical Data
A Bill of Materials Problem
Using Entities to Understand the Problem
A BOM System in SQL Server 2005
Create the Tables
Queries to Validate the Design
Taking Advantage of HierarchyID
Testing the HierarchyID Implementation
Wrapping Up

Hệ thống sản xuất ra các xe ôtô; tổ chức của một quốc gia theo các tiểu bang, quận, thành phố và mã bưu chính; sự miêu tả của một hệ thống giải trí tại gia-thì tất cả những điều này có điểm gì chung không? Câu trả lời đơn giản là mỗi hệ thống đều mô tả một hệ thống phân cấp hierarchy.


SQL Server 2008 có hỗ trợ một kiểu dữ liệu mới, HierarchyID, sẽ giúp giải quyết các vấn đề trong việc mô hình hóa và truy vấn các thông tin phân cấp (hier­archical information) . Tôi sẽ giới thiệu cho bạn về kiểu dữ liệu này bằng cách thảo luận một  mẫu chung được sử dụng trong sản xuất được biết đến như là hóa đơn của các vật liệu( bill of materials (BOM), or bills). Bắt đầu với một cuộc thảo luận ngắn gọn về BOMs, Tôi sẽ minh họa làm cách nào mà loại dữ liệu này có thể được mô hình hóa. Tôi cũng sẽ trình bày một sự triển khai  mô hình này trong  SQL Server 2005. Sau đó tôi sẽ trình bày cho bạn  kiểu dữ liệu HierarchyID được sử dụng để thực thi mô hình (model) trong  SQL Server 2008 như thế nào.


Hierarchical Data

Các xe ô tô là sự hợp nhất của rất nhiều thành phần, như động cơ, hệ thống truyền động, các thiết bị điện tử và thiết bị lái. Tại United States, các vùng lãnh thổ địa lý được chia thành các tiểu bang và các tiểu bang sau đó được chia thành các vùng nhỏ hơn nằm trong các phạm vi quyền hạn được gọi là các hạt. Và các hạt sau đó lại được chia nhỏ thêm theo nhiều cách khác nhau bởi các cơ quan khác nhau. Thí dụ, Cục điều tra dân số Hoa Kỳ(United States Census Bureau) tập hợp từ các tài liệu điều tra dân số khu vực(Census Tract Areas). Dịch vụ Bưu chính U.S phân phát thư theo mã  Zone Improvement Plan (ZIP) codes. Geographic information systems (GIS) có thể tổng hợp điều tra dân số và  ZIP codes lại với nhau để cung cấp cho người sử dụng một bảng tham chiếu không gian thân thiện cho một khu vực.

Một chuyến đi gần đây đến một cửa hàng  điện tử tại địa phương để đánh giá một hệ thống thay thế giải trí tại gia được xem như một loại tương tự của hệ thống phân cấp - tất cả những tổ hợp của những thành phần có thể thực hiện được và nhiều lựa chọn làm tôi hoa cả mắt! Tôi tự hỏi những hệ thống như thế làm thế nào có thể được mô hình hóa và thực thi trong một hệ thống cơ sở dữ liệu.

Mối quan hệ giữa ô tô và động cơ của nó đại diện cho một hệ thống phân cấp hierarchy: ô tô chứa động cơ. Tương tự như vậy là mối quan hệ với hệ thống truyền động, các thiết bị điện tử và thiết bị lái. Mối quan hệ này là sự bao bọc, chứa đựng nhau . Tương tự như  hệ thống phân cấp có thể được quan sát thấy trong mối quan hệ giữa các nhóm vùng lãnh thổ địa lý hoặc điều tra dân số.

Hệ thống phân cấp hierarchy tồn tại ở khắp mọi nơi, và việc chưa thực thi được chúng trong bối cảnh của một cơ sở dữ liệu quan hệ thường được chứng minh như là một thách thức. Một phương pháp điển hình là trình bày hệ thống phân cấp hierarchy sử dụng một mối quan hệ cha/con với một hay nhiều bảng. Và trong khi phương pháp này được sử dụng để làm việc trong nhiều trường hợp thì nó lại có một vài hạn chế. Các giải pháp như  thế cần phải được xem xét một cách cẩn thận làm thế nào để duy trì tính toàn vẹn tham chiếu. Và khi truy vấn theo chiều sâu và rộng của nhiều bảng đã được đơn giản hóa đáng kể trong SQL Server 2005 với sự đưa vào của các biểu thức bảng phổ biến chung, thì việc viết các câu truy vấn dựa vào những loại bảng này vẫn có thể gặp vấn đề khi liên kết nhiều bảng lại với nhau.


Một vấn đề về Danh sách các Vật liệu

Vài năm trước tôi làm việc trên một hệ thống do một công ty sản xuất  phát triển để giúp các đại lý của họ xác định các thành phần cần thiết để xây dựng một hệ thống thủy lợi có trục xoay. Các phần mềm sản xuất một danh sách các thành phần cần thiết để xây dựng theo ý muốn các trục xoay (Tổng thể của một hệ thống thủy lợi trục xoayđơn giản được xem như là một trục xoay trong công nghiệp). Các thành phần yêu cầu chủ yếu dựa trên địa lý, loại đất, và loại cây trồng trong các khu vực được bao phủ cũng như là thủy văn và sự xem xét cấu trúc các thiết bị.

Nền tảng của giải pháp là một SQL Server database. Mục đích của database là lưu trữ thông tin về các thành phần có thể để xây dựng một trục xoay. Tuy nhiên, khi chúng ta tạo  ra các đặc điểm kĩ thuật cho sản xuất, chúng ta cần xác định những thành phần cần thiết như là BOMs.

Một số các danh sách đại diện cho một tập hợp các phần tử vật lý có thể lắp ráp thành một thành phần hệ thống. Thí dụ, mọi trục xoay đều cần một máy bơm để dẫn nước từ một cái giếng vào hệ thống. Máy bơm đó có thể dùng điện, có nghĩa là nó cần một biến áp và một cầu chì. Hay là một máy bơm dùng nhiên liệu, nghĩa là nó cần một bồn chứa, một máy bơm dùng nhiên liệu và kết nối các máy bơm vào bồn chứa. Trong cả hai trường hợp, những phần cần thiết cho một máy bơm đều được liệt kê trong một danh sách bơm.

Một danh sách cho một trục xoay hoàn chỉnh có thể bao gồm một tập hợp các danh sách khác. Thí dụ, một trục xoay cơ bản có thể gồm có một cây các danh sách cho máy bơm, các cây khác cho danh sách các đường ống mở rộng để cung cấp nước, và các danh sách cho bất kì thiết bị nào khác cần thiết để xây dựng một hệ thống trục xoay.

 

Page 1 of 1 (3 items) | RSS