Thứ năm, 16/07/2020 | 00:00 GMT+7

Tìm hiểu về database quan hệ - DBMS

Hệ quản trị database (DBMS) là các chương trình máy tính cho phép user tương tác với database . DBMS cho phép user kiểm soát quyền truy cập vào database , ghi dữ liệu, chạy truy vấn và thực hiện bất kỳ tác vụ nào khác liên quan đến quản lý database .

Tuy nhiên, để thực hiện bất kỳ nhiệm vụ nào trong số này, DBMS phải có một số loại mô hình cơ bản xác định cách dữ liệu được tổ chức. Mô hình quan hệ là một cách tiếp cận để tổ chức dữ liệu đã được sử dụng rộng rãi trong phần mềm database kể từ khi nó được phát minh lần đầu tiên vào cuối những năm 1960, đến nỗi, cho đến thời điểm viết bài này, bốn trong số năm DBMS phổ biến nhất là quan hệ.

Bài báo khái niệm này phác thảo lịch sử của mô hình quan hệ, cách database quan hệ tổ chức dữ liệu và cách chúng được sử dụng ngày nay.

Lịch sử của mô hình quan hệ

Database là các cụm thông tin hoặc dữ liệu được mô hình hóa một cách logic. Bất kỳ bộ sưu tập dữ liệu nào cũng là một database , dù nó được lưu trữ như thế nào hoặc ở đâu. Ngay cả một tủ tài liệu chứa thông tin về bảng lương cũng là một database , cũng như một chồng các biểu mẫu bệnh nhân trong bệnh viện, hoặc một bộ sưu tập thông tin khách hàng của công ty trải rộng trên nhiều địa điểm. Trước khi lưu trữ và quản lý dữ liệu bằng máy tính là thông lệ, các database vật lý như thế này là những database duy nhất dành cho các tổ chức chính phủ và doanh nghiệp cần lưu trữ thông tin.

Vào khoảng giữa thế kỷ 20, sự phát triển của khoa học máy tính đã dẫn đến những cỗ máy có sức mạnh xử lý cao hơn, cũng như khả năng lưu trữ local và bên ngoài lớn hơn. Những tiến bộ này đã khiến các nhà khoa học máy tính bắt đầu nhận ra tiềm năng mà những cỗ máy này có để lưu trữ và quản lý lượng dữ liệu lớn hơn bao giờ hết.

Tuy nhiên, không có bất kỳ lý thuyết nào về cách máy tính có thể tổ chức dữ liệu theo những cách hợp lý và có ý nghĩa. Lưu trữ dữ liệu chưa được phân loại trên máy là một việc, nhưng phức tạp hơn nhiều khi thiết kế các hệ thống cho phép bạn thêm, truy xuất, sắp xếp và quản lý dữ liệu đó theo những cách nhất quán, thiết thực. Nhu cầu về một khuôn khổ hợp lý để lưu trữ và tổ chức dữ liệu đã dẫn đến một số đề xuất về cách khai thác máy tính để quản lý dữ liệu.

Một mô hình database ban đầu là mô hình phân cấp , trong đó dữ liệu được tổ chức theo cấu trúc dạng cây, tương tự như các hệ thống file ngày nay. Ví dụ sau cho thấy cách bố trí của một phần database phân cấp được sử dụng để phân loại động vật có thể trông như thế nào:

Ví dụ về  Database  phân cấp: Phân loại động vật

Mô hình phân cấp đã được triển khai rộng rãi trong các hệ quản trị database ban đầu, nhưng nó cũng tỏ ra hơi thiếu linh hoạt. Trong mô hình này, mặc dù các bản ghi riêng lẻ có thể có nhiều “con”, mỗi bản ghi chỉ có thể có một “cha” trong hệ thống phân cấp. Do đó, các database phân cấp trước đây chỉ giới hạn trong việc biểu thị các mối quan hệ “một-một” và “một-nhiều”. Việc thiếu mối quan hệ “nhiều-nhiều” này có thể dẫn đến các vấn đề khi bạn đang làm việc với các điểm dữ liệu mà bạn muốn liên kết với nhiều phụ huynh.

