03/08/2018, 10:22

Bài 05: XML và các hệ quản trị CSDL (MySQL)

XML cũng là một dạng lưu trữ dữ liệu nhưng có điểm khác là nó lưu trữ trên file nên đối với những ứng dụng lớn vài triệu records thì rất khó để ...

XML cũng là một dạng lưu trữ dữ liệu nhưng có điểm khác là nó lưu trữ trên file nên đối với những ứng dụng lớn vài triệu records thì rất khó để đọc và truy xuất. Nhưng khi bạn sử dụng các hệ quản trị CSDL thì dễ dàng hơn bởi nó cung cấp cho bạn ngôn ngữ T-SQL giúp việc xử lý truy vấn rất hiệu quả.

Ở các ví dụ trước mình có đưa ra khá nhiều ví dụ về cấu trúc lưu trữ trong XML, nhưng bạn có thắc mắc nếu chuyển nó sang một hệ quản trị như MySQL thì phải thiết kế table như thế nào? Để hiểu rõ thì sau khi xem bài này bạn sẽ loại bỏ ngay câu hỏi đó trong đầu bạn.

Vì mình chuyên bên PHP và MySQL nên mình sẽ lấy hệ quản trị CSDL MySQL để làm ví dụ trong quá trình viết bài nhé.

1. Phân tích một file XML

Trước tiên mình có một ví dụ như sau: Cần lưu trữ danh sách sinh viên của một trường đại học, mỗi sinh viên cần lưu các thông tin:

  • Tên sinh viên (TenSV)
  • Mã SV (MaSV)
  • Năm sinh (NamSinh)
  • Giới tính (GioiTinh)
  • Mã lớp (MaLop)

Phân tích bài toán để lưu trữ trong XML như sau:

  • Mỗi sinh viên sẽ được bao bọc bởi thẻ SinhVien.
  • Bên trong thẻ SinhVien là các thẻ TenSV, MaSV, NamSinh, GioiTinh, MaLop
  • Cần một thẻ root bên ngoài để khai báo project và ta đặt nó là thẻ DS_SinhVien

Và đây là file XML của chúng ta:

<?xml version="1.0" encoding="UTF-8"?>
<DS_SinhVien>
    <SinhVien>
        <MaSV></MaSV>
        <TenSV></TenSV>
        <NamSinh></NamSinh>
        <GioiTinh></GioiTinh>
        <MaLop></MaLop>
    </SinhVien>
</DS_SinhVien>

Nếu có nhiều sinh viên thì ta chỉ cần copy thẻ SinhVien là được:

<?xml version="1.0" encoding="UTF-8"?>
<DS_SinhVien>
    
    <SinhVien>
        <MaSV></MaSV>
        <TenSV></TenSV>
        <NamSinh></NamSinh>
        <GioiTinh></GioiTinh>
        <MaLop></MaLop>
    </SinhVien>
    
    <SinhVien>
        <MaSV></MaSV>
        <TenSV></TenSV>
        <NamSinh></NamSinh>
        <GioiTinh></GioiTinh>
        <MaLop></MaLop>
    </SinhVien>
    
</DS_SinhVien>

2. Phân tích sang MySQL

Với MySQL thì ta sẽ lưu mỗi sinh viên là một record, có nhiều sinh viên thì cứ bổ sung một record là được.

Lúc này nhìn vào file XML ở phần 1 ta có thể rút ra kết luận nhu sau: Dữ liệu trong thẻ SinhVien tương ứng với một record trong MySQL, khóa chính là thẻ MaSV và khóa ngoại là MaLop.

Cấu trúc table như sau:

  • Tên table: DS_SinhVien
  • Các fields: MaSV, TenSV, NamSinh, GioiTinh, MaLop

Tất cả được mô phỏng trong hình dưới đây:

Lưu ý là bạn có thể đặt tên database và tên fields khác với file XML, bởi vì nếu bạn đặt tên giống thì khi viết API dễ dàng bị lộ tên table, điều này đôi khi là một thông tin có lợi cho hacker.

3. Lời kết

Từ bài này bạn sẽ hiểu được nguyên lý khi lấy dữ liệu từ trong một table rồi chuyển sang file XML, chức năng này thường được sử dụng trong các API trong các ứng dụng Mobile.

Đáng lẽ bài này mình sẽ trình bày sau khi học xong XML nhưng một số bạn thắc mắc nên mình trình bày luôn ở bài thứ 5 này, bỏi vì bạn đã học căn bản qua XML rồi nên cũng không khó khăn gì. Và mình cũng tin là khi bạn đọc bài này thì chắc chắn bạn đã học qua một hệ quản trị CSDL nào đó rồi. Cuối cùng hy vọng bạn hiểu ý tưởng của bài này.

BÀI KẾ SAU
BÀI KẾ TIẾP

Nguồn: code24h.com

Bài liên quan

Tìm hiểu về model và các mối quan hệ giữa các model trong Cakephp

Một trong những tính năng mạnh mẽ nhất của Cakephp là khả năng tạo liên kết quan hệ giữa các bảng cơ sở dữ liệu. Để cho ứng dụng của bạn hoạt động một cách hoàn hảo, bạn phải xác định cách các mối quan hệ làm việc cho phép bạn truy cập dữ liệu của bạn một cách trực quan và mạnh mẽ. Nắm vững các ...

Vũ Văn Thanh viết 16:09 ngày 07/09/2018

Cơ Sở Dữ Liệu và Hệ Quản Trị Cơ Sở Dữ Liệu

Rất nhiều bạn khi mới học về cơ sở dữ liệu thường nhầm lẫn giữa 2 khái niệm Cơ Sở Dữ Liệu (database) và Hệ Quản Trị Cơ Sở Dữ Liệu (Database Management System hay DBMS). Đây là 2 khái niệm có liên quan tới nhau nhưng không phải là một. Trong bài viết này mình sẽ làm rõ hai khái niệm này và giúp ...

Hoàng Hải Đăng viết 10:18 ngày 07/09/2018

Hệ quản trị cơ sở dữ liệu quan hệ RDBMS trong SQL

RDBMS là phần không thể không đề cập đến khi tìm hiểu về SQL. Vậy RDBMS là gì? Nó gồm những thành phần nào? Chúng ta sẽ cùng tìm hiểu trong bài học này nhé. RDBMS là gì? RDBMS là viết tắt của Relational Database Management System (Hệ quản trị cơ sở dữ liệu ...

Bùi Văn Nam viết 11:38 ngày 22/08/2018

Deploy ứng dụng Rails sử dụng hệ quản trị cơ sở dữ liệu mysql hoàn toàn miễn phí với Heroku

Với những người tiếp cận với framework rails thông qua quyển thánh kinh Railstutorial(https://www.railstutorial.org/book) hẳn đã quen với việc deploy rails app với heroku( Chapter 1: From zero to deploy) và sử dụng hệ quản trị cơ sở dữ liệu sqlite ở development và postgresql ở production. Tuy nhiên ...

Bùi Văn Nam viết 18:14 ngày 12/08/2018

Giới thiệu về hệ quản trị cơ sở dữ liệu RethinkDB

RethinkDB là một cơ sở dữ liệu mã nguồn mở NoSQL, có khả năng mở rộng được phạm vi, được thiết kế cho nền tảng của các ứng dụng thời gian thực. RethinkDB cho phép lập trình viên có thể xây dựng được các ứng dụng thời gian thực có thể mở rộng phạm vi trong một khoảng thời gian với công sức là ít ...

Trịnh Tiến Mạnh viết 17:45 ngày 12/08/2018
0