Bài giảng Phân tích thiết kế hệ điều hành: Chủ đề 7 - ThS. Lương Trần Hy Hiến

22 37 0
Bài giảng Phân tích thiết kế hệ điều hành: Chủ đề 7 - ThS. Lương Trần Hy Hiến

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Phân tích thiết kế hệ điều hành - Chủ đề 7: Thiết kế tầng dữ liệu cung cấp cho người học các kiến thức: Thiết kế tầng quản lý dữ liệu, lưu trữ dưới dạng file, lưu trữ bằng CSDL đối tượng – quan hệ,... Mời các bạn cùng tham khảo.

Chủ đề 7: Thiết kế tầng liệu OOAD – FIT of HUTECH CH7 - HIENLTH Thiết kế tầng quản lý liệu Thiết kế tầng quản lý liệu (data management layer design) gồm bước: • Chọn dạng lưu trữ • Ánh xạ lớp đối tượng cần lưu trữ xuống dạng lưu trữ chọn • Tối ưu hóa việc lưu trữ • Thiết kế lớp đối tượng phục vụ cho việc truy xuất chỉnh sửa liệu OOAD – FIT of HUTECH CH7 - HIENLTH Các dạng lưu trữ liệu • Lưu trữ dạng file (truy xuất truy xuất ngẫu nhiên) • Lưu trữ CSDL quan hệ (Relational Database) • Lưu trữ CSDL lai đối tượng – quan hệ (Object – Relational Database) • Lưu trữ CSDL hướng đối tượng (Object Oriented Database) OOAD – FIT of HUTECH CH7 - HIENLTH Lưu trữ dạng file • Có chế truy xuất: ngẫu nhiên • Thường sử dụng cho trường hợp sau: • Lưu trữ đối tượng • Ví dụ: đối tượng config hệ thống • Dữ liệu có insert cần insert vào cuối • Ví dụ: mailing list, history • Dữ liệu tĩnh • Ví dụ: mã quốc gia • Ưu điểm: thư viện truy xuất file thường hỗ trợ sẵn hầu hết mơi trường lập trình, cách thức truy xuất đơn giản • C#: StreamReader, StreamWriter, FileStream • C++: ifstream, ofstream • C: FILE • Khuyết điểm: • Khơng giải vấn đề truy xuất đồng thời • Khơng đảm bảo tồn vẹn liệu OOAD – FIT of HUTECH CH7 - HIENLTH Lưu trữ CSDL quan hệ • Được phát triển E F Codd vào thập niên 70 phát triển rộng rãi từ đầu thập niên 80 • Ưu điểm: • Vấn đề quản lý, phân quyền, truy xuất đồng thời hệ CSDL đảm nhận • Sử dụng ngơn ngữ chung SQL cho tất CSDL quan hệ • Khuyết điểm: • Mơ hình thực thể kết hợp khơng sơ đồ lớp OOAD – FIT of HUTECH CH7 - HIENLTH Lưu trữ CSDL đối tượng – quan hệ • Các hệ CSDL đối tượng – quan hệ chất hệ CSDL quan hệ có hỗ trợ thêm số tính chất đối tượng (ví dụ user-defined type) • Một số tính chất hướng đối tượng chưa có hỗ trợ hệ • Các hệ CSDL đối tượng – quan hệ như: DB2, Oracle, Informix,… • Ưu điểm: • Có ưu điểm CSDL quan hệ • Giúp giải số tốn hướng đối tượng đơn giản • Khuyết điểm • Lược đồ CSDL chưa hồn tồn sơ đồ lớp OOAD – FIT of HUTECH CH7 - HIENLTH Lưu trữ CSDL hướng đối tượng • Có kiểu CSDL • Tích hợp vào ngơn ngữ hướng đối tượng • Hệ CSDL riêng biệt hỗ trợ ngôn ngữ truy vấn chuẩn hóa: • ODL: Object Definition Language • OML: Object Manipulating Language • OQL: Object Query Language • Ưu điểm: • Hỗ trợ tất tính chất hướng đối tượng • Khuyết điểm: • Vẫn giai đoạn phát triển OOAD – FIT of HUTECH CH7 - HIENLTH Nội dung • Chuyển đổi sơ đồ lớp sang mơ hình liệu quan hệ Chuyển đổi đối tượng Chuyển đổi mối quan hệ OOAD – FIT of HUTECH CH7 - HIENLTH Các luật chuyển đổi • Luật 1: Chuyển đổi tất lớp đối tượng sang bảng Nếu lớp sơ đồ có nhiều lớp con, chuyển đổi lớp (bao gồm lớp cha, lớp con) sang bảng lược đồ CSDL quan hệ (luật 8) • Luật 2: Chuyển đổi thuộc tính đơn trị thành thuộc tính (cột) bảng liệu • Luật 3: Chuyển đổi phương thức thành thủ tục (store-procedure) module chương trình OOAD – FIT of HUTECH CH7 - HIENLTH Các luật chuyển đổi (tt) • Luật 4: Chuyển đổi mối quan hệ đơn trị (1-1) cách lấy thuộc tính khóa lớp lưu trữ vào lớp lại (tương tự thêm khóa ngoại cho bảng liệu) • Luật 5: Chuyển đổi thuộc tính đa trị nhóm lặp thành bảng liệu tạo mối quan hệ 1-n từ bảng gốc đến bảng • Luật 6: Chuyển đổi mối kết hợp n-n cách tạo bảng liệu liên quan đến bảng liệu gốc Lưu trữ thuộc tính khóa bảng liệu gốc vào bảng liệu khóa ngoại OOAD – FIT of HUTECH CH7 - 10 HIENLTH Các luật chuyển đổi (tt) • Luật 7: Chuyển mối quan hệ phối hợp 1n cách lấy thuộc tính khóa lớp có giá trị đơn (0 1, 1) lưu vào lớp có giá trị nhiều (1 *, *) thành thuộc tính khóa ngoại OOAD – FIT of HUTECH CH7 - 11 HIENLTH Các luật chuyển đổi (tt) • Luật 8: Chuyển mối quan hệ kế thừa 8a: Sử dụng lớp cha (superclass) lớp (subclass) 8b: Sử dụng lớp 8c: Sử dụng lớp cha OOAD – FIT of HUTECH CH7 - 12 HIENLTH Mối quan hệ kế thừa • Trong mơ hình CSDL quan hệ, có phương pháp để mơ hình hóa mối quan hệ kế thừa • Tuy nhiên phương pháp có nhược điểm riêng Cách Cách OOAD – FIT of HUTECH Cách 13 CH7 - 13 HIENLTH Tối ưu việc lưu trữ • Vấn đề primary key & kiểu liệu • Vấn đề DeNormalization • Vấn đề Clustering & Indexing • Vấn đề Security & Backup • Vấn đề Policy & Culture OOAD – FIT of HUTECH 14 CH7 - 14 HIENLTH Thiết kế lớp đối tượng phục vụ cho việc truy xuất chỉnh sửa liệu OOAD – FIT of HUTECH 15 CH7 - 15 HIENLTH Double Duty Class • Lớp đảm đương nhiệm vụ: business & database operate • Vi phạm tính cohesion • Nếu đổi loại CSDL tồn lớp phải viết lại OOAD – FIT of HUTECH class User { private string firstname; private string lastname; private string password; public User(string userid) { SqlConnection conn = new SqlConnection(" ."); conn.Open(); SqlCommand cmd = new SqlCommand(String.Format( "SELECT * FROM [user] WHERE userid = {0}", userid)); SqlDataReader reader = cmd.ExecuteReader(); firstname = ; lastname = ; conn.Close(); } public void ChangePassword(string newpwd) { password = newpwd; SqlConnection conn = new SqlConnection(" ."); conn.Open(); SqlCommand cmd = new SqlCommand(String.Format( "UPDATE * FROM [user] SET WHERE userid = {0}", userid)); int r = cmd.ExecuteNonQuery(); conn.Close(); } } 16 CH7 - 16 HIENLTH Database Object • Sử dụng Database Object đảm nhận việc lưu trữ cho tất object • Cần sử dụng khái niệm lập trình tổng quát như: delegate, reflection để xây dựng • Cần giải vấn đề Primary Key gồm nhiều thuộc tính • Cần giải mối quan hệ với khác lớp khác (khi lưu xuống database, object có mối quan hệ với object object có cần phải lưu hay khơng) • Việc xây dựng DatabaseObject phức tạp Do sử dụng thư viện có sẵn Ví dụ: Enity Framework OOAD – FIT of HUTECH DBObject - KeyAttribute : string - ClassType : Type + Update () : int + GetObject () : int + Delete () : int User - userid : Int64 - lastname : string - firstname : string - password : string - username : string + CheckPassword () : int + GetFullName () : void + ChangePassword () : void 17 CH7 - 17 HIENLTH Broker object • Xây dựng lớp trung gian đảm nhận việc lưu trữ cập nhật liệu class User { private string firstname; private string lastname; private string password; private string username; private Int64 userid; public void ChangePassword(string newpwd) { password = newpwd; Users.UpdateUser(this); } } class Users { public static User GetUser(string userid) { } public static User GetUser(string username, string password) { } public static void UpdateUser(User user) { } } 18 OOAD – FIT of HUTECH CH7 - 18 HIENLTH Phương án giải • Nếu ứng dụng nhỏ sử dụng phương pháp double duty, broker • Nếu ứng dụng cần phát triển nhanh dùng thư viện có sẵn Entity Framework, JPA (Java Persistence API) • Có thể phối hợp với phương pháp Broker Object OOAD – FIT of HUTECH 19 CH7 - 19 HIENLTH Tham khảo • http://www.agiledata.org/essays/mappingObject s.html • Slide giảng Phân tích Thiết Kế Hướng đối tượng, TS Nguyễn Trần Minh Thư, ĐH KHTN TpHCM OOAD – FIT of HUTECH CH7 - 20 HIENLTH Câu hỏi thảo luận OOAD – FIT of HUTECH CH7 - 21 HIENLTH Thank you!!! OOAD – FIT of HUTECH CH7 - 22 HIENLTH ... Vấn đề primary key & kiểu liệu • Vấn đề DeNormalization • Vấn đề Clustering & Indexing • Vấn đề Security & Backup • Vấn đề Policy & Culture OOAD – FIT of HUTECH 14 CH7 - 14 HIENLTH Thiết kế lớp... OOAD – FIT of HUTECH CH7 - HIENLTH Lưu trữ CSDL đối tượng – quan hệ • Các hệ CSDL đối tượng – quan hệ chất hệ CSDL quan hệ có hỗ trợ thêm số tính chất đối tượng (ví dụ user-defined type) • Một... OOAD – FIT of HUTECH 19 CH7 - 19 HIENLTH Tham khảo • http://www.agiledata.org/essays/mappingObject s.html • Slide giảng Phân tích Thiết Kế Hướng đối tượng, TS Nguyễn Trần Minh Thư, ĐH KHTN TpHCM

Ngày đăng: 30/01/2020, 04:15

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan