Object Model và Data Model Mô hình Object được dùng cho hầu hết các thành phần của ứng dụng như class, attributes, operations, relationships, components, và các cấu trúc khác ngoại trừ
Trang 1CHƯƠNG
CHƯƠNG 12 12:: Mô
Mô hì hình nh d dư ữ ̃ liliệ ệu u
Trang 2Nô ộ̣ii dung dung
So sánh mô hình dữ liệu và mô hình đối tượng
Quy tắc nghiệp vụ và tính logic trong mô hình dữ liệu
Trình tự tạo mô hình dữ liệu
◦ Từ việc thiết kế bảng
◦ Từ mô hình đối tượng
Phát CSDL hay file DDL
Trang 3Object Model và Data Model
Mô hình Object được dùng cho hầu hết các
thành phần của ứng dụng như class, attributes, operations, relationships, components, và các
cấu trúc khác (ngoại trừ dữ liệu) liên quan đến tính hiệu quả của bộ nhớ
◦ Đối tượng gì được tạo trong bộ nhớ, chúng giao tiếp nhau như thế nào, mỗi đối tượng có nhiệm vụ gì?
Data model liên quan nhiều đến tính hiệu quả
Trang 4So sánh 2 mô hình
Trang 5Hỗ trợ tính kế thừa
(inheritance)
Không hỗ trợ tính kế thừa
Hai entity classes có Các bảng của entity
Trang 6So sánh
So sánh 2 2 mô hình mô hình
Mô hình object hay data được phát triển trước??
◦ Thường được phát triển đồng thời
Một entity class từ lược đồ class sẽ trở thành các bảng của database CSDL
Ngược lại, một bảng trong database có thể được hỗ trợ bởi hai hay nhiều class trong ứng dụng
Trang 7Mố ối quan h i quan hệ ệ gi giữ ữa a 2 2 mô hình mô hình
Nhiều project, chủ yếu là các project cần nâng cấp, bắt đầu với một mô hình data
có sẵn, có thể reverse engineer mô hình này để phát ra một mô hình object
Nếu có mô hình object nhưng không có
mô hình data, có thể phát tự động mô
hình data từ mô hình này.
Trang 8Quy t
Nếu muốn thực thi mô hình data, cần phải áp
dụng các quy tắc nghiệp vụ (business rules) vào
mô hình
Các quy tắc nghiệp vụ bao gồm: yêu cầu, chính
sách, hướng dẫn cần thiết để hoàn tất giao dịch trong thực tế
Khi áp dụng các quy tắc nghiệp vụ, phải chỉ ra
được:
◦ các giá trị có thể chấp nhận trong các cột (not null,
unique, default )
◦ Các biểu thức điều kiện (check constraint)
◦ Các hành động cần làm khi cập nhật database (trigger bảo toàn tham chiếu)
Trang 9Tính logic trong mô hình d
Tính logic trong mô hình dữ ữ liliệ ệu u
Thực tế của hướng đối tượng chỉ ra rằng nên giữ các business logic trong ứng dụng hơn là trong database
Chỉ có logic nào liên quan đến chính dữ
liệu mới nên đưa vào database như: các
field, giá trị hợp lệ trong các field, chiều dài field…
Trang 10Tính logic trong mô hình d
Tính logic trong mô hình dữ ữ liliệ ệu u
Nhiều quy tắc nghiệp vụ (business rules) có thểđựơc đưa trực tiếp vào database thông qua
constraint Tuy database là nơi thích hợp cho loại logic này, ứng dụng buộc phải thu thập thông tin
từ end user, truyền nó qua lớp business, qua kết nối mạng trước khi dữ liệu được đánh giá Nếu
để logic này ngay tại lớp business thì đôi khi giảm được nghẽn mạng
Tuy nhiên 1 số phần trong ứng dụng hay các ứng dụng khác, cần dùng cùng 1 constraint thì nên đặt
nó trong database để bảo đảm quy tắc này được
Trang 11Tính logic trong mô hình d
Tính logic trong mô hình dữ ữ liliệ ệu u
Một số logic hệ thống có thể đặt ngoài
database trong các stored procedures
Nếu chức năng liên quan đến việc tạo dữ liệu thì nên lập trình nó trong stored
procedure có thể nhanh hơn là phải nạp toàn bộ bản ghi vào bộ nhớ rồi để ứng
dụng xử lý, và lưu trữ kết quà ngược về
lại database
Trang 12Tính logic trong mô hình d
Tính logic trong mô hình dữ ữ liliệ ệu u
Tuy nhiên cũng có những bất lợi khi dùng stored procedure để thực thi business
logic:
◦ Chia business logic ngang qua ít nhất là 2 layer (business logic layer và the database layer) Khi business logic thay đổi, có thể cần cập nhật cả 2 layer
◦ Nếu dùng quá nhiều stored procedures
có thể khó di chuyển chúng từ DBMS này sang DBMS khác do cú pháp có thể khác nhau.
Trang 13Tính logic trong mô hình d
Tính logic trong mô hình dữ ữ liliệ ệu u
Không dễ quyết định logic nên đặt trong database hay trong ứng dụng.
Ngay khi quyết định đặt logic trong
database, có thể mô hình logic này bằng cách mô hình hoá stored procedures,
constraints, và triggers
Trang 14Tạ ạo mô hình d o mô hình dữ ữ liliệ ệu u
Mô hình Data được xây dựng cả trong
logical view và Component view.
Trong logical view, có thể tạo schema,
table, domain và các domain packages.
Trong Component view, mỗi database
được mô hình như 1 component với
stereotype là <<database>>
Trang 15Trình t
Trình tự ự ttạ ạo mô hình data o mô hình data
1. Tạo database
2. Tạo schema
◦ Logical view\Data Modeler\New\Schema
◦ Gán database cho schema
3. Tạo domain package
Logical view\Data Modeler\New\ Domain
Package
Gán hệ DBMS cho domain package
Trang 16Trình t
Trình tự ự ttạ ạo mô hình data o mô hình data
4. Tạo các domain trong domain package
Domain package\Data Modeler\New\Domain
5. Tạo lược đồ mô hình data
Schema\Data Modeler\New\Data Model Diagram
6. Tạo hay thêm bảng vào lược đồ
Tools\Create\Table, nhấp vào cửa sổ lược đồ
7. Tạo mối quan hệ giữa các bảng
Trang 17Bướ ướcc 1 1: : Ta Tạ̣o o Database Database
Rose hỗ trợ 1 số DBMS như sau:
◦ MS SQL server
◦ IBM DB2
◦ Oracle
Trang 18Bướ ướcc 1 1: : Ta Tạ̣o o Database Database
Database được mô hình hoá như 1
component Nó cần có tên riêng biệt và
phải được gán vào 1 DBMS xác định
Để tạo database:
◦ Tại Component view, nhấp phải và chọn lệnh Data Modeler\ New\ Database
◦ Sau khi tạo DB, mở open specification và
chọn DBMS thích hợp
Trang 19Tablespace ((filegroup filegroup))
Khi sử dụng DB2, Oracle hay SQL server, có thể thêm tablespace vào DB
Tablespace là 1 đơn vị lưu trữ logical cho các bảng
◦ Mỗi tablespace chứa 1 hay nhiều container
◦ Mỗi container là 1 thiết bị lưu trữ vật lý chẳng hạn như đĩa cứng Một container được chia
thành nhiều đơn vị nhỏ hơn gọi là extent
Trang 20 Để tạo tablespace cho database:
Data Modeler\ New \ Tablespace
Với SQL server, thì tablespace còn được
gọi là filegroup, container còn được gọi là
file
Mỗi tablespace đều có 1 kích cỡ ban đầu
Ngay khi không gian này được dùng hết,
DBMS có thể tự động tăng thêm kích cỡ
với độ lớn được đặt sẵn nhưng không
thể vượt quá kích cỡ cực đại
Trang 23 Schema là 1 container cho mô hình data , là nơi mà dựa vào đó Data Modeler sẽ chuyển đổi mô hình data thành mô hình object
Schema sẽ được ánh xạ thành 1 package của mô hình object dù cho schema có nhiều chức năng
hơn là 1 component thông thừong của UML
Tất cả tables, fields, triggers, constraints, và các
phần tử mô hình hóa dữ liệu khác đều được chứa trong 1 schema ngoại trừ domain (đuợc lưu trong
Trang 24 Tất cả các schema đều được lưu trong package
tên Schema nằm trong Logical
Mỗi schema phải được ánh xạ vào 1 database
trong mô hình Mỗi database có thể chứa trong một hay nhiều schema
Tạo schema
◦ Logical view\Data Modeler\New\Schema
◦ Gán database cho schema
Trang 25Data Model Diagram
Ngay khi schema được tạo, có thể tạo 1 lược
đồ mô hình Data ngay trong nó
Data Model diagram được dùng để thêm, chỉnh
sửa hay xem các bảng và các phần tử khác bên trong mô hình data Nó có cùng mục đích như
lược đồ Class trong mô hình object
Mặc dù có thể thêm các phần tử trực tiếp ngay
trong browser, nhưng lược đồ mô hình data là
cách tốt nhât để mô tả 1 cách hình ảnh các
phần tử và mối quan hệ của chúng
Trang 26 Domain có thể được dùng để thực hịên các quy tắc nghiệp vụ (business rules) như xác định dữliệu các trường theo yêu cầu, vùng giá trị hợp lệhay giá trị mặc định của 1 trường
Domain là một pattern mà sau khi xây dựng nó
có thể được dùng cho 1 hay nhiều trường khác nhau trong database
Ví dụ: nếu nhiều bảng trong 1 database có chứa nhiều loại phone khác nhau như HomePhone,
WorkPhone, FaxNumber Ta nên tạo 1 domain
có tên Phone chứa các quy tắc cần thiết cho tất
cả loại phone này như kiểu dữ liệu là Long, giá trị mặc định là 0,…
Trang 27Các l
Các lợ ợi ích khi s i ích khi sử ử d dụ ụng domain ng domain
Domain không bắt buộc phải dùng nhưng khi sửdụng domain thì có 2 lợi thế sau:
Consistency: bảo đảm các quy tắc nghiệp vụ
được áp dụng thống nhất qua nhiều trường
trong database
Maintenance: vì domain thể hiện các quy tắc
nghiệp vụ, nên khi quy tắc thay đổi chỉ cần thay
đổi domain các trường được áp dụng domain
Trang 28 Domain chỉ được dùng trong mô hình data Có thể sử dụng tên domain như 1 loại dữ liệu tùy chọn trong mô hình object hoặc mô hình data
Domain cho phép ta đặt tên và xác định kiểu
dữ liệu (chiều dài, độ chính xác, tỷ lệ, các ràng buộc về null, giá trị mặc định, unique cho 1 cột)
Domain không phụ thuộc schema, nên có thể
dùng domain cho nhiều schema trong cùng 1 hệDBMS Mỗi domain được gán vào 1 domain
package
Trang 29Domain package
Trong Rose, các domain được lưu trữ bên trong 1 domain package
Mỗi domain package được gán với 1 hệ
DBMS xác định, tất cả các domain bên trong package chỉ được sử dụng các loại dữ liệu được cung cấp bởi DBMS đó
Cách tạo:
Logical View\Data Modeler\ New\Domain
Trang 31Các thành ph
Các thành phầ ần trong schema n trong schema
Từ mỗi bảng, ta có thể tạo các phần tử sau:
Trang 32Quan h
Quan hệ ệ gi giữ ữa các b a các bả ảng ng
Quan hệ trong mô hình dữ liệu tương tự
như quan hệ trong mô hình object
◦ Mô hình object: kết nối các class
◦ Mô hình data kết nối giữa các bảng
Hai loại kết nối: identifying relationships
và non-identifying relationships
Trang 33Identifying relationship
Khoá ngoại là 1 phần của khoá chính của bảng con Được mô hình hoá như 1 quan
hệ kết hợp phức (composite aggregation)
Một bản ghi không thể tồn tại trong
bảng con nếu không được kết nối với 1 bản ghi trong bảng cha
Trang 34Ví d
Trang 35Non identifying relationship identifying relationship
Khoá ngoại vẫn được tạo ra trong bảng con
nhưng khoá ngoại không phải là 1 phần của
khoá chính của bảng con
Việc tồn tại 1 bản ghi trong bảng con sẽ không phụ thuộc vào mối liên kết với bảng cha, mà
chính do multiplicity của quan hệ sẽ kiểm soát
việc tồn tại này
child table In a non-identifying relationship, the
relationship
cardinality (multiplicity) controls whether a
Trang 36Ví d
Ví dụ ụ vvề ề Non Non identifying relationship identifying relationship
Trang 37Phát mô hình object t
Khả năng phát ra mô hình object từ mô hình
dữ liệu rất hay dùng khi phải làm việc trên 1 project với 1 ứng dụng và database có sẵn Ta
có thể dịch ngược lại database cũ, rồi phát ra
Trang 38Phát mô hình object t
Nhấp phải schema, chọn Data
Modeler\Transform to Object Model.
Nhập vào tên của package chứa mô hình
object Package này sẽ nằm trong Logical view.
Nhập vào prefix Prefix sẽ được thêm vào tên của mỗi bảng để tạo ra 1 class tương ứng trong mô hình object.
Trang 39Phát mô hình data t
Khi một project phát triển, có thể có rất nhiều class loại entity, việc phát mô hình data sẽ cho ta 1 điểm
khởi đầu tốt cho việc thiết kế database
Khi phát mô hình data, Rose sẽ tìm các class với thuộc tính persistent được đánh dấu là True Chỉ có các class này sẽ được phát thành table
Một package của cac class trong Logical view sẽ trở
thành 1 schema trong mô hình data Nếu đã có sẵn 1
Trang 40Trình t
Tạo một database trong component view
Nhấp phải tại bất kỳ thuộc tính nào trong class mà ta muốn trở thành khoá chính trong các bảng được phát Nếu ta không chọn khoá chính, Rose sẽ tạo khoá chính bằng cách tạo 1 cột
có tên "<table name>ID.“
Nhấp phải tại package trong logical view, chọn Data
Modeler\Transform to Data Model.
Nhập vào tên schema đích
Đưa vào tên database đích
Đưa vào prefix sẽ được thêm vào mỗi tên class để tạo tên
bảng tương ứng
Chọn check box “Create Indexes for Foreign Keys” để tạo tự
Trang 41Phát database t
Phát database từ ừ mô hình data mô hình data
Có thể phát database hay DDL script từ
mô hình data Rose cho ta quyền chọn
lựa phát DDL hay chạy DDL để tạo
database.
Để phát: nhấp phải tại schema, chọn Data Modeler \ Forward Engineer.
Trang 42Ví d
Ví dụ ụ
Trang 43Ví d
Ví dụ ụ
Các lệnh DDL tương ứng:
CREATE TABLE T_Customer (
CUSTOMER_ID SMALLINT IDENTITY NOT NULL,
FIRST_NAME VARCHAR ( 15 ) NOT NULL,
LAST_NAME VARCHAR ( 15 ) NOT NULL,
HOME_PHONE NUMERIC ( 10 ) NOT NULL,
ADDRESS VARCHAR ( 20 ) NOT NULL,
CITY VARCHAR ( 20 ) NOT NULL,
STATE CHAR ( 2 ) NOT NULL,
ZIP_CODE NUMERIC ( 5 ) NOT NULL,
CONSTRAINT PK_T_Customer0 PRIMARY KEY NONCLUSTERED
(CUSTOMER_ID),
Trang 44Dịịch ng ch ngượ ược database c database
Khi phát ngược database, Rose sẽ tạo ra 1
component database trong Component view và tạo các bảng cùng các phần tử khác trong mọt schema trong Logical view
Ngay sau khi phát ngược 1 database, có thể
phát tiếp mô hình object hay thực hiện sự đồng
bộ hoá
Để phát: chọn Tools \ Data Modeler \ Reverse Engineer Có thể phát trực tiếp từ database hay
từ script DDL