Giới thiệu về các mô hình cơ sở dữ liệu, giới thiệu về RDBMS Concept (Related database management system)
- 05-05-2022
- Toanngo92
- 0 Comments
Mục lục
Khái niệm cơ sở dữ liệu (database)
Thông thường trong thực tế, các dự án website, phần mềm, các tổ chức – cơ quan khi vận hành đều nắm giữ số lượng lớn các dữ liệu, là kết quả của việc thu thập nhập liệu hàng ngày ( ví dụ như dữ liệu người dùng/ user, dữ liệu cư dân của chính phủ, dữ liệu học sinh của trường học … các dữ liệu này trước đây được lưu trữ cơ bản thông qua giấy tờ, ở thời đại ngày này, người ta số hóa chúng để lưu trữ dễ dàng hơn. Những giải pháp lưu trữ cơ bản nhất là lưu vào file (tập tin) dưới góc độ người dùng trước đây là các file văn bản .txt, sau đó là các file word, excel (.doc, .xls). Còn với các lập trình viên chúng ta lưu trữ vào file ( xem lại bài đọc ghi file văn bản và đọc ghi file nhị phân trong C). Trong lập trình hiện đại, khi số lượng dữ liệu ngày càng lớn và trở nên khó quản lý hơn, người ta đưa ra khái niệm cơ sở dữ liệu (database) để biểu diễn một tổ chức các dữ liệu. Chúng có thể chứa một hoặc nhiều các mục dữ liệu, gọi là các bản ghi (records). Chúng ta có thể hiểu một cơ sở dữ liệu là một tập hợp dữ liệu mà có thể đáp ứng dữ liệu theo các câu hỏi khác nhau. Ví dụ:
- Có bao nhiêu sinh viên đạt điểm trên 8 trong tổ chức dữ liệu ?
- Lấy ra 2 sinh viên đạt điểm lớn hơn 9 nhưng chỉ trong lớp A trong tổ chức dữ liệu.
- Lấy ra 10 bản ghi người dùng mới nhất trong tổ chức dữ liệu
- Lấy ra tất cả sinh viên có quê quán tại Hồ Chí Minh trong tổ chức dữ liệu
- …
Dữ liệu và cơ sở dữ liệu (Data & Database)
Dữ liệu (data) chính là thông tin và nó chính là thành phần quan trọng nhất trong bất kỳ loại hình công việc, cơ chế tổ chức nào … Trong hoạt động hàng ngày, chúng ta sử dụng các dữ liệu có sẵn được tạo hoặc cập nhật, thêm mới dữ liệu đã được tạo, các dữ liệu được tập hợp lại và phân tích & biểu diễn các thông tin cho người dùng. Nó có thể là các thông tin về con người, xe cộ, sản phẩm, thể thao, thời tiết, ….. tóm lại là dữ liệu là thông tin, và dựa vào các thông tin này chúng ta tập hợp lại thành một khối dữ liệu phục vụ cho các tác vụ nhất định.
Chúng ta đến với một ví dụ: Chính phủ có một tập hợp dữ liệu để lưu trữ dữ liệu toàn bộ dân số, dựa vào dữ những dữ liệu được tập hợp, chính phủ có thể nhận diện được:
- Số lượng dân số dưới 18 tuổi (bao gồm nam/nữ)
- Tỉ lệ cân bằng giữa nam/nữ ở dân số 18 tuổi
- Tỉ lệ sinh ( tốc độ tăng của số lượng dân số 5-10 năm trở lại đây, so sánh với thời điểm trước).
- …..
Hay một ví dụ: Một công ty sản xuất linh kiện máy tính lên kế hoạch sản xuất một loại linh kiện mà trước đó, linh kiện này chỉ nhập khẩu. Nếu công ty có dữ liệu cũ về giá nhập khẩu của linh kiện 5 năm trở lại đây, mọi chuyện sẽ đơn giản hơn, công ty sẽ có thể dựa vào giá nhập khẩu, số lượng nhập khẩu, tính ra tổng chi phí dành cho việc nhập khẩu linh kiện mỗi năm và từ số liệu đó, có thể cân nhắc xem nếu chi phí đầu tư nhà xưởng, nhân công và sản xuất ra thành phẩm có chênh lệch nhiều so với việc nhập khẩu không …
Dựa vào tập hợp các dữ liệu này, chính phủ hoàn toàn có thể sử dụng để phán đoán, cũng như đưa ra các chính sách hợp lý trong tương lai dựa theo định hướng phát triển.
Trong các tổ chức, doanh nghiệp … cũng tương tự vậy, việc có các thông tin giúp họ có thể dự đoán trước dựa trên số liệu lịch sử và lên kế hoạch cho phù hợp, và nếu công việc tổng hợp dễ dàng, biểu diễn thông minh sẽ giúp doanh nghiệp, tổ chức tiết kiệm nhiều nguồn lực, tiền bạc.
Cơ sở dữ liệu (database) là một tập hợp danh sách các dữ liệu, hoặc có thể hiểu nó là một cơ chế tổ chức dữ liệu tương thích để lưu trữ dữ liệu. Các thông tin này có thể được người dùng truy xuất một cách hiệu quả và nhanh chóng.
Ví dụ:
Danh bạ điện thoại chính là một database, trong database này, mỗi thông tin danh bạ của một người được gọi là bản ghi (record), bản ghi này sẽ bao gồm:
- Số điện thoại
- Thông tin chủ SĐT
- Địa chỉ
- …
Tổng kết lại, database là một tổ chức danh sách dữ liệu, với nội dung bên trong nó có thể dễ dàng truy cập, quản lý, hay cập nhật.
Quản trị dữ liệu (data management)
Quản trị dữ liệu ý nghĩa khi chúng ta cần quản lý một lượng lớn thông tin, bao gồm cả việc tổ chức lưu trữ thông tin, và cung cấp cơ chế để thao tác, làm việc với thông tin hay là dữ liệu. Ngoài ra, hệ thống cũng phải đảm bảo an toàn của thông tin được lưu trữ trong các trường hợp khác nhau, chẳng hạn như cơ chế giới hạn quyền người có thể dùng truy cập, các dữ liệu cần được bảo mật, hay cơ chế lưu trữ password ….
Hệ thống dựa trên tệp tin (File-based system)
Kích thước của dữ liệu khi lưu trữ luôn là mối quan tâm lớn, trước đây, người ta sử dụng hệ thống tập tin (files) để lưu trữ dữ liệu, ( có thể xem lại bài viết làm việc với FILE trong ngôn ngữ C ). Trong hệ thống này, dữ liệu được lưu trữ trong các file rời rạc khác nhau, và tập hợp các files này được lưu trữ trong máy tính. Chúng có thể được truy vấn và tương tác dữ liệu từ hệ điều hành. Các file sử dụng để lưu trữ dữ liệu, thông thường người ta gọi là bảng (table), các dòng ở trên bảng này người ta gọi là bản ghi (records), và các cột gọi là trường (fields)
Trước khi các hệ thống quản trị cơ sở dữ liệu ra đời, người ta sử dụng các files để lưu trữ dữ liệu trong ứng dụng phần mềm.
Nhược điểm của File-based system
Trong một file-based system, các chương trình, tính năng khác nhau của một ứng dụng có tương tác với các file khác nhau để đáp ứng nghiệp vụ, nó không có hệ thống chuẩn hóa dữ liệu, hay thể hiện đươc cách thức tổ chức , cấu trúc của các file rời rạc này.
Dữ liệu dư thừa và không nhất quán (data redundancy and inconsistency)
Khi các tệp tin được chia ra để lưu trữ các dữ liệu riêng biệt, dữ liệu rời rạc sẽ dễ dàng dư thừa và không nhất quán. Xét ví dụ: một tính năng thêm/sửa/xóa/sắp xếp sinh viên thì tương tác với file đang lưu trữ danh sách sinh viên, một tính năng thêm/sửa/xóa/sắp xếp lớp học thì làm việc với file lưu trữ lớp học … , trong khi sinh viên là một đối tượng thuộc lớp học chẳng hạn sinh viên nguyễn văn A học lớp 1B -> vấn đề sẽ nảy sinh từ đây. Chúng ta sẽ phải bổ sung thêm một trường ở file lưu trữ data sinhvien để lưu trữ lớp sinh viên đó học, dựa theo dữ liệu lớp sẵn có. Một vài tình huống code sai, dữ liệu không chuẩn, ( chẳng hạn input lớp sinh viên học không đúng ) cũng sẽ dẫn tới tình huống vô lý ( lớp không có trong cơ sở dữ liệu hoặc đã bị xóa nhưng phía sinh viên vẫn có field thể hiện lớp đó …
Không lường trước được truy vấn (unanticipated queries)
Trong hệ thống file-based , những xử lý truy vấn đột ngột hoặc đặc biệt sẽ rất khó, nhất là khi có những thay đổi trong chương trình. Ví dụ, nhân viên ngân hàng phải tạo danh sách tất cả các khách hàng có số dư tài khoản từ 20000 đô la trở lên. Nhân viên ngân hàng có các lựa chọn: lấy danh sách tất cả khách hàng và trích xuất thông tin cần thiết theo cách thủ công, hoặc thuê một lập trình viên hệ thống để thiết kế chương trình ứng dụng cần thiết. Cả hai lựa chọn thay thế đều không đạt yêu cầu. Giả sử rằng một chương trình như vậy được viết ra, và vài ngày sau, nhân viên phải cắt bỏ danh sách đó để chỉ bao gồm những khách hàng đã mở tài khoản của họ một năm trước. Vì chương trình tạo danh sách như vậy không tồn tại nên dẫn đến khó khăn trong việc truy cập dữ liệu.
Dữ liệu bị cô lập data isolation
Dữ liệu nằm rải rác trong nhiều tệp khác nhau và tệp có thể ở định dạng khác. Mặc dù dữ liệu được sử dụng bởi các chương trình khác nhau trong ứng dụng nhưng có một số tình huống dữ liệu có thể có liên quan, chúng được lưu trữ dưới dạng tệp dữ liệu rải rác và không liên quan tới nhau.
Truy cập đồng thời bất thường (concurrent access anomalies)
Trong một hệ thống nhiều ngời dùng, file hoặc bản ghi có thể được truy cập bởi nhiều người dùng cùng lúc, việc này khiến hệ thống file-based xử lý khó khăn hơn.
Vấn đề bảo mật (security problem)
Trong doanh nghiệp hay tổ chức, việc bảo mật dữ liệu cũng là vấn đề lớn, dữ liệu nên được bảo mật và chỉ có thể truy cập vào khi đưojc cấp phép, file-based system không làm tốt vấn đề này.
Vấn đề toàn vẹn dữ liệu (Integrity problems)
Trong bất kỳ ứng dụng nào, cũng cần có quy tắc toàn vẹn dữ liệu nhất định, chúng cần được duy trì tính toàn vẹn này. Chúng có thể có các điều kiện hoặc ràng buộc nhất định đối với các phần tử hoặc bản ghi của dữ liệu. Với file-based system, điều này không làm được trên tầng dữ liệu vì bản chất, dữ liệu chỉ được lưu trữ bằng file, những thứ này chỉ có thể làm trên tầng code và rất phức tạp để tiếp tục maintain hoặc có sự thay đổi về tính năng khi dữ liệu ứng dụng ngày càng lớn.
Hệ thống cơ sở dữ liệu (Database system)
Hệ thống cơ sở dữ liệu được phát triển từ những năm 1960 để giải quyết những vấn đề trong phát triển ứng dụng khi xử lý và giải quyết dữ liệu lớn và chuyên sâu về dữ liệu hơn. Và cũng để giải quyết những vấn đề bắt nguồn từ những nhược điểm của hệ thống dựa trên tệp.
CSDL (Database) sử dụng để lưu trữ dữ liệu một cách hiệu quả và có tổ chức. Một CSDL cho phép quản trị dữ liệu một cách dễ dàng và nhanh chóng. Ví dụ: một công ty cần duy trì dữ liệu về thông tin nhân sự trong cơ sở dữ liệu, trong bất kì thời điểm nào, dữ liệu nên được dễ dàng truy vấn, thêm mới, hay tìm kiếm …
Nếu chỉ xét về mặt lưu trữ, ngay cả khi sử dụng các tệp thủ công đơn giản dữ liệu cũng đã có thể đáp ứng, chẳng hạn như trường đại học phải duy trì các thông tin về giáo viên, sinh viên, môn học, bài thi … Các thông tin này có thể được duy trì và lưu trữ ở các tập tin riêng, tuy nhiên, theo thời gian các files dữ liệu sẽ bị rác, tốn nhiều dung lượng lưu trữ, quản lý thêm sửa xóa rất khó nên không phù hợp lưu trữ dài hạn qua nhiều năm.
Thay vào đó, nếu sử dụng các dữ liệu đó lưu trữ vào một hệ thống CSDL, dữ liệu có thể lưu trữ dài hạn, dễ dàng truy vấn cập nhật hơn.
Ưu điểm của Database system
Dữ liệu hoặc thông tin được lưu trữ dài hạn theo tiêu chuẩn và được số hóa bằng hệ thống cơ sở dữ liệu. Database system có nhiều lợi thế vì cung cấp giải pháp lưu trữ dữ liệu tập trung (centralize)
Giảm bớt dữ liệu dư thừa (the amount of redundancy the stored data can be reduced)
Trong một tổ chức hoặc cơ quan, dữ liệu các phòng ban thường có cấu trúc giống nhau. Kết hợp một cơ sở dữ liệu tập trung giúp nhiều phòng ban có thể truy cập dữ liệu tương ứng với cùng một quy chuẩn, từ đó, có thể giảm thiểu việc trùng lặp dữ liệu hoặc dư thừa dữ liệu.
Dữ liệu nhất quán (consistency in data)
Khi dữ liệu bị trùng lặp ở các phòng ban khác nhau nếu sử dụng file-based sysstem, bất kì sửa đổi nào với dữ liệu sẽ có thể ảnh hưởng tới các dữ liệu liên quan, thỉnh thoảng sẽ dẫn tới sự không nhất quán trong dữ liệu vì cập nhật dữ liệu sẽ được tiến hành ở tầng code, khi dẽ liệu và mã nguồn trở nên phức tạp thì sẽ xảy ra vấn đề. Ở hệ cơ sở dữ liệu tập trung hay là CSDL chúng ta đang nói tới, hooàn toàn có thể cập nhật dữ liệu thờng xuyên, trong trường hợp này, chỉ một bản ghi đưojc cập nhật, và giảm thiểu vấn đề dữ liệu không nhất quán.
Dữ liệu được lưu trữ có thể chia sẻ ( The stored data can be shared)
CSDL có thể được đặt ở một máy chủ và có cơ chế để chia sẻ với các người dùng khác nhau khi được cấp quyền, bằng cách này,, người dùng có thể truy cập và cập nhật dữ liệu bất cứ khi nào.
Các tiêu chuẩn có thể được thiết lập và tuân thủ (standard can be set and followed)
Việc quản trị tập trung đảm bảo việc các tiêu chuẩn dữ liệu khi được biểu diễn có thể được thiết lập và tuân thủ. Ví dụ, thông thường để biểu diễn tên đầy đủ của người dùng sẽ bao gồm Mr. Toan Ngo Vinh (Họ và tên), như vậy sẽ chia ra 3 thành phần:
- Tiêu đề tên: Mr.
- Tên: Toan
- Họ và tên đệm: Ngo Vinh
Việc sử dụng CSDL sẽ đảm bảo được định dạng này khi lưu trữ dựa theo ý đồ của người thiết kế CSDL.
Tính toàn vẹn dữ liệu được đảm bảo (data integrity can be maintained)
Tính toàn vẹn dữ liệu ảnh hưởng tới sự chính xác của CSDL. Ví dụ: một nhân sự nghỉ việc ở một tổ chức, khi đó cơ sở dữ liệu nhân sự sẽ cần được cập nhật, thông tin của nhân sự vừa nghỉ việc và các dữ liệu liên quan sẽ nên được xóa khỏi cơ sở dữ liệu hoặc lưu trữ vào một vị trí nào khác nhằm lưu lại lịch sử nhân sự, những dữ liệu về công việc liên quan đến nhân sự này sẽ nên được chuyển sang cho nhân sự khác để công việc được tiếp tục tiến hành.
Cơ sở dữ liệu được lưu trữ tập trung sẽ giúp tránh các lỗi này. Với cơ chế của CSDL, dữ liệu chắc chắn sẽ được xóa khỏi bảng, và những liên kết với bản ghi này cũng sẽ được xóa hoặc cập nhật theo ý đồ người thiết kế.
Dữ liệu được bảo mật (security of data can be implemented)
Trong hệ thống CSDL tập trung, các đặc quyền (privilege) cập nhật dữ liệu cần được cấp phép. Cơ chế đúng là chỉ có một ngờời sẽ có toàn quyền kiểm soát toàn bộ CSDL. Người này được gọi là Database Administrator (DBA). DBA có thể triển khai cơ chế bảo mật bằng cách đặt ra các hạn chế của dữ liệu. Dựa vào sự cho phép của DBA, các người dùng được cấp quyền có thể được gán quyền thêm sửa xóa, truy vấn tới dữ liệu.
Hệ thống quản trị cơ sở dữ liệu (Database management system – DBMS)
DBMS có thể định nghĩa ra một danh sách các bản ghi liên quan và một tập hợp các chương trình có thể truy vấn và làm việc với các bản ghi này. DBMS cho phép người dùng có thể truy cập, lưu trữ, quản trị dữ liệu. Vấn đề chính ở các DBMS trước đây là dữ liệu được ghi trong filem vì vậy thông tin về các đối tượng khác nhau được duy trì ở các file vật lý khác nhau. Vì vậy, sự liên kết giữa các đối tượng duy trì ở các file riêng biệt, vì vậy sẽ dẫn đến tình huống quá nhiều tệp và nhiều chức năng để tích hợp chúng vào một hệ thống duy nhất.
Giải pháp cho các vấn đề này là chuẩn hóa dữ liệu vào một hệ CSDL tập trung. CSDL được lưu trữ ở duy nhất một nơi, các người dùng có thể truy cập vào dữ liệu được lưu trữ tại máy chủ thông qua thiết bị của riêng biệt.
Tóm lại, Database là một tập hợp danh sách các dữ liệu có liên quan đến nhau (interelated data), và DBMS là một hệ thống bao gồm tập hợp các chương trình sử dụng để thêm sửa xóa các dữ liệu này. Có thể hiểu, DBMS là một phần mềm bao gồm tập hợp các tính năng giúp định nghĩa cơ sở dữ liệu, khởi tạo và tương tác, làm việc với dữ liệu
DBMS cung cấp môi trường tiện lợi và hiệu quả để làm việc với một tập dữ liệu lớn & nhiều nghiệp vụ cập nhật tương tác. DBMS có thể đáp ứng từ hệ thống nhỏ chạy trên máy tính cá nhân cho tới một hệ thống máy tính lớn.
Một số ví dụ các ứng dụng DBMS có thể đáp ứng trong thực tế:
- Số hóa hệ thống thư viện
- Máy rút tiền tự động
- Hệ thống bán vé máy bay
- Hệ thống bán lẻ & sản xuất
- …
Ở góc độ kĩ thuật, các sản phẩm DBMS có nhiều sự khác biệt. DBMS hỗ trợ các ngôn ngữ truy vấn khác nhau, nhưng tựu chung lại chúng vẫn có một số điểm chung giúp các lập trình viên dễ dàng tiếp cận và chuyển đổi DBMS theo mong muốn, người ta gọi ngôn ngữ này là: ngôn ngữ truy vấn theo cấu trúc – Structured Query Language (SQL)
Ngôn ngữ để quản lý hệ thống cơ sở dữ liệu được gọi là Ngôn ngữ thế hệ thứ tư (4GL). Thông tin từ cơ sở dữ liệu có thể được trình bày dưới nhiều định dạng khác nhau. Hầu hết các DBMS đều bao gồm một chương trình viết báo cáo cho phép người dùng xuất dữ liệu dưới định dạng báo cáo. Nhiều DBMS cũng bao gồm thông tin đồ họa dưới dạng đồ thị và biểu đồ.
Không nhất thiết phải sử dụng DBMS cho mục đích chung để triển khai cơ sở dữ liệu. Người sử dụng có thể viết một bộ chương trình của riêng họ để khởi tạo và duy trì cơ sở dữ liệu, từ đó tạo ra cơ sở dữ liệu và DBMS có thể sử dụng để truy vấn, tương tác với dữ liệu, …. tùy vào mục đích của lập trình viên . Cơ sở dữ liệu và phần mềm cùng được gọi là hệ thống cơ sở dữ liệu.
Người dùng cuối truy cập vào hệ thống CSDL thông qua giao diện đồ hoạ của các ứng dụng mà bên trong nó truy vấn trực tiếp tới CSDL. DBMS cho phép người dùng có thể thực thi các truy vấn và lấy dữ liệu ra từ CSDL thông qua mã nguồn đằng sau phần mềm và chương trình đưa lại kết quả ra cho người dùng cuối.
Lợi ích của việc sử dụng DBMS
DBMS có trách nhiệm xử lý dữ liệu và chuyển đối chúng thành thông tin. Vì mục đích này, cơ sở dữ liệu phải được thao tác, bao gồm truy vấn cơ sở dữ liệu để truy xuất dữ liệu cụ thể, cập nhật cơ sở dữ liệu và tạo báo cáo.
Các báo cáo bao gồm các thông tin, đó là các dữ liệu đã được xử lý. DBMS cũng có trách nhiệm đảm bảo tính an toàn cũng như toàn vẹn dữ liệu.
Một số các lợi ích khi sử dụng DBMS:
Lưu trữ dữ liệu (Data storage)
Thông thường hầu hết các chương trình cần thiết kế để có thể lưu trữ được dữ liệu, vấn đề này đưojc được xử lý bởi DBMS, được thực hiện bằng cách tạo cấu trúc dữ liệu phức tạp và quá trình này được gọi là quản lý lưu trữ dữ liệu.
Định nghĩa dữ liệu (data definition)
DBMS cung cấp các tính năng để định nghĩa cấu trúc của dữ liệu trong ứng dụng. Chúng bao gồm việc định nghĩa và chỉnh sửa cấu trúc các bản ghi, kiểu dữ liệu và kích thước của các trường, các ràng buộc cũng như điều kiện cần thỏa mãn của dữ liệu mỗi trường.
Thao tác dữ liệu (Data manipulation)
Một khi cấu trúc dữ liệu được định nghĩa, dữ liệu cần phải có thể thêm, cập nhật, xóa được. Các tính năng này là một phần của DBMS. Các chức năng này có thể xử lý các yêu cầu thao tác dữ liệu có kế hoạch và ngoài kế hoạch. Các truy vấn có kế hoạch là những truy vấn từ tính năng của ứng dụng của ứng dụng. Các truy vấn không có kế hoạch là các truy vấn đặc biệt, được thực hiện và khi được yêu cầu.
Bảo mật và tính toàn vẹn dữ liệu (Data security and integrity)
Bảo mật dữ liệu là một trong những tính năng quan trọng nhất khi CSDL được sử dụng trong môi trường nhiều người dùng cùng truy cập. Việc kiểm tra quyền truy cập dữ liệu của người dùng là bắt buộc. CSDL sẽ xác định ra luật, người dùng nào có thể truy cập vào CSDL, các phần tử dữ liệu nào người dùng có thể truy cập vào, hay các hoạt động với dữ liệu mà người dùng có thể thực thi.
Dữ liệu trong CSDL nên chứa ít lỗi nhất có thể. Ví dụ: ID của sinh viên luôn luôn nên có giá trị, không nên để trống. Số điện thoại chỉ nên chứa các số …. những thứ này có thể được kiểm tra thông qua DBMS.
Khả năng khôi phục dữ liệu và truy vấn đồng thời (data recovery and concurrency)
Khôi phục dữ liệu khi hệ thống gặp lỗi và truy cập đồng thời các bản ghi bởi nhiều người dùng có thể dễ dàng xử lý bởi DBMS
Hiệu năng (performance)
Tối ưu hiệu năng của truy vấn là một trong những tính năng quan trọng của DBMS. Vì vậy, DBMS có một tập các chương trình giúp chuẩn hóa, tối ưu hiệu năng, hiểu nôm na là DBMS sẽ phỏng đoán các cách triển khai truy vấn khác nhau và chọn ra giải pháp tối ưu nhất để sử dụng.
Nhiều người dùng có thể truy cập (multi-user access control)
Trong bất kỳ thời điểm nào, nhiều người dùng có thể cùng truy cập vào cùng dữ liệu trene CSDL, DBMS sẽ chịu trách nhiệm chia sẻ dữ liệu cho nhiều người dùng khác nhau, giúp duy trì tính toàn vẹn dữ liệu
Ngôn ngữ truy cập CSDL và API
Ngôn ngữ truy vấn của DBMS triển khai giải pháp truy cập dữ liệu. SQL là ngôn ngữ truy vấn sử dụng phổ biến nhất. Một ngôn ngữ truy vấn là ngôn ngữ không có thủ tục (none-procedural language), ý nghĩa là người dùng truy vấn những gì những gì được mong muốn và không phải chỉ định cách thực hiện.
Ví dụ: Lấy một danh sách 10 sinh viên có điểm cao nhất trong CSDL sinh viên, với SQL, chưa nói về góc độ cú pháp, ý nghĩa câu lệnh sẽ đơn thuần là lấy cho tôi 10 sinh viên có điểm cao nhất sắp xếp từ cao xuống thấp, còn đối với các ngôn ngữ lập trình thủ tục, để làm việc này chúng ta cần làm tuần tự: lấy ra mảng sinh viên, sắp xếp bằng vòng lặp từ cao xuống thấp rồi mới lấy ra 10 phần tử đầu tiên.
Mô hình CSDL (Database Model)
Cơ sở dữ liệu có thể được phân biệt dựa trên các chức năng và mô hình dữ liệu. Mô hình dữ liệu mô tả một vùng chứa để lưu trữ dữ liệu và quá trình lưu trữ và truy xuất dữ liệu từ vùng chứa đó. Việc phân tích và thiết kế các mô hình dữ liệu là cơ sở của sự phát triển của cơ sở dữ liệu.
Mô hình dữ liệu file phẳng (Flat File Data Model)
Trong mô hình này, CSDL chỉ chứa duy nhất một bảng hoặc 1 file. Mô hình này sử dụng cho CSDL đơn giản. Ví dụ: muốn lưu trữ rollnumber, tên,môn học và điểm của một nhóm học sinh. Mô hình này không thể xử lý dữ liệu phức tạp. Mô hình này có thể là nguyên nhân của việc dư thừa dữ liệu, khi dữ liệu được lặp lại nhiều hơn một lần.
Mô hình dữ liệu phân tầng (hierarchical Data model)
Trong mô hình dữ liệu phân tầng, các bản ghi khác nhau có sự liên quan thông qua hệ thống phân tầng hoặc cấu trúc nhánh cây. Trong mô hình này, mối quan hệ thông qua các điều khoản hoặc cấu trúc cha – con. Nhưng cấu trúc con chỉ có duy nhất một cha. Để tìm kiếm dữ liệu trong mô hình này, người dùng bắt buộc phải hiểu về cấu trúc phân tầng của dữ liệu.
Windows Registry chính là ví dụ về cơ sở dữ liệu phân tầng, sử dụng để lưu trữ cấu hình và tùy chọn của hệ điều hành windows.
Ưu điểm của mô hình dữ liệu phân tầng
- Dữ liệu được lưu trữ trong CSDL, vì vậy việc chia sẻ sẽ trở nên dễ dàng, và tính năng bảo mật sẽ được cung cấp và thực thi bởi DBMS
- Dữ liệu độc lập được cung cấp bởi DBMS, giúp giảm nguồn lực và chi phí trong việc duy trì chương trình
Mô hình này vô cùng hiệu quả khi CSDL chứa một lượng dữ liệu lớn.
Mô hình dữ liệu mạng lưới (Network Data Model)
Mô hình này tương tự với mô hình phân tầng. Mô hình phân tầng thực chất là một tập hợp con của mô hình mạng lưới. Tuy nhiên, thay cho việc sử dụng phân tầng cây cha – con, mô hình mạng lưới sử dụng lý thuyết tập hợp để cung cấp một mô hình phân tầng với ngoại lệ là bảng con sẽ cho phép có thể có nhiều honw một cha.
Trong mô hình mạng lưới, dữ liệu được lưu trữ trong tập hợp, thay cho định dạng phân tầng. Điều này giải quyết được vấn đề dữ liệu dư thừa. Vì vậy, các bản ghi đưojc lên kết vật lý thông qua linked-lists.
Một số hãng phát triển mô hình dữ liệu mạng lưới:
https://en.wikipedia.org/wiki/IDMS
Mô hình mạng lưới cùng mô hình dữ liệu phân tầng từng là những mô hình dữ liệu chính để triển khai nhiều DBMS thương mại. Các cấu trúc mô hình mạng và cấu trúc ngôn ngữ đã được định nghĩa bởi Ủy ban Ngôn ngữ Hệ thống Dữ liệu Conference/Committee on Data Systems Languages (CODASYL)
Với mỗi CSDL, việc định nghĩa tên CSDL, kiểu bản ghi cho mỗi bản ghi và các thành phần tạo ra các bản ghi này đều được lưut rữ.Chúng gọi là network schema (lược đồ mạng lưới). Một phần của cơ sở dữ liệu được chương trình ứng dụng nhìn thấy thực ra đươc tạo từ thông tin mong muốn từ vùng chứa dữ liệu trong cơ sở dữ liệu được gọi là lược đồ con. Nó cho phép các chương trình ứng dụng truy cập dữ liệu được yêu cầu từ cơ sở dữ liệu.
Ưu điểm của mô hình dữ liệu mạng lưới:
Trong mô hình này, chúng ta có thể truy cập dữ liệu dễ dàng và ứng dụng cũng có thể truy cập bản ghi của chủ sở hữu và bản ghi thành viên trong một tập hợp. Mô hình mạng lưới không cho phép thành viên tồn tại mà không có chủ sở hữu dẫn đến việc đảm bảo toàn vẹn dữ liệu.
Nhược điểm mô hình dữ liệu mạng lưới:
Thiết kế hoặc cấu trúc của mô hình này không thân thiện với người dùng . Mô hình này không có bất kỳ phạm vi tối ưu hóa truy vấn tự động nào, hiệu năng truy vấn phụ thuộc nhiều vào kỹ năng, kinh nghiệm và giải thuật của lập trình viên. Mô hình này không đạt được sự độc lập về cấu trúc mặc dù mô hình cơ sở dữ liệu mạng có khả năng đạt được sự độc lập về dữ liệu.
Mô hình dữ liệu quan hệ (Related data model)
Do nhu cầu làm việc với thông tin ngày càng phát triển và độ phức tạp tăng dần khi phát triển ứng dụng làm việc với CSDL, việc thiết kế, quản trị và tương tác với dữ liệu trở nên ngày càng cồng kềnh. Thiếu cơ sở truy vấn khến lập trình viên sẽ mất rất nhiều thời gian để tạo ra các báo cáo dù là đơn giản nhất, điều này dẫn đến sự phát triển của khái niệm được gọi là cơ sở dữ liệu mô hình liên quan.
Thuật ngữ “quan hệ” (relation) có nguồn gốc từ lý thuyết tập hợp của toán học. Trong mô hình này, không giống mô hình phân tầng và mạng lưới, sẽ không có sự liên kết vật lý ( mô hình cây cha con được hiểu như sự liên kết) nào cả. Tất cả dữ lieuej đưojc lưu trỡ các một mẫu bảng (tables) bao gồm các hàng (rows) và cột (columns). Dữ liệu trong 2 bảng được liên kết với nhau thông qua các cột chung thay bằng liên kết vật lý (cha con). Lập trình viên sử dụng cú pháp hoặc phần mềm giao diện được cung cấp để làm việc với các hàng (rows) hay có thể gọi là bản ghi (records) trong bảng.
Các CSDL quan hệ nổi tiếng có thể kể tới là: Oracle (Mysql), Sybase,DB2, Posgres, Microsoft SQL Server …
Mô hình này biểu diễn CSDL như là một tập hợp các mối quan hệ. Trong thuật ngữ mô hình này, hàng còn có thể gọi là tuple (không dịch được xem wiki dễ hiểu hơn: https://en.wikipedia.org/wiki/Tuple, cột là thuộc tính (attribute), bảng gọi là relation( sự quan hệ). Danh sách các giá trị áp dụng vào các trường đợc gọi là domain (miền), số lượng các thuộc tính của mối quan hệ được gọi là mức độ của mối quan hệ. Số lượng các tuples (giá trị của các trường) xác định bản chất của mối quan hệ.
Lý thuyết là thế thôi anh em mình cứ nhớ thế này cho dễ hiểu:
- Một bảng (tables) được cấu tạo bao gồm của các hàng (rows) và cột (columns), giao điểm giữa hàng và cột là trường (fields), bảng này có thể mô tả các thông tin trong thực tế
- Mỗi hàng biểu diễn các bản ghi khác nhau , thường sẽ là thông tin của thực thể trong thực tế
- Cột sẽ biểu diễn các thuộc tính ( đặc tính) của vật thể
- Các bảng liên kết với nhau thông qua các cột chung
Ví dụ: 2 bảng để sử dụng để biểu diễn tính lương nhân sự đơn giản:
- bảng nhân sự bao gồm các trường biểu diễn (mã nhân sự,tên,tuổi,địa chỉ,mức lương)
- Bảng tính lương bao gồm các trường biểu diễn (mã bản ghi,mã nhân sự, ngày công,tháng, tổng lương)
- 2 bảng này liên kết với nhau thông qua cột mã nhân sự
Ưu điểm của mô hình dữ liệu quan hệ
Mô hình cơ sở dữ liệu quan hệ cho người lập trình thời gian để tập trung vào chế độ xem logic của cơ sở dữ liệu hơn là bận tâm về chế độ xem vật lý. Một trong những lý do cho sự linh hoạt. Hầu hết các cơ sở dữ liệu quan hệ sử dụng ngôn ngữ truy vấn có cấu trúc (SQL). RDBMS sử dụng SQL để dịch truy vấn của người dùng thành mã kỹ thuật cần thiết để truy xuất dữ liệu được yêu cầu. Mô hình quan hệ dễ xử lý đến nỗi ngay cả những người chưa được đào tạo cũng dễ dàng tạo ra các báo cáo và truy vấn tiện dụng, mà không cần đưa ra nhiều yêu cầu để thiết kế một cơ sở dữ liệu thích hợp.
disadvantages of relational model
- Mặc dù mô hình ẩn tất cả sự phức tạp của hệ thống, nó có xu hướng chậm hơn so với các hệ thống cơ sở dữ liệu khác
- So với tất cả các mô hình khác, mô hình dữ liệu quan hệ là phổ biến nhất và được sử dụng rộng rãi
Hệ thống cơ sở dữ liệu quan hệ (Related database management system)
Mô hình quan hệ là một nỗ lực để đơn giản hóa cấu trúc cơ sở dữ liệu. Nó phản hồi tất cả dữ liệu trong cơ sở dữ liệu dưới dạng các bảng giá trị dữ liệu theo hàng-màu đơn giản. RDBMS là một chương trình phần mềm giúp tạo, duy trì và thao tác cơ sở dữ liệu quan hệ. Cơ sở dữ liệu quan hệ là cơ sở dữ liệu được chia thành các đơn vị logic được gọi là bảng, trong đó các bảng có liên quan với nhau trong cơ sở dữ liệu.
Bảng có liên quan trong cơ sở dữ liệu quan hệ, cho phép truy xuất dữ liệu đầy đủ trong một truy vấn duy nhất (thay thế dữ liệu mong muốn có thể tồn tại trong nhiều bảng). Bằng cách có các khóa hoặc trường chung, giữa các bảng cơ sở dữ liệu quan hệ, dữ liệu từ nhiều bảng có thể được kết hợp với nhau từ một tập kết quả lớn
Thus, a relational database is database structured on the relational model, the basic characteristic of a relational model is that in a realtional model, data is tored in relations.
Các đặc tính điều khoản của RDBMS
- dữ liệu được trình bày dưới dạng tập hợp các quan hệ.
- Mỗi mối quan hệ được mô tả như một bảng
- Các cột là thuộc tính
- Các hàng biểu diễn thực thể
- Mỗi bảng có một tập hợp các thuộc tính được lấy cùng nhau làm khóa, xác định tính duy nhất cho mỗi thực thể (bản ghi).
Điều khoản | Ý nghĩa |
Relation | bảng |
Tuple | hàng hoặc bản ghi trong bảng |
Attribute | Trường hoặc cột trong bảng |
Cardinality of a relation (Số phần tử của bảng/relation) | Số lượng các bản ghi trong bảng |
Degree of relation | Số lượng các thuộc tính của bảng |
Domain of an attribute | tập hợp tất cả các giá trị có thể được sử dụng bởi thuộc tính |
Primary key of a relation (khóa chính) | Một thuộc tính hoặc kết hợp các thuộc tính xác định tính duy nhất từng bộ trong một mối quan hệ (bảng) |
Foreign Key (khóa ngoại) | Một thuộc tính hoặc kết hợp các thuộc tính để xác định sự liên hệ giữa các bảng |
Người dùng RDBMS
Mục tiêu chính của hệ thống cơ sở dữ liệu là cung cấp một môi trường để lấy thông tin từ CSDL ra và lưu trữ thông tin mới vào cơ sở dữ liệu
Đối với một cơ sở dữ liệu cá nhân nhỏ, một người thường xác định các cấu trúc và thao tác với cơ sở dữ liệu
Tuy nhiên, RDBMS có cung cấp tính năng giúp nhiều người dùng cùng tham gia vào việc thiết kế, sử dụng và bảo trì một cơ sở dữ liệu lớn.
Thực thể và bảng ( Entities and Tables)
Khái niệm Entity (thực thể)
Có thể hinh dung chúng là vật thể ngoài đời thực như người, địa điểm, sự vật, đối tượng hay đơn thuần là một ý tưởng, sẽ được xác định rõ ràng. Ví dụ, thực thể trong một trường học có thể là sinh viên, giáo viên, nhân sự đào tạo, môn học …
Mỗi thực thể chưacs các đặc điểm riêng biệt gọi là thuộc tính ( attributes ). Ví dụ, thực thể student có thể bao gồm các thuộc tính như student id, tên, điểm số… Mỗi thuộc tính có một tên gọi thích hợp để mô tả.
Một nhóm các thực thể có liên quan với nhau được gọi là một tập thực thể. Mỗi thực thể có một tên riêng biệt, tên của thực thể sẽ phản ánh nội dung, dữ liệu nó lưu trữ. Vì vậy, các thuộc tính của tất cả sinh viên của trường học được lưu trữ ở đối tượng có tên student
Bảng và các đặc tính của chúng (Table and their characteristics)
Việc truy cập và thao tác dữ liệu được tạo điều kiện thuận lợi bằng cách tạo ra các mối quan hệ dữ liệu dựa trên một cấu trúc được gọi là bảng. Bảng chứa các nhóm thực thể liên quan, là tập thực thể. Người ta dùng bảng làm tên gọi để thay thế cho thực thể. Bảng là relation, hàng là tuples, cột là attributes.
Các đặc tính của bảng tuân theo các tiêu chí:
- Là một cấu trúc 2 chiều bao gồm các hàng và cột được coi là một bảng.
- Mỗi tuple đại diện cho một thực thể bên trong tập thực thể.
- Mỗi cột có một tên xác định.
- Mỗi giao điểm của hàng/cột biểu diễn một giá trị dữ liệu riêng biệt.
- Mỗi một bảng luôn phải có một key (primary key – khóa chính) để xác định tính duy nhất cho mỗi hàng.
- Tất cả các giá trị trong cột cần được chuẩn hóa với cùng định dạng dữ liệu. Ví dụ, nếu thuộc tính được gán định dạng dữ liệu là số nguyên, tất cả giá trị cột đó luôn luôn biểu diễn theo số nguyên.
- Mỗi cột có một vùng giá trị xác định được gọi là miền thuộc tính (attribute domain).
- Mỗi hàng chứa thông tin mô tả đầy đủ của một thực thể
- Thứ tự của các hàng và cột là không quan trọng trong DBMS
Khác biệt giữa DBMS và RDBMS
DBMS | RDBMS |
Không yêu cầu phải có dữ liệu trong cấu trúc dạng bảng cũng như không bắt buộc các mối quan hệ dạng bảng giữa các mục dữ liệu | Trong một RDBMS, cấu trúc bảng là điều bắt buộc và các mối quan hệ bảng cho phép người dùng áp dụng và quản lý các quy tắc nghiệp vụ và giảm thiểu công việc cũng như độ phức tạp khi viết code. |
Dữ liệu có thể được lưu trữ và truy xuất với kích thước nhỏ | Dữ liệu có thể được lưu trữ và truy xuất với kích thớc lớn |
Bảo mật kém hơn | Bảo mật cao hơn |
Hệ thống một người dùng | Hệ thống nhiều người dùng |
Hầu hết DBMS không hỗ trợ kiến trúc client/server | Hỗ trợ kiến trúc client/server |
Trong một RDBMS, một mối quan hệ được coi trọng hơn. Do đó, các bảng trong RDBMS phụ thuộc và người dùng có thể thiết lập các ràng buộc toàn vẹn khác nhau trên các bảng này để dữ liệu cuối cùng được người dùng sử dụng vẫn chính xác. Trong trường hợp của một DBMS, các đối tượng được coi trọng hơn và không có mối quan hệ nào được ổn định giữa các thực thể này.
Ở bài viết này, hi vọng các bạn hiểu được sự khác biệt và lịch sử phát triển của CSDL tới thời điểm hiện nay. Nếu bài viết có thiếu sót, hãy góp ý phía dưới để team cập nhật, và đừng ngần ngại có câu hỏi, chúc các bạn học tốt !
Bài tập
- Mô tả lại cá kiểu của CSDL vừa được nhắc ở trên
- Diễn tả lại ưu nhược điểm của mỗi kiểu CSDL theo cách hiểu của bản thân