Vào cuối những năm 1960, Edgar F. Codd, một nhà khoa học máy tính làm việc tại IBM, đã phát minh ra mô hình quản lý database quan hệ. Mô hình quan hệ của Codd cho phép các bản ghi riêng lẻ được liên kết với nhiều bảng, do đó cho phép các mối quan hệ “nhiều-nhiều” giữa các điểm dữ liệu ngoài mối quan hệ “một-nhiều”.Điều này cung cấp tính linh hoạt hơn so với các mô hình hiện có khác khi thiết kế cấu trúc database và nghĩa là các hệ thống quản lý database quan hệ (RDBMS) có thể đáp ứng nhiều nhu cầu kinh doanh hơn.

Codd đã đề xuất một ngôn ngữ để quản lý dữ liệu quan hệ, được gọi là Alpha , có ảnh hưởng đến sự phát triển của các ngôn ngữ database sau này. Hai đồng nghiệp của Codd tại IBM, Donald Chamberlin và Raymond Boyce, đã tạo ra một ngôn ngữ lấy cảm hứng từ Alpha. Họ gọi ngôn ngữ của họ là SEQUEL , viết tắt của S tructured E nglish Que ry L anguage, nhưng vì nhãn hiệu hiện có nên họ đã rút ngắn tên ngôn ngữ của họ thành SQL (được gọi chính thức hơn là Ngôn ngữ truy vấn có cấu trúc ).

Do những hạn chế về phần cứng, database quan hệ ban đầu vẫn rất chậm và phải mất một thời gian trước khi công nghệ này trở nên phổ biến. Nhưng đến giữa những năm 1980, mô hình quan hệ của Codd đã được triển khai trong một số sản phẩm quản lý database thương mại của cả IBM và các đối thủ cạnh tranh của nó. Các nhà cung cấp này cũng đi theo sự dẫn đầu của IBM bằng cách phát triển và triển khai các phương ngữ SQL của riêng họ. Đến năm 1987, cả Viện Tiêu chuẩn Quốc gia USA và Tổ chức Tiêu chuẩn hóa Quốc tế đã phê chuẩn và xuất bản các tiêu chuẩn cho SQL, củng cố địa vị của nó như là ngôn ngữ được chấp nhận để quản lý RDBMS.

Việc sử dụng rộng rãi mô hình quan hệ trong nhiều ngành đã dẫn đến việc nó được công nhận là mô hình tiêu chuẩn để quản lý dữ liệu. Ngay cả với sự gia tăng của nhiều cơ sở dữ liệu NoSQL trong những năm gần đây, database quan hệ vẫn là công cụ thống trị để lưu trữ và tổ chức dữ liệu.

Cách database quan hệ tổ chức dữ liệu

Đến đây bạn đã hiểu chung về lịch sử của mô hình quan hệ, ta hãy xem xét kỹ hơn cách mô hình tổ chức dữ liệu.

Các yếu tố cơ bản nhất trong mô hình quan hệ là các quan hệ , mà user và các RDBMS hiện đại nhận ra dưới dạng bảng . Mối quan hệ là một tập hợp các bộ giá trị hoặc các hàng trong một bảng, với mỗi bộ giá trị chia sẻ một tập hợp các thuộc tính hoặc các cột:

Ví dụ về sơ đồ về cách quan hệ, bộ giá trị và thuộc tính liên quan với nhau

Cột là cấu trúc tổ chức nhỏ nhất của database quan hệ và đại diện cho các khía cạnh khác nhau xác định các bản ghi trong bảng. Do đó tên, thuộc tính chính thức hơn của chúng. Bạn có thể coi mỗi bộ giá trị như một thể hiện duy nhất của bất kỳ kiểu người, đối tượng, sự kiện hoặc liên kết nào mà bảng đang nắm giữ. Những trường hợp này có thể là những thứ như nhân viên tại một công ty, doanh số bán hàng từ một doanh nghiệp trực tuyến hoặc kết quả kiểm tra trong phòng thí nghiệm. Ví dụ: trong một bảng lưu trữ profile nhân viên của giáo viên tại một trường học, các bộ giá trị có thể có các thuộc tính như name , subjects , start_date , v.v.

Khi tạo cột, bạn chỉ định kiểu dữ liệu chỉ định loại mục nhập nào được phép trong cột đó. Các RDBMS thường triển khai các kiểu dữ liệu duy nhất của riêng chúng, các kiểu dữ liệu này có thể không được swap trực tiếp với các kiểu dữ liệu tương tự trong các hệ thống khác. Một số kiểu dữ liệu phổ biến bao gồm ngày, chuỗi, số nguyên và Boolean.

Trong mô hình quan hệ, mỗi bảng chứa ít nhất một cột được dùng để xác định duy nhất mỗi hàng, được gọi là khóa chính . Điều này rất quan trọng, bởi vì nó nghĩa là user không cần biết dữ liệu của họ được lưu trữ trên máy ở đâu; thay vào đó, DBMS của họ có thể theo dõi từng bản ghi và trả lại chúng trên cơ sở đột xuất.Ngược lại, điều này nghĩa là các bản ghi không có thứ tự logic xác định và user có khả năng trả lại dữ liệu của họ theo bất kỳ thứ tự nào hoặc thông qua bất kỳ bộ lọc nào họ muốn.

Nếu bạn có hai bảng mà bạn muốn liên kết với nhau, một cách bạn có thể làm là sử dụng khóa ngoại . Khóa ngoại về cơ bản là bản sao của khóa chính của một bảng (bảng “cha”) được chèn vào một cột trong bảng khác (“con”). Ví dụ sau đây nêu bật mối quan hệ giữa hai bảng, một bảng dùng để ghi thông tin về nhân viên tại một công ty và một bảng khác dùng để theo dõi doanh số bán hàng của công ty. Trong ví dụ này, khóa chính của bảng EMPLOYEES được sử dụng làm foreign keys của bảng SALES :

Sơ đồ ví dụ về cách khóa chính của bảng EMPLOYEE hoạt động như foreign keys  của bảng SALES

Nếu bạn cố gắng thêm bản ghi vào bảng con và giá trị được nhập vào cột foreign keys không tồn tại trong khóa chính của bảng mẹ, thì câu lệnh chèn sẽ không hợp lệ. Điều này giúp duy trì tính toàn vẹn ở cấp độ mối quan hệ, vì các hàng trong cả hai bảng sẽ luôn có liên quan chính xác với nhau.

Các phần tử cấu trúc của mô hình quan hệ giúp giữ cho dữ liệu được lưu trữ một cách có tổ chức, nhưng việc lưu trữ dữ liệu chỉ hữu ích nếu bạn có thể truy xuất nó. Để truy xuất thông tin từ RDBMS, bạn có thể đưa ra một truy vấn hoặc một yêu cầu có cấu trúc cho một tập hợp thông tin. Như đã đề cập trước đây, hầu hết các database quan hệ sử dụng SQL để quản lý và truy vấn dữ liệu. SQL cho phép bạn lọc và thao tác các kết quả truy vấn với nhiều mệnh đề, vị từ và biểu thức, cho phép bạn kiểm soát tốt dữ liệu nào sẽ xuất hiện trong tập kết quả.

Ưu điểm và Hạn chế của Database Quan hệ

Với cấu trúc tổ chức cơ bản của database quan hệ, ta hãy xem xét một số ưu điểm và nhược điểm của chúng.

Ngày nay, cả SQL và database triển khai nó đều đi chệch khỏi mô hình quan hệ của Codd theo một số cách. Ví dụ: mô hình của Codd ra lệnh rằng mỗi hàng trong bảng phải là duy nhất, trong khi vì lý do thực tế, hầu hết các database quan hệ hiện đại cho phép các hàng trùng lặp. Có một số người không coi database SQL là database quan hệ thực sự nếu chúng không tuân theo từng đặc tả của Codd cho mô hình quan hệ. Tuy nhiên, về mặt thực tế, bất kỳ DBMS nào sử dụng SQL và ít nhất là tuân theo mô hình quan hệ nào đó đều có thể được gọi là hệ quản trị database quan hệ.

Mặc dù database quan hệ nhanh chóng trở nên phổ biến, một vài thiếu sót của mô hình quan hệ bắt đầu trở nên rõ ràng khi dữ liệu trở nên có giá trị hơn và các doanh nghiệp bắt đầu lưu trữ nhiều hơn. Thứ nhất, có thể khó mở rộng database quan hệ theo chiều ngang. Chia tỷ lệ theo chiều ngang , hoặc mở rộng quy mô , là thực hành thêm nhiều máy hơn vào một ngăn xếp hiện có để phân bổ tải và cho phép nhiều lưu lượng truy cập hơn và xử lý nhanh hơn. Điều này thường trái ngược với việc mở rộng quy mô dọc , liên quan đến việc nâng cấp phần cứng của một server hiện có, thường là bằng cách thêm nhiều RAM hoặc CPU.

Lý do khó mở rộng database quan hệ theo chiều ngang là do mô hình quan hệ được thiết kế đảm bảo tính nhất quán , nghĩa là các client truy vấn cùng một database sẽ luôn truy xuất cùng một dữ liệu. Nếu bạn chia tỷ lệ database quan hệ theo chiều ngang trên nhiều máy, sẽ khó đảm bảo tính nhất quán vì client có thể ghi dữ liệu vào một nút chứ không phải các node khác. Có thể sẽ có độ trễ giữa lần ghi ban đầu và thời điểm các node khác được cập nhật để phản ánh các thay đổi, dẫn đến sự không nhất quán giữa chúng.

Một hạn chế khác được trình bày bởi các RDBMS là mô hình quan hệ được thiết kế để quản lý dữ liệu có cấu trúc hoặc dữ liệu phù hợp với kiểu dữ liệu được định nghĩa hoặc ít nhất được tổ chức theo một số cách xác định trước, làm cho nó có thể sắp xếp và tìm kiếm dễ dàng. Tuy nhiên, với sự phổ biến của máy tính cá nhân và sự gia tăng của Internet vào đầu những năm 1990, dữ liệu phi cấu trúc - chẳng hạn như email, ảnh, video, v.v. - trở nên phổ biến hơn.

Điều này không nghĩa là database quan hệ không hữu ích. Ngược lại, mô hình quan hệ vẫn là khuôn khổ thống trị để quản lý dữ liệu sau hơn 40 năm. Sự phổ biến và tuổi thọ của chúng nghĩa là database quan hệ là một công nghệ trưởng thành, bản thân nó là một trong những lợi thế chính của chúng. Có nhiều ứng dụng được thiết kế để làm việc với mô hình quan hệ, cũng như nhiều administrator database nghề nghiệp là những chuyên gia khi nói đến database quan hệ. Ngoài ra còn có một loạt các tài nguyên có sẵn trong bản in và trực tuyến cho những người muốn bắt đầu với database quan hệ.

Một ưu điểm khác của database quan hệ là hầu hết mọi RDBMS đều hỗ trợ các giao dịch . Một giao dịch bao gồm một hoặc nhiều câu lệnh SQL riêng lẻ được thực hiện theo trình tự như một đơn vị công việc. Các giao dịch trình bày một cách tiếp cận tất cả hoặc không có gì, nghĩa là mọi câu lệnh SQL trong giao dịch phải hợp lệ; nếu không, toàn bộ giao dịch sẽ thất bại. Điều này rất hữu ích đảm bảo tính toàn vẹn của dữ liệu khi thực hiện thay đổi đối với nhiều hàng hoặc bảng.

Cuối cùng, database quan hệ cực kỳ linh hoạt. Chúng đã được sử dụng để xây dựng nhiều loại ứng dụng khác nhau và tiếp tục hoạt động hiệu quả ngay cả với lượng dữ liệu rất lớn. SQL cũng cực kỳ mạnh mẽ, cho phép bạn thêm và thay đổi dữ liệu một cách nhanh chóng, cũng như thay đổi cấu trúc của các schemas và bảng database mà không ảnh hưởng đến dữ liệu hiện có.

Kết luận

Nhờ tính linh hoạt và thiết kế đảm bảo tính toàn vẹn dữ liệu, database quan hệ vẫn là cách dữ liệu chính được quản lý và lưu trữ hơn 50 năm sau khi chúng được hình thành lần đầu tiên. Ngay cả với sự gia tăng của các database NoSQL khác nhau trong những năm gần đây, việc hiểu mô hình quan hệ và cách làm việc với RDBMS là key cho bất kỳ ai muốn xây dựng các ứng dụng khai thác sức mạnh của dữ liệu.

Để tìm hiểu thêm về một số RDBMS nguồn mở phổ biến, ta khuyến khích bạn kiểm tra so sánh về các database SQL quan hệ nguồn mở khác nhau . Nếu bạn muốn tìm hiểu thêm về database nói chung, ta khuyến khích bạn xem thư viện hoàn chỉnh về nội dung liên quan đến database .


Tags:

Các tin liên quan