Mô hình hóa và thiết kế cơ sở dữ liệu của bạn với Bộ tạo mô hình dữ liệu XDE Rational David Bridgewater, Tác giả, Studio B Tóm tắt: Hướng dẫn này chỉ dẫn cho bạn cách sử dụng Bộ tạo mô
Trang 1Mô hình hóa và thiết kế cơ sở dữ liệu của bạn
với Bộ tạo mô hình dữ liệu XDE Rational
David Bridgewater, Tác giả, Studio B
Tóm tắt: Hướng dẫn này chỉ dẫn cho bạn cách sử dụng Bộ tạo mô hình dữ liệu
trong bộ công cụ XDE Rational để quản lý việc thiết kế và bảo trì cơ sở dữ liệu của bạn như thế nào Hướng dẫn đưa bạn qua tất cả các bước cần thiết để tạo ra một mô hình lôgíc cho cơ sở dữ liệu của bạn, và để biến đổi nó thành sơ đồ vật lý
và bộ kịch bản lệnh để tạo cơ sở dữ liệu Cơ sở dữ liệu đích là UDB DB2 của hãng IBM Chúng tôi cũng chỉ dẫn ngắn gọn cho bạn cách làm theo chiều ngược lại: Bài hướng dẫn chỉ cho bạn cách tiến hành nếu bạn muốn bắt đầu với một cơ sở dữ liệu vật lý và biến đổi chúng thành thiết kế lôgíc và vật lý trong Bộ tạo mô hình dữ liệu Trước khi bạn bắt đầu
Về hướng dẫn này
Bạn cần phải theo hướng dẫn này nếu bạn để tâm trí vào kiến trúc dữ liệu cho dự
án của bạn hay của công ty bạn Hướng dẫn này được soạn cho các nhà thiết kế, các quản trị viên hay các nhà phát triển cơ sở dữ liệu, chịu trách nhiệm về mô hình
dữ liệu, cả lôgíc lẫn vật lý, và/hoặc các cơ sở dữ liệu thực (đặc biệt là cơ sở dữ liệu phổ thông DB2)
Hướng dẫn này không yêu cầu bạn phải có các hiểu biết trước đó Tuy nhiên, sẽ dễ dàng hơn nếu bạn quen thuộc với các điều sơ đẳng của cơ sở dữ liệu quan hệ nhất là các dạng chuẩn và thiết kế thực thể quan hệ Cũng sẽ có ích nếu bạn có kiến thức nào đó về Ngôn ngữ mô hình hóa thống nhất (UML), đặc biệt là về các
sơ đồ lớp vì chúng được sử dụng ở bên trong các công cụ của Rational® như là cái tương đương thực sự của các sơ đồ thực thể quan hệ
Trang 2Bài hướng dẫn này nói về thành phần Bộ tạo mô hình dữ liệu của bộ công cụ XDE Rational của hãng IBM® và hướng dẫn cách sử dụng nó với hệ thống quản trị cơ
sở dữ liệu UDB® DB2 của IBM như một phương tiện thực thi Bài hướng dẫn bao gồm các mục sau đây:
• Tổng quan về XDE Rational mô tả bằng cách nào mà các công cụ của
Rational khai thác một cách thành công UML và làm cho nó áp dụng được
để thiết kế và mô hình hóa cơ sở dữ liệu Mục này giới thiệu danh sách các thực thể cho một ví dụ bán lẻ, ví dụ này là cốt lõi của bài hướng dẫn
• Phối cảnh tạo mô hình dữ liệu dạy bạn về các đặc tính chính của phối
cảnh tạo mô hình dữ liệu trong sản phẩm WebSphere® Application
Developer của hãng IBM (hay Eclipse), và hướng dẫn bạn cách tạo dự án tạo mô hình dữ liệu đầu tiên của bạn bằng công cụ XDE Rational
• Tạo mô hình dữ liệu lôgíc chuyển các danh sách thực thể từ mục tổng
quan thành mô hình dữ liệu lôgíc hoàn toàn đầy đủ và kết thúc bằng việc trình diễn cách biến đổi nó thành một mô hình dữ liệu (vật lý) như thế nào
• Sự tích hợp giữa việc tạo mô hình dữ liệu vật lý và UDB DB2 khảo sát
mô hình dữ liệu đã sinh ra từ mô hình dữ liệu lôgíc và xem xét cách tiến hành một số thay đổi cho mô hình này để đưa vào thêm các đặc tính thực thi vật lý khác ví dụ như các vùng bảng (tablespaces) Mục này kết thúc bằng việc trình diễn cách chuyển tiếp thiết kế mô hình dữ liệu vào trong một lược đồ trong cơ sở dữ liệu UDB của DB2
• Đến đó và quay lại lần nữa chỉ dẫn toàn bộ quá trình theo chiều ngược lại
Cơ sở dữ liệu UDB của DB2 được tạo ra trước đó được bố trí ngược lại thành một mô hình dữ liệu mới Từ mô hình này bạn tạo ra một mô hình dữ liệu lôgíc
Trang 3• Các phương tiện đồng bộ hóa kết thúc bài hướng dẫn bằng việc điểm qua
các công cụ có thể quản lý và lan truyền các thay đổi giữa mô hình lôgíc,
mô hình vật lý và cơ sở dữ liệu thực tế
Về đầu trang
Các điều kiện cần có trước
Chủ đề chính của hướng dẫn này là Bộ tạo mô hình dữ liệu của Rational, nó là một
bộ phận cấu thành của bộ công cụ của các nhà phát triển Rational, được gọi là XDE của Rational
Công cụ XDE Rational được tích hợp vào trong các công cụ bàn làm việc phát triển khác của IBM Với mục đích của hướng dẫn này, nó được sử dụng với phần mềm WebSphere Studio Application Developer, phiên bản 5.1.1 của IBM
Có thể chạy XDE Rational với công cụ phát triển Eclipse, phiên bản 2.1 tải về miễn phí (không được trình bày thêm trong hướng dẫn này, mặc dù không có bất
kỳ sự khác biệt nào) Việc cài đặt công cụ XDE Rational vào trong sản phẩm WebSphere Studio Application Developer nằm ngoài phạm vi của hướng dẫn này, nhưng đó là công việc hoàn toàn đơn giản
Cơ sở dữ liệu đích của hướng dẫn này là UDB DB2 của IBM Bạn có thể tải
xuống bản dùng thử của cơ sở dữ liệu phổ thông DB2
Trang 4Tổng quan về XDE của Rational
UML cho dữ liệu: Mâu thuẫn trong thuật ngữ ?
Hướng dẫn này nói về bộ công cụ XDE Rational và tính khả dụng của nó đối với các cơ sở dữ liệu Các công cụ của Rational theo truyền thống được gắn kết với cộng đồng mô hình hóa đối tượng và nói riêng, với UML UML được biết đến
nhiều trong việc hợp lý hóa các cách biểu diễn đồ họa khác nhau của đối tượng,
chứ không phải của dữ liệu, của các mối quan hệ
Hiển nhiên là cộng đồng mô hình hóa đối tượng không có độc quyền đối với cách tiếp cận biểu đồ Trong thế giới cơ sở dữ liệu, sơ đồ các mối quan hệ thực thể tồn tại từ nhiều thập niên Nếu bạn nhìn kỹ một sơ đồ mối quan hệ thực thể truyền thống, đặt nó bên cạnh một sơ đồ lớp, bạn sẽ thấy nhiều điểm giống nhau hơn là các điểm khác nhau Một số nguồn gợi ý rằng các sơ đồ lớp nói riêng, được phát triển từ việc nghiên cứu cách tiếp cận sơ đồ mối quan hệ thực thể
Tính khả dụng của UML đối với thiết kế cơ sở dữ liệu được được trình bày kỹ
trong cuốn UML cho thiết kế cơ sở dữ liệu (Xem mục Tài nguyên) Ở phần đầu
cuốn sách các tác giả nói như sau:
"Đừng loại trừ việc sử dụng UML chỉ vì bạn không xây dựng các ứng dụng hướng đối tượng— Về cơ bản, UML có thể được sử dụng cho bất kỳ kiểu dự án phân tích
và thiết kế nào, dù cơ sở dữ liệu hay các hệ thống có là hướng đối tượng hay
không."
Về đầu trang
Bộ tạo mô hình dữ liệu XDE Rational: Tổng quan nhanh
Trang 5Bộ tạo mô hình dữ liệu XDE Rational cung cấp rất nhiều lợi ích cho bất kỳ phòng ban máy tính nào phải thiết kế và quản lý một cơ sở dữ liệu mọi kích cỡ Các lợi ích này bao gồm (và không chỉ có thế):
• Dễ dàng sử dụng các công cụ đồ họa để thiết kế, mở rộng hay xem trực quan bất kỳ cơ sở dữ liệu nào
• Hỗ trợ đầy đủ các tầng mô hình hóa dữ liệu truyền thống: Lôgíc và vật lý
• Kết nối đầy đủ giữa các tầng vật lý và lôgíc và tích hợp từ tầng vật lý đến tất cả các hệ thống quản trị cơ sở dữ liệu chính
• Tích hợp đầy đủ với bàn công tác của Eclipse và các công cụ khác của Rational
• Mô hình hóa dữ liệu là một sự mở rộng của các loại mô hình hóa khác trong bộ công cụ của Rational Những người làm mô hình đối tượng với các công cụ của Rational nhanh chóng học được và bổ sung thêm kỹ năng tạo
mô hình dữ liệu vào tập hợp các kỹ năng của họ
Vì nó xuất phát từ mô hình hóa đối tượng, Bộ tạo mô hình dữ liệu XDE Rational hợp nhất các sơ đồ UML và các tác nhiệm thiết kế cơ sở dữ liệu một cách tao nhã nhất Các đơn vị công việc đầu tiên cho XDE Rational là các mô hình, chúng nằm trong các dự án mô hình hóa Có hai kiểu mô hình được kết hợp với dự án tạo mô hình dữ liệu:
• Mô hình dữ liệu lôgíc: Để mô hình hóa các mối quan hệ dữ liệu giữa các thực thể ở mức nhận thức
• Mô hình dữ liệu: Để tạo mô hình cơ sở dữ liệu vật lý Bất kỳ nơi nào trong tài liệu của Rational mà bạn thấy chỉ bốn chữ "mô hình dữ liệu", thì bạn hãy hiểu rằng nó có nghĩa là "mô hình dữ liệu vật lý" Quy ước này được áp
Trang 6dụng xuyên suốt hướng dẫn này, nhưng đôi khi viết "mô hình dữ liệu (vật lý)" là nhằm để nhấn mạnh sự khác biệt của nó với mô hình dữ liệu lôgíc
Mô hình dữ liệu (vật lý) có thể bị ràng buộc với một hệ quản trị cơ sở dữ liệu cụ thể (Chẳng hạn như UDB của DB2) hay với một mẫu số chung nhỏ nhất của tiêu chuẩn ANSI SQL 92
Tại tâm điểm của mỗi kiểu mô hình dữ liệu là một sơ đồ lớp UML (có thể là một vài sơ đồ như vậy) Các sơ đồ lớp được điều chỉnh thích nghi để hỗ trợ các chức năng khác nhau mà các mô hình dữ liệu lôgíc và mô hình dữ liệu (vật lý) yêu cầu
Sự điều chỉnh thích nghi này tự nó biểu lộ bằng một vài cách – đây là những các cách rõ ràng nhất:
• Các bản mẫu UML được kết hợp với các biểu tượng sơ đồ Các bản mẫu là các nhãn miêu tả nằm trong các dấu ngoặc kép Trong các mô hình dữ liệu lôgíc, bạn nhiều khả năng đã thấy các bản mẫu <<entity>> Trong các mô hình dữ liệu (vật lý), bạn sẽ thấy khá nhiều bản mẫu cụ thể hơn: <<table>>
• Các thuộc tính đặc thù của mô hình hóa dữ liệu Ví dụ, các thực thể lôgíc— mặc dù nhìn khá giống các lớp UML bình thường – có thêm một thuộc tính UseSurrogateKey
• Các hành động của trình đơn chuyên biệt theo bối cảnh Có một số hành động bình thường mà bạn có thể thực hiện khi nhấn chuột phải trên bất kỳ lớp nào trong một sơ đồ lớp XDE Rational Tuy nhiên, khi bạn nhấn chuột phải trên một bảng trong sơ đồ lớp mô hình dữ liệu, có thêm một vài tùy chọn như "Biến đổi" và "Bộ tạo mô hình dữ liệu"
Về đầu trang
Trang 7Ví dụ bán lẻ
Hướng dẫn này dựa trên hai kịch bản phát triển cơ sở dữ liệu thực tế, xoay quanh
ví dụ thiết kế cơ sở dữ liệu cho cửa hàng bán lẻ mức nhỏ
• Trước tiên, bạn hãy hình dung một cơ sở dữ liệu mới phải được xây dựng
để hỗ trợ một siêu thị Không chỉ nó phải được thiết kế lôgíc, bạn hãy xem
cơ sở dữ liệu thông qua giai đoạn thiết kế vật lý và thực thi nó Cơ sở dữ liệu đích để thực hiện là UDB của DB2
• Sau đó bạn hình dung cơ sở dữ liệu mà bạn tạo ra chưa bao giờ được phát triển từ một thiết kế lôgic nào!! Thay vào đó, bây giờ nó là một cơ sở dữ liệu di sản Nhiệm vụ của chúng ta là đảo ngược sự bố trí của cơ sở dữ liệu này vào trong một mô hình dữ liệu vật lý, rồi sau đó vào trong một mô hình
dữ liệu lôgíc Có trong tay những mô hình này, bạn có thể hiểu rõ hơn cơ sở
dữ liệu di sản làm việc như thế nào và tự đặt mình vào vị trí để làm lại các thiết kế cần thiết
Hướng dẫn này sẽ đưa bạn đi trọn một vòng, cho bạn thấy các hỗ trợ theo cả hai hướng của Bộ tạo mô hình dữ liệu XDE Rational
Bây giờ là một chút hiểu biết cơ sở về các yêu cầu Một siêu thị muốn mô hình hóa một bộ phận của hệ thống nguồn cung cấp hàng của họ đặc biệt là các đơn đặt hàng tới các nhà cung cấp Siêu thị cất trong kho hai loại sản phẩm là hàng may mặc và thực phẩm Giả sử bạn với vai trò một nhà thiết kế cơ sở dữ liệu, đã
có được danh sách ban đầu của các thực thể lôgíc như dưới đây:
Đơn hàng
Trang 8Thuộc tính Kiểu
Id của đơn hàng Integer
Mô tả đơn hàng String
Kiểu đơn hàng ProductType
Tình trạng đơn hàng OrderStatus
Người lập đơn hàng Integer
Ngày lập đơn hàng String
Chi tiết đơn hàng
Id của Chi tiết đơn hàng Integer
Trình tự Integer
Trang 9Số lượng Single
Giá Double
Nhà Cung cấp
Mã số của nhà Cung cấp Integer
Kiểu nhà Cung cấp ProductType
Địa điểm String
Có hiệu lực boolean
Địa chỉ String
Sản phẩm
Trang 11• Đơn hàng – Đầu mục Đơn hàng Là các đơn hàng được gửi tới các nhà cung cấp cho siêu thị
• Chi tiết trong đơn hàng – là "con" của thực thể đầu mục đơn hàng, là từng dòng riêng biệt trên đơn hàng (số lượng nào đó của một sản phẩm có thể được đặt hàng trên mỗi dòng)
• Nhà Cung cấp - Là nhà cung cấp hàng may mặc, hàng thực phẩm hay cả hai loại hàng cho siêu thị
• Sản phẩm - Là hàng may mặc hay thực phẩm
Trang 12• Hàng may mặc - Một thực thể có các thuộc tính sản phẩm đặc thù của hàng may mặc
• Hàng thực phẩm - Một thực thể có các thuộc tính sản phẩm đặc thù của hàng thực phẩm
Trang 13Phối cảnh tạo mô hình dữ liệu
Sự tích hợp giữa WebSphere Studio và Eclipse
Tất cả các tài nguyên phát triển trong các công cụ trên nền Eclipse được quản lý ở dạng "Phối cảnh" và việc cài đặt XDE Rational tạo ra một số phối cảnh mới Một phối cảnh liên quan đến hướng dẫn này (và công việc thiết kế UML khác) là phối cảnh mô hình hóa Bây giờ bạn mở phối cảnh này và so sánh nó với hình ở dưới
Về đầu trang
Tìm các tùy chọn ưu tiên khi mô hình hóa dữ liệu
1 Chuyển đến trình đơn Window của Application Developer và nhấn tùy chọn Preferences
2 Mở rộng tùy chọn Rational XDE từ khung nhìn theo kiểu trình duyệt
(explorer) xếp theo thứ tự bảng chữ cái ở bên trái
3 Mở rộng Data Modeler Bạn thấy hai phần tử con là Assisted Modeling (Tạo mô hình được giúp đỡ) và Database Defaults (Các cơ sở dữ liệu mặc định)
4 Chọn Assisted Modeling Cửa sổ các tùy chọn ưu tiên phải nhìn giống như
sau:
5 Đối với tùy chọn, Use Specification dialogs when adding new (sử dụng các hộp thoại đặc tả khi thêm mới), đánh dấu chọn hộp All Thao tác này làm xuất hiện một số phiếu hộp thoại khi bạn thêm bằng tay các phần tử vào các
mô hình của bạn sau này Tuy nhiên, thường thì các phần tử được bổ sung
Trang 14tự động vào các mô hình—trong những tình huống ấy thì các hộp thoại đặc
tả không xuất hiện, và các mặc định được chấp nhận Tất nhiên chúng có thể được thay đổi thông qua việc truy nhập vào các hộp thoại đặc tả hay các thuộc tính thích hợp
6 Đối với tùy chọn, Use key migration when adding new relationships (sử dụng di trú khóa khi thêm các quan hệ mới), bảo đảm rằng đã đánh dấu chọn hộp Migrate Key Khi nó được chọn thì bộ tạo mô hình dữ liệu sẽ cung cấp tự động các khóa ngoại cho mọi quan hệ, và như vậy giảm bớt gánh nặng tạo các khóa này bằng tay (Ta hoàn toàn có thể tắt hành vi này ở mức các quan hệ riêng lẻ khi chúng được tạo ra)
Về đầu trang
Các tùy chọn ưu tiên khi mô hình hóa dữ liệu: Mặc định của cơ sở dữ liệu
Nhấn chuột lên phần tử con “Database Defaults” Đặt các tùy chọn như trong hình dưới đây:
Tùy chọn thứ nhất Default Database Assignment (Gán cơ sở dữ liệu mặc định)
cho phép bạn đặt tên một phần tử cơ sở dữ liệu trong một mô hình dữ liệu (vật lý) XDE Tuy nhiên, bạn chưa tạo ra bất kỳ một cơ sở dữ liệu nào Cửa sổ này sẽ được bàn đến sau khi bạn đặt tên cho một cơ sở dữ liệu Các tùy chọn thứ hai và thứ ba ở dưới áp dụng cho bất cứ cơ sở dữ liệu nào đã được lựa chọn trong phần thả xuống của tùy chọn thứ nhất
Tùy chọn thứ hai Default Database Target (Cơ sở dữ liệu đích mặc định) cần phải được thiết lập là UDB 8.0 của DB2 (Tôi sử dụng phiên bản cá nhân của UDB DB2, phiên bản 8.1.3 để chuẩn bị hướng dẫn này Xem phần Các điều kiện cần có
Trang 15trước) Khi bạn tạo ra các phần tử vật lý trong mô hình dữ liệu của mình, bộ tạo
mô hình dữ liệu sẽ giả định lấy đích là phiên bản này của DB2 và điều chỉnh việc sinh ra kịch bản lệnh của nó một cách tương ứng Hơn nữa, khi bạn chọn tùy chọn
để chuyển tiếp thiết kế từ mô hình dữ liệu, bộ tạo mô hình dữ liệu tạo một kết nối tới bản cài đặt DB2 phiên bản này
Tùy chọn thứ ba Maximum Identifier Length (Chiều dài tối đa của mã nhận dạng) hạn chế chiều dài của thuộc tính name trong mô hình dữ liệu của bạn Tùy chọn này có thể hoặc phù hợp với giới hạn thực tế của cơ sở dữ liệu đích được lựa chọn của bạn, hay đơn giản là để áp đặt một tiêu chuẩn (tránh các thuộc tính kiểu này: IPreferToWriteASentenceInsteadOfACrypticButDescriptiveElementName) - Tôi thích viết một câu thay vì tên của phần tử đầy bí hiểm nhưng diễn tả)
Nhấn OK để đóng các cửa sổ ưu tiên
Về đầu trang
Dự án tạo mô hình dữ liệu đầu tiên
Với tập hợp các mặc định tổng thể thích hợp, bạn đã sẵn sàng để trở lại nhiệm vụ chính phải làm – tạo ra một thiết kế lôgic cho cơ sở dữ liệu siêu thị của mình Để làm điều này bạn cần một dự án tạo mô hình dữ liệu Nếu bạn đã tạo ra các dự án bất kỳ loại nào trong WebSphere Studio, bạn sẽ thấy cách tiếp cận tương tự trong XDE Rational
1 Từ trình đơn Flie, bạn chọn New > Project
2 Tại cửa sổ đầu tiên của thủ thuật New Project bạn chọn Modeling
3 Tại phía bên phải cửa sổ, bạn chọn Data Modeling Project và nhấn Next
Trang 164 Tại cửa sổ thứ hai của thủ thuật New Project, bạn nhập tên DMTutorial và
nhấn Finish
Phối cảnh nhìn giống như hình dưới đây:
Kết quả của việc tạo dự án làm mô hình dữ liệu như sau:
• Hai mô hình được tạo ra: một mô hình dữ liệu lôgíc, và một mô hình dữ liệu (vật lý) Chúng có tên tương ứng là Logical Data Model và Data Model,
và nhìn thấy trong khung hình Model Explorer (nhấn vào phiếu để xem)
• Đối với mỗi mô hình này, một sơ đồ mặc định được tạo ra và đều có tên là 'Main' trong cả hai trường hợp Chúng được mở ra trong các cửa sổ bộ biên tập riêng biệt, lấp đầy vùng rỗng mầu xám ở giữa của phối cảnh tạo mô hình
Bạn lưu ý rằng (DMTutorial) Data Model* có một dấu sao (*) tại bên phải của tên, biểu thị rằng có các thay đổi chưa được ghi lưu
1 Nhấn vào phiếu Output (ở dưới đáy) để kích hoạt khung nhìn Output
2 Nhấn vào phiếu Rational XDE trên đỉnh của khung hình Output
3 Chú ý các thông điệp đang thông báo sự tạo thành các mô hình và thông điệp cảnh báo: "Mô hình dữ liệu đã được cập nhật với các tùy chọn ưu tiên
đã thiết lập cho cơ sở dữ liệu và vẻ ngoài hiển thị Đề nghị ghi lưu mô hình
đã được cập nhật."
4 Nhấn chuột phải trên (DMTutorial) Data Model* tại khung hình Model Explorer (trên cùng, bên phải) và chọn tùy chọn Save Data Model.mdx
Trang 17Tạo mô hình dữ liệu lôgíc
Tạo các thực thể lôgíc
Khi đã tạo ra dự án làm mô hình dữ liệu, bạn đã sẵn sàng để bắt đầu một mô hình
dữ liệu lôgíc nào đó Nhớ lại rằng tất cả những gì bạn có cho đến lúc này là sáu thực thể cho ví dụ siêu thị, được liệt kê với một tập hợp của các thuộc tính trong một bảng phẳng Để thật sự đánh giá các thực thể liên hệ qua lại như thế nào, và
để giải thích thiết kế với những người khác, bạn cần một phương tiện truyền đạt thú vị và nhiều thông tin hơn – cụ thể là bạn cần một sơ đồ mối quan hệ thực thể Đây chính là cái mà bộ tạo mô hình dữ liệu sẽ mang đến cho bạn như là một bộ phận của mô hình lôgíc mà bạn sắp sửa thiết kế
Sau đây là các cơ chế thực hiện Bạn sẽ làm việc với Logical Data Model: Main diagram (mô hình dữ liệu lôgíc: Sơ đồ chính) Hãy tạo ra sáu lớp UML riêng biệt
để thể hiện sáu thực thể lôgíc trong danh sách gốc ban đầu:
1 Chọn cửa sổ bộ biên tập cho sơ đồ Logical Data Model: Main
2 Chú ý rằng pa lét (palette) UML Class của khung hình Toolbox (ở bên trái) được mở rộng tự động Bạn thử chọn các sơ đồ Data Model: Main và
Logical Data Model: Main lần lượt xen kẽ nhau – hãy lưu ý xem pa lét Data Modeler được mở rộng như thế nào khi sơ đồ vật lý được lựa chọn Đảm bảo rằng bạn kết thúc với Logical Data Model: Main đã được chọn
3 Nhập thực thể đầu tiên Nhấn vào mục Class trên danh sách trong pa lét
UML Class và sau đó nhấn vào đâu đó tại góc trái phía trên của sơ đồ Logical Data Model: Main Sau một lúc, Class1 xuất hiện dưới dạng một hộp trên sơ đồ Đổi tên hộp thành Order (gõ nhập tên trên dòng chữ hiện thời)
Trang 184 Lặp lại bước trước đây để tạo ra thêm năm lớp nữa (các thực thể lôgíc) với các tên sau đây: Order Detail, Supplier, Product, Garment, và Food Item (Chi tiết Đơn hàng, Nhà cung cấp, Sản phẩm, Hàng may mặc và Đồ thực phẩm)
5 Lưu ý rằng khi bạn tạo ra các lớp, chúng xuất hiện như các nút nodes mới
trong khung nhìn Model Explorer dưới nút Logical Data Model
6 Ghi lưu sơ đồ (nhấn tổ hợp Ctrl- S)
Sơ đồ mô hình dữ liệu lôgíc của bạn phải như hình dưới đây:
Để áp dụng bản mẫu thực thể, cần:
1 Lần lượt chọn từng lớp
2 Tìm thuộc tính bản mẫu tại khung nhìn Properties (dưới cùng bên phải)
3 Nhấn nút ở bên phải của thuộc tính này (nút mầu xám với ba dấu chấm) Cửa sổ Properties mở ra (Xem hình bên dưới)
Trang 194 Trong danh sách ở cửa sổ thuộc tính, đánh dấu chọn hộp Entity
5 Nhấn OK
Tại cửa sổ Model Explorer, hãy lưu ý các biểu tượng cho các lớp đã chọn đã thay đổi từ có dạng cái tủ (dành cho cho các lớp bình thường) thành vòng tròn màu vàng với gạch dưới như thế nào
Hẳn là bạn đã nhận thấy rằng sơ đồ lôgic làm nổi lên biểu tượng cũng giống như vậy, có phần lớn hơn, tại phía trên của hộp các lớp của bạn Nếu bạn thích có các bản mẫu được hiển thị dưới dạng văn bản thuần túy (<<entity>>), thì bạn hãy tìm thanh công cụ Appearance:
Khi một hoặc nhiều lớp đã được chọn, bạn nhấn chuột lên danh sách thả xuống
Show stereotype as (mũi tên nhỏ hướng xuống ở bên phải của nút được khoanh tròn màu đỏ ở trên) và chọn Shape Stereotype: Label
Lưu ý dòng chữ sau trong lời trợ giúp : "Để biến đổi lớp thành bảng mô hình dữ liệu không yêu cầu phải là bản mẫu <<thực thể>> " Việc chỉ định các lớp như những thực thể chỉ mang tính chất tô điểm
Trang 20Về đầu trang
Thêm thuộc tính cho thực thể Đơn hàng
Bây giờ thiết kế lôgic của siêu thị của bạn đã hình thành nhưng hơi thưa Bạn đã thêm các lớp và chuyển chúng thành các thực thể, nhưng cho đến lúc này chúng thiếu các thuộc tính Bây giờ là lúc để thêm một số thuộc tính mới
Một cách để thực hiện thao tác này là nhấn chuột phải trên thực thể trong khung
nhìn Model Explorer và chọn Add UML > Attribute từ trình đơn bối cảnh Thao
tác này không hiệu quả lắm Toàn bộ cái mà bạn có thể làm tại đây là gán cho thuộc tính một cái tên (mọi nỗ lực để thêm kiểu dữ liệu (type) đều bị từ chối)
Tốt hơn là ta soạn thảo trực tiếp ngay trên hình Nhấn chuột phải trên lớp Đơn
hàng trong sơ đồ mô hình dữ liệu lôgíc và chọn Add UML > Attribute Lần này
ta gán cho thuộc tính một cái tên, tiếp theo là dấu hai chấm, rồi sau đó là kiểu dữ liệu Thuộc tính đầu tiên, ID của Đơn hàng, cần soạn thảo như sau:
Order Id: Integer
Như là một khoản thưởng thêm, khi bạn nhấn phím Enter, ngay lập tức bạn được chuyển sang dòng kế tiếp và sẵn sàng thêm thuộc tính tiếp theo Bây giờ hãy thêm các thuộc tính sau đây::
Order Description: String
Order Type: ProductType
Trang 21Order Status: OrderStatus
Created By: String
Created Date: Date
Sau khi bạn nhấn phím Enter cho hàng cuối cùng, bạn nhấn phím Escape, thao tác này để loại bỏ thuộc tính sắp tiếp tục thêm vào Bạn phải chú ý và gõ nhập các thuộc tính đúng như nêu ở trên Các tên thuộc tính gồm nhiều từ, ví dụ như Order Description (Mô tả Đơn hàng) có thể có ký tự trống giữa chúng; các tên kiểu dữ liệu bao gồm nhiều từ (ví như ProductType) thì phải viết liền, không có dấu trống xen giữa
Về đầu trang
Thêm thuộc tính cho các thực thể còn lại
Lặp lại quá trình đã mô tả trong mục trên để thêm tất cả những thuộc tính cần có cho năm thực thể còn lại
Đối với thực thể Chi tiết Đơn hàng, bạn nhập:
ID chi tiết đơn hàng: Integer
Trình tự: Integer
Số lượng: Single
Trang 22Giá tiền: Currency
Đối với thực thể Nhà cung cấp, bạn nhập:
Mã số nhà cung cấp: Integer
Loại nhà cung cấp: ProductType
Địa điểm: String
Trang 23Sơ đồ mô hình dữ liệu lôgíc của bạn cần phải nhìn giống như hình ở dưới:
Ở giai đoạn này bạn đã nhập tất cả thông tin có trong danh sách thực thể gốc ban đầu của ví dụ về siêu thị Mặc dù các thông tin vẫn giống như thế, nhưng khi bạn nhập các thông tin đó vào trong bộ tạo mô hình dữ liệu, sẽ có hai lợi thế rõ ràng Lợi thế thứ nhất là bạn có sơ đồ được tạo ra ngay lập tức; lợi thế thứ hai là mặc dù bạn nhập hầu hết dữ liệu của mình vào trong sơ đồ, nhưng các dữ liệu nằm bên
Trang 24dưới cũng được lưu giữ trong một mô hình có cấu trúc Điều này là miễn phí, chỉ cần tạo ra sơ đồ
Về đầu trang
Vài lời về kiểu dữ liệu
Đối với phần lớn trong ví dụ này các kiểu dữ liệu được dùng là những kiểu dữ liệu
Phân tích Analysis mà XDE Rational đã quen biết Chúng có lợi thế là dịch trực
tiếp thành các kiểu dữ liệu của DB2 (và của các DBMS khác) Trợ giúp trực tuyến cho XDE Rational có một bảng ánh xạ tương ứng rất hữu ích Để tìm các thông tin này, hãy :
1 Chọn Help > Help Contents từ trình đơn WebSphere Studio
Trang 25Bây giờ chúng ta hãy xem Bộ tạo mô hình dữ liệu hỗ trợ như thế nào cho các kiểu
dữ liệu do người dùng định nghĩa trong cơ sở dữ liệu của siêu thị Trong mô hình
dữ liệu lôgíc, hãy mô hình hóa chúng như các bảng kê
Về đầu trang
Các bảng kê
Các bảng kê cung cấp một cơ chế để gắn kết một tập hợp các trực kiện (literals) với một thuộc tính đã cho Trong ví dụ này, ProductType có ba giá trị có thể xảy ra:
1 Chọn Enumeration từ pa lét UML Class
2 Kích vào phần trống của sơ đồ mô hình dữ liệu lôgíc
3 Đổi tên bảng kê đầu tiên thành ProductType
Trang 264 Lặp lại các bước trên, đặt tên bảng kê thứ hai là OrderStatus
Về đầu trang
Các trực kiện trong các bảng kê
Thay vì thêm các thuộc tính vào bảng kê, bạn thêm các trực kiện trong bảng kê
Quy trình này tương tự với quy trình thêm các thuộc tính
1 Trong sơ đồ dữ liệu lôgíc, nhấn chuột phải trên hình biểu diễn bảng kê và
chọn Add Enumeration Literal
2 Nhập vào giá trị của trực kiện bảng kê và nhấn Enter
3 Sau khi nhập trực kiện bảng kê cuối cùng, bạn nhấn phím Escape để thoát khỏi hàng mới được bổ sung
4 Ghi lưu các thao tác của bạn
Đối với ProductType, các trực kiện bảng kê là :
Trang 27Thiết kế lôgíc đã tích hợp các kiểu dữ liệu do người dùng định nghĩa có trong ví
dụ siêu thị Việc sử dụng các kiểu dữ liệu này chưa bao giờ dễ dàng hơn: bạn chỉ cần nhập tên của kiểu dữ liệu khi bạn bổ sung các thuộc tính sử dụng các kiểu đó (dù bạn còn chưa định nghĩa các kiểu dữ liệu vào thời điểm đó)
Thiết kế lôgic chưa phải là hết chuyện Thậm chí tại giai đoạn này bộ tạo mô hình
dữ liệu cho phép bạn đặt nền móng để chuyển tiếp trơn tru thành một mô hình vật
lý
Khi điều này xảy ra thì mỗi bảng kê có hai khả năng có thể sau: hoặc được biểu diễn như một bảng riêng biệt, hoặc trở thành một miền trong cơ sở dữ liệu đích
Trang 28Nếu sự phân biệt này không rõ ràng đối với bạn thì bạn đừng lo bạn sẽ thấy sự khác nhau ở phần sau của hướng dẫn này
Tuy nhiên bây giờ bạn hãy đặt các thuộc tính để trao cho hai bảng kê của bạn các
“số phận” đúng
Đầu tiên, bạn nhấn chuột trên mục OrderStatus tại đồ thị lôgic Lưu ý rằng tại
khung nhìn Properties ta chỉ có một thuộc tính tại phần các thuộc tính của
Enumeration Data Modeler (tạo mô hình dữ liệu bảng kê), nó có tên là
IsSeparateTable và được mặc định là True Đây là điều mà bạn muốn OrderStatus được ràng buộc với luồng công việc nguồn cung ứng hàng, rất có thể sẽ thay đổi,
và bạn muốn có sự linh hoạt, có thể thêm một hàng mới vào một bảng riêng biểu diễn một trạng thái mới của đơn hàng
Nhấn chuột vào ProductType và chuyển thuộc tính của IsSeparateTable thành
False ProductType được thực thi như một miền Như thế sẽ ít tính linh hoạt hơn Tôi có thể hình dung những kiểu sản phẩm khác nhau sẽ có trong tương lai, vì vậy dạng bảng có lẽ thích hợp hơn Nhằm mục đích của hướng dẫn này, một miền được thực hiện sẽ thích hợp hơn
Về đầu trang
Các thuộc tính lớp cho các thực thể: khóa thay thế
Ta cần chuẩn bị nhiều hơn để chuyển tiếp tới mô hình vật lý Bạn nhấn chuột vào thực thể Order và lưu ý rằng trong phần Class Data Modeler (tạo mô hình dữ liệu lớp) của khung nhìn Properties có một thuộc tính là UseSurrogateKey Nó được mặc định là True
Trang 29Khi bạn để mục đó là True, thì bạn không cần phải chỉ định rõ bất kỳ thuộc tính nào duy nhất nhận dạng thực thể nói cách khác là các thuộc tính làm khóa chính Thay vào đó, quá trình biến đổi thành mô hình vật lý sẽ sinh ra một thuộc tính bổ sung để làm khóa thay thế
Khái niệm khóa thay thế được giới thiết kế cơ sở dữ liệu hiểu rất rõ Bằng cách cung cấp các hỗ trợ tự động mặc định với khóa thay thế, Bộ tạo mô hình dữ liệu tiết kiệm cho ta thời gian và công sức Tuy nhiên, thường có các lý do để giữ quyền kiểm soát bằng tay đối với đặc tả khóa chính Đối với đa số trường hợp trong ví dụ siêu thị bạn sẽ chỉ định những "ứng cử viên" khóa chính
Hãy đổi thuộc tính UseSurrogateKey của thực thể Đơn hàng thành nhận giá trị False Lặp lại thao tác này đối với các thực thể Chi tiết đơn hàng, Sản phẩm, Hàng may mặc và Hàng thực phẩm Chỉ để giá trị là True cho thực thể Nhà cung cấp, để rồi bạn có thể thấy một ví dụ về việc tạo ra khóa thay thế sau này
Về đầu trang
Các tính chất của thuộc tính: Các khóa ứng viên
Bất cứ một thực thể nào trong các thực thể của siêu thị đều phải có một hoặc nhiều khóa chính để xác định duy nhất mỗi dòng Đây không phải chỉ là thông lệ thực hành thiết kế cơ sở dữ liệu tiêu chuẩn và là lẽ thường nên làm, nó còn thỏa mãn các quy tắc chuẩn hóa Thực thể Nhà Cung cấp sẽ có một khóa thay thế được sinh
ra cho nó Đối với năm thực thể còn lại, bạn cần chỉ định các khóa ứng viên
Cách tiếp cận tiện lợi nhất là làm việc với Model Explorer và khung nhìn
Properties
1 Mở rộng thực thể Order tại khung nhìn Model Explorer
Trang 302 Nhấn chuột vào thuộc tính Order Id, nó là khóa ứng viên Phần bên phải của phối cảnh của bạn nhìn như hình dưới đây:
Về đầu trang
Các khóa ứng viên, tiếp tục
Chú ý hai thuộc tính tại mục Candidate Keys Data Modeler của khung nhìn Thuộc tính là IsNullable và OID IsNullable xác định liệu thuộc tính có thể giữ một giá trị Null hay không—mặc định là True (nghĩa là nó có thể nhận giá trị null) Kém rõ ràng hơn, thuộc tính OID chỉ định rằng đó là một khóa ứng viên mặc định là False (nghĩa là nó không là khóa ứng viên)
1 Đổi giá trị của IsNullable thành False và giá trị của OID thành True cho thuộc tính Order ID
2 Giữ phím Control và nhấn chuột để chọn cả năm thuộc tính khác của Đơn hàng tại khung hình Model Explorer
3 Đổi giá trị của IsNullable thành True tại khung nhìn Thuộc tính (thao tác này thay đổi cả năm thuộc tính cùng một lúc) Để giá trị của OID là False Bạn đang nói rằng năm thuộc tính còn lại bắt buộc phải được gán các giá trị chúng không thể không có giá trị, nhưng chúng không phải là các khóa ứng viên Phần bên phải của phối cảnh của bạn nhìn như hình dưới đây:
Để làm cho các thay đổi thuộc tính hiển thị trên sơ đồ mô hình dữ liệu lôgíc, cần:
1 Chọn sơ đồ mô hình dữ liệu lôgíc (nhấn chuột vào bất cứ nơi nào tại cửa sổ
bộ biên tập)
Trang 312 Nhấn Diagram > Layer Selection
3 Tại cửa sổ Layer Selection, đánh dấu mục Data Modeler trong danh sách Select Layers for Enable
4 Nhấn OK
Bạn phải thấy một biểu tượng chìa khóa mầu bạc ở bên trái của thuộc tính Order
Id, chứng tỏ rằng đó là một khóa ứng viên
Lặp lại những bước ở trên để chọn các khóa ứng viên sau đây:
Order Detail: Order Detail Id
Trang 32bạn được giao nhiệm vụ thiết kế ra Để làm điều này bạn hãy sử dụng những quan
hệ kết hợp được vẽ trong pa lét UML Class trong khung nhìn Toolbox
Trước tiên bạn hãy xem xét quan hệ kết hợp giữa Đơn hàng và Chi tiết Đơn hàng Đây là một quan hệ cha-con cổ điển: các cá thể Chi tiết đơn hàng không thể tồn tại nếu không có Đơn hàng cha Trong Bộ tạo mô hình dữ liệu (và ở mọi chỗ khác),
chúng được gọi là một kết hợp mạnh Bạn hãy thể hiện quan hệ kết hợp này bằng
Composition Association (quan hệ kết hợp cấu thành) được vẽ trong hộp công cụ
1 Chọn sơ đồ Logical Data Model
2 Nhấn một lần trên Composition Association trong pa lét UML Class
3 Nhấn một lần trên thực thể Order trên sơ đồ
4 Nhấn một lần trên thực thể Order Detail trên sơ đồ
Một quan hệ kết hợp được vẽ ra nối chúng với nhau Kết hợp này được chọn tự động và các thuộc tính được nhìn thấy tại khung nhìn Properties Điều chỉnh các thuộc tính như sau:
1 Đổi giá trị của End1Name thành _Child Order Lines
2 Đổi giá trị của End2Name thành _Parent Order
3 Đổi giá trị của End2Multiplicity thành 1
Kết quả trong sơ đồ dữ liệu lôgíc nhìn như hình dưới đây:
Khuyến khích đặt tên cho các mối quan hệ khi mô hình hóa quan hệ thực thể, tuy nhiên đôi khi bạn có thể phản bác rằng các mối quan hệ quá hiển nhiên đến nỗi việc đặt tên là không cần thiết