# Cơ sở dữ liệu

Một ví dụ về lấy dữ liệu đầu ra từ truy vấn cơ sở dữ liệu SQL.
**Cơ sở dữ liệu** (tiếng Anh: *Database*) là một tập hợp các dữ liệu có tổ chức liên quan đến nhau, thường được lưu trữ và truy cập điện tử từ hệ thống máy tính. Khi cơ sở dữ liệu phức tạp hơn, chúng thường được phát triển bằng cách sử dụng các kỹ thuật thiết kế và mô hình hóa chính thức.

Về mặt vật lý, máy chủ cơ sở dữ liệu là các máy tính chuyên dụng chứa cơ sở dữ liệu thực tế và chỉ chạy Database Management System (DBMS) và phần mềm liên quan. Các máy chủ cơ sở dữ liệu thường là các máy tính đa bộ xử lý, với bộ nhớ hào phóng và mảng đĩa RAID được sử dụng để lưu trữ ổn định. RAID được sử dụng để phục hồi dữ liệu nếu bất kỳ đĩa nào bị lỗi. Bộ tăng tốc cơ sở dữ liệu phần cứng, được kết nối với một hoặc nhiều máy chủ thông qua kênh tốc độ cao, cũng được sử dụng trong môi trường xử lý giao dịch khối lượng lớn. DBMS được tìm thấy ở trung tâm của hầu hết các ứng dụng cơ sở dữ liệu. Các DBMS có thể được xây dựng xung quanh một hạt nhân đa nhiệm tùy chỉnh có hỗ trợ mạng tích hợp, nhưng các DBMS hiện đại thường dựa vào một hệ điều hành tiêu chuẩn để cung cấp các chức năng này.

Vì các DBMS là một thị trường quan trọng, các nhà cung cấp máy tính và lưu trữ thường tính đến các yêu cầu DBMS trong các kế hoạch phát triển của riêng họ.

Cơ sở dữ liệu và các DBMS có thể được phân loại theo mô hình cơ sở dữ liệu mà chúng hỗ trợ (như quan hệ hoặc XML), loại máy tính mà chúng chạy trên (từ cụm máy chủ đến điện thoại di động), ngôn ngữ truy vấn (QL) được sử dụng để truy cập cơ sở dữ liệu (như SQL hoặc XQuery) và kỹ thuật nội bộ của chúng, ảnh hưởng đến hiệu suất, khả năng mở rộng, khả năng phục hồi và bảo mật.

## Lịch sử

Các kích thước, khả năng và hiệu suất của cơ sở dữ liệu và DBMS tương ứng của chúng đã tăng theo thứ tự độ lớn. Những sự gia tăng hiệu suất này được kích hoạt bởi sự tiến bộ công nghệ trong các lĩnh vực của bộ xử lý, bộ nhớ máy tính, lưu trữ máy tính và mạng máy tính. Sự phát triển của công nghệ cơ sở dữ liệu có thể được chia thành ba thời đại dựa trên mô hình hoặc cấu trúc dữ liệu: hướng đối tượng, SQL / quan hệ và hậu quan hệ.

Hai mô hình dữ liệu hướng đối tượng ban đầu chính là mô hình phân cấp và mô hình CODASYL (mô hình mạng).

Mô hình quan hệ, lần đầu tiên được Edgar F. Codd đề xuất vào năm 1970, đã thoát ly khỏi truyền thống này bằng cách nhấn mạnh rằng các ứng dụng nên tìm kiếm dữ liệu theo nội dung, thay vì theo các liên kết. Mô hình quan hệ sử dụng các tập hợp các bảng kiểu sổ cái, mỗi bảng được sử dụng cho một loại thực thể khác nhau. Chỉ vào giữa những năm 1980, phần cứng máy tính đã trở nên đủ mạnh để cho phép triển khai rộng rãi các hệ thống quan hệ (DBMS cộng với các ứng dụng). Tuy nhiên, vào đầu những năm 1990, các hệ thống quan hệ chiếm ưu thế trong tất cả các ứng dụng xử lý dữ liệu quy mô lớn và Tính đến năm 2018 chúng vẫn chiếm ưu thế: IBM DB2, Oracle, MySQL và Microsoft SQL Server là DBMS được tìm kiếm nhiều nhất. Ngôn ngữ cơ sở dữ liệu thống trị, SQL được tiêu chuẩn hóa cho mô hình quan hệ, đã ảnh hưởng đến các ngôn ngữ cơ sở dữ liệu cho các mô hình dữ liệu khác. Cơ sở dữ liệu đối tượng được phát triển vào những năm 1980 để khắc phục sự bất tiện của sự không phù hợp trở kháng quan hệ đối tượng, dẫn đến việc đặt ra thuật ngữ "hậu quan hệ" và cũng là sự phát triển của cơ sở dữ liệu quan hệ đối tượng lai.

Thế hệ cơ sở dữ liệu hậu quan hệ tiếp theo vào cuối những năm 2000 được gọi là cơ sở dữ liệu NoQuery, giới thiệu các kho lưu trữ khóa giá trị nhanh và cơ sở dữ liệu định hướng tài liệu. Một "thế hệ tiếp theo" cạnh tranh được gọi là cơ sở dữ liệu NewQuery đã thử triển khai các mô hình mới giữ lại mô hình quan hệ / SQL trong khi hướng đến việc phù hợp với hiệu suất cao của NoQuery so với các DBMS quan hệ có sẵn trên thị trường.

### Những năm 1960, DBMS hướng đối tượng

 Cấu trúc cơ bản của mô hình cơ sở dữ liệu CODASYL hướng đối tượng
Sự ra đời của thuật ngữ *cơ sở dữ liệu* trùng khớp với sự sẵn có của bộ lưu trữ truy cập trực tiếp (đĩa và trống) từ giữa những năm 1960 trở đi. Thuật ngữ này thể hiện sự tương phản với các hệ thống dựa trên băng từ trước đây, cho phép sử dụng tương tác được chia sẻ thay vì xử lý hàng ngày. Từ điển tiếng Anh Oxford trích dẫn một báo cáo năm 1962 của Tập đoàn phát triển hệ thống California là người đầu tiên sử dụng thuật ngữ "cơ sở dữ liệu" theo nghĩa kỹ thuật cụ thể.

Khi máy tính tăng trưởng về tốc độ và khả năng, một số hệ thống cơ sở dữ liệu đa năng đã xuất hiện; vào giữa những năm 1960, một số hệ thống như vậy đã được đưa vào sử dụng thương mại. Sự quan tâm đến một tiêu chuẩn bắt đầu tăng lên và Charles Bachman, tác giả của một sản phẩm như vậy, Kho dữ liệu tích hợp (IDS), đã thành lập "Nhóm nhiệm vụ cơ sở dữ liệu" trong CODASYL, nhóm chịu trách nhiệm tạo và chuẩn hóa COBOL. Năm 1971, Nhóm Nhiệm vụ Cơ sở dữ liệu đã đưa ra tiêu chuẩn của họ, thường được gọi là "phương pháp CODASYL", và ngay sau đó, một số sản phẩm thương mại dựa trên phương pháp này đã được đưa vào thị trường.

Cách tiếp cận CODASYL dựa trên hướng đối tượng "thủ công" của tập dữ liệu được liên kết được tạo thành một mạng lớn. Các ứng dụng có thể tìm thấy các bản ghi theo một trong ba phương pháp:

1. Sử dụng khóa chính (được gọi là khóa CALC, thường được thực hiện bằng cách băm)
2. hướng đối tượng các mối quan hệ (được gọi là bộ) từ bản ghi này sang bản ghi khác
3. Quét tất cả các hồ sơ theo thứ tự liên tiếp

Các hệ thống sau này đã thêm cây B để cung cấp các đường dẫn truy cập thay thế. Nhiều cơ sở dữ liệu CODASYL cũng đã thêm một ngôn ngữ truy vấn rất đơn giản. Tuy nhiên, trong lần kiểm tra cuối cùng, CODASYL rất phức tạp và cần được đào tạo và nỗ lực đáng kể để tạo ra các ứng dụng hữu ích.

IBM cũng có DBMS của riêng họ vào năm 1966, được gọi là Hệ thống quản lý thông tin (IMS). IMS là sự phát triển của phần mềm được viết cho chương trình Apollo trên System/360. IMS nói chung tương tự khái niệm với CODASYL, nhưng đã sử dụng một hệ thống phân cấp chặt chẽ cho mô hình hướng đối tượng dữ liệu thay vì mô hình mạng của CODASYL. Cả hai khái niệm này sau đó được gọi là cơ sở dữ liệu hướng đối tượng do cách truy cập dữ liệu và bài thuyết trình Turing Award năm 1973 của Bachman là *The Programmer as Navigator*. IMS được phân loại như một cơ sở dữ liệu phân cấp. Cơ sở dữ liệu TOTAL của IDMS và Cincom Systems được phân loại là cơ sở dữ liệu mạng. IMS vẫn được sử dụng Tính đến năm 2014.

### Những năm 1970, DBMS quan hệ

Edgar Codd làm việc tại IBM ở San Jose, California, tại một trong những văn phòng của họ, chủ yếu liên quan đến việc phát triển các hệ thống đĩa cứng. Ông không hài lòng với mô hình hướng đối tượng của phương pháp CODASYL, đáng chú ý là thiếu cơ sở "tìm kiếm". Năm 1970, ông đã viết một số bài báo phác thảo một cách tiếp cận mới để xây dựng cơ sở dữ liệu mà cuối cùng đã đạt đến đỉnh cao trong bài *A Relational Model of Data for Large Shared Data Banks*.

Trong bài báo này, ông đã mô tả một hệ thống mới để lưu trữ và làm việc với các cơ sở dữ liệu lớn. Thay vì các bản ghi được lưu trữ trong một số loại danh sách các bản ghi dạng tự do được liên kết như trong CODASYL, ý tưởng của Codd là sử dụng " bảng " các bản ghi có độ dài cố định, với mỗi bảng được sử dụng cho một loại thực thể khác nhau. Một hệ thống danh sách liên kết sẽ rất kém hiệu quả khi lưu trữ cơ sở dữ liệu "thưa thớt" trong đó một số dữ liệu cho bất kỳ một bản ghi nào có thể bị bỏ trống. Mô hình quan hệ đã giải quyết điều này bằng cách chia dữ liệu thành một loạt các bảng (hoặc *quan hệ*) được chuẩn hóa, với các phần tử tùy chọn được chuyển ra khỏi bảng chính đến nơi chúng chỉ chiếm phòng nếu cần. Dữ liệu có thể được chèn, xóa và chỉnh sửa tự do trong các bảng này, với DBMS thực hiện bất kỳ bảo trì nào cần thiết để hiển thị chế độ xem bảng cho ứng dụng / người dùng.

 Trong mô hình quan hệ, các bản ghi được "liên kết" bằng các khóa ảo không được lưu trữ trong cơ sở dữ liệu nhưng được xác định là cần thiết giữa các dữ liệu có trong các bản ghi.
Mô hình quan hệ cũng cho phép nội dung của cơ sở dữ liệu phát triển mà không cần viết lại liên kết và con trỏ. Phần quan hệ xuất phát từ các thực thể tham chiếu các thực thể khác trong mối quan hệ được gọi là mối quan hệ một-nhiều, như mô hình phân cấp truyền thống và mối quan hệ nhiều-nhiều, như mô hình hướng đối tượng (mạng). Do đó, một mô hình quan hệ có thể biểu thị cả mô hình phân cấp và hướng đối tượng, cũng như mô hình bảng gốc của nó, cho phép mô hình thuần túy hoặc kết hợp theo ba mô hình này, như ứng dụng yêu cầu.

Ví dụ, việc sử dụng phổ biến hệ thống cơ sở dữ liệu là theo dõi thông tin về người dùng, tên, thông tin đăng nhập, địa chỉ và số điện thoại khác nhau. Theo cách tiếp cận hướng đối tượng, tất cả các dữ liệu này sẽ được đặt trong một bản ghi và các mục không sử dụng sẽ không được đặt trong cơ sở dữ liệu. Theo cách tiếp cận quan hệ, dữ liệu sẽ được *chuẩn hóa* thành bảng người dùng, bảng địa chỉ và bảng số điện thoại (ví dụ). Bản ghi sẽ được tạo trong các bảng tùy chọn này chỉ khi địa chỉ hoặc số điện thoại thực sự được cung cấp.

Liên kết thông tin lại với nhau là chìa khóa cho hệ thống này. Trong mô hình quan hệ, một số thông tin được sử dụng làm "khóa", xác định duy nhất một bản ghi cụ thể. Khi thông tin được thu thập về người dùng, thông tin được lưu trữ trong các bảng tùy chọn sẽ được tìm thấy bằng cách tìm kiếm khóa này. Chẳng hạn, nếu tên đăng nhập của người dùng là duy nhất, địa chỉ và số điện thoại của người dùng đó sẽ được ghi lại với tên đăng nhập làm khóa. Việc "liên kết lại" các dữ liệu liên quan trở lại thành một bộ sưu tập đơn giản là điều mà các ngôn ngữ máy tính truyền thống không được thiết kế cho.

Giống như cách tiếp cận hướng đối tượng sẽ yêu cầu các chương trình lặp để thu thập các bản ghi, phương pháp quan hệ sẽ yêu cầu các vòng lặp để thu thập thông tin về bất kỳ *một* bản ghi nào. Các đề xuất của Codd là một ngôn ngữ được định hướng theo tập hợp, sau này sẽ sinh ra SQL phổ biến. Sử dụng một nhánh toán học được gọi là tính toán tuple, ông đã chứng minh rằng một hệ thống như vậy có thể hỗ trợ tất cả các hoạt động của cơ sở dữ liệu thông thường (chèn, cập nhật, v.v.) cũng như cung cấp một hệ thống đơn giản để tìm và trả về *các tập hợp* dữ liệu trong một thao tác.

Bài báo của Codd đã được hai người tại Berkeley, Eugene Wong và Michael Stonebraker chú ý. Họ đã bắt đầu một dự án được gọi là INGRES bằng cách sử dụng nguồn vốn đã được phân bổ cho một dự án cơ sở dữ liệu địa lý và các lập trình viên sinh viên để tạo mã. Bắt đầu từ năm 1973, INGRES đã cung cấp các sản phẩm thử nghiệm đầu tiên thường sẵn sàng để sử dụng rộng rãi vào năm 1979. INGRES tương tự như System R theo một số cách, bao gồm cả việc sử dụng "ngôn ngữ" để truy cập dữ liệu, được gọi là QUEL. Theo thời gian, INGRES chuyển sang tiêu chuẩn SQL mới nổi.

Bản thân IBM đã thực hiện một thử nghiệm thực hiện mô hình quan hệ, PRTV và một mô hình sản xuất, Business System 12, cả hai đều đã ngừng hoạt động. Honeywell đã viết MRDS cho Multics, và bây giờ có hai triển khai mới: Alphora Dataphor và Rel. Hầu hết các triển khai DBMS khác thường được gọi là *quan hệ* thực sự là các DBMS SQL.

Năm 1970, Đại học Michigan đã bắt đầu phát triển Hệ thống quản lý thông tin MICRO dựa trên mô hình Dữ liệu lý thuyết tập hợp của DL Childs. MICRO đã được sử dụng để quản lý các tập dữ liệu rất lớn bởi Bộ Lao động Mỹ, Cục Bảo vệ Môi trường Mỹ, và các nhà nghiên cứu từ Đại học Alberta, trường Đại học Michigan, và trường Đại học Wayne State. Nó chạy trên các máy tính lớn của IBM sử dụng Hệ thống đầu cuối Michigan. Hệ thống vẫn được sử dụng cho đến năm 1998.

### Phương pháp tích hợp

Trong những năm 1970 và 1980, các nỗ lực đã được thực hiện để xây dựng các hệ thống cơ sở dữ liệu với phần cứng và phần mềm tích hợp. Triết lý cơ bản là sự tích hợp như vậy sẽ cung cấp hiệu suất cao hơn với chi phí thấp hơn. Ví dụ là IBM System / 38, việc cung cấp Teradata sớm và máy cơ sở dữ liệu Britton Lee, Inc.

Một cách tiếp cận khác để hỗ trợ phần cứng cho quản lý cơ sở dữ liệu là bộ tăng tốc CAFS của ICL, bộ điều khiển đĩa phần cứng với khả năng tìm kiếm được lập trình. Về lâu dài, những nỗ lực này thường không thành công vì các máy cơ sở dữ liệu chuyên dụng không thể theo kịp sự phát triển và tiến bộ nhanh chóng của các máy tính đa năng. Do đó, hầu hết các hệ thống cơ sở dữ liệu hiện nay là các hệ thống phần mềm chạy trên phần cứng đa năng, sử dụng lưu trữ dữ liệu máy tính đa năng. Tuy nhiên, ý tưởng này vẫn được một số công ty như Netezza và Oracle (Exadata) theo đuổi.

### Cuối những năm 1970, SQL DBMS

IBM bắt đầu làm việc trên một hệ thống nguyên mẫu dựa trên các khái niệm của Codd là *System R* vào đầu những năm 1970. Phiên bản đầu tiên đã sẵn sàng vào năm 1974/5 và sau đó bắt đầu hoạt động trên các hệ thống nhiều bảng trong đó dữ liệu có thể được phân tách để tất cả dữ liệu cho một bản ghi (một số trong đó là tùy chọn) không phải được lưu trữ trong một "chunk" lớn. Các phiên bản đa người dùng sau đó đã được khách hàng thử nghiệm vào năm 1978 và 1979, vào thời điểm đó, một ngôn ngữ truy vấn được tiêu chuẩn hóa - SQL  - đã được thêm vào. Các ý tưởng của Codd đã tự thiết lập cả khả thi và vượt trội so với CODASYL, thúc đẩy IBM phát triển một phiên bản sản xuất thực sự của System R, được gọi là *SQL/DS*, và sau đó là *Database 2* (DB2).

Cơ sở dữ liệu Oracle của Larry Ellison (hay đơn giản hơn là Oracle) bắt đầu từ một chuỗi khác, dựa trên các tài liệu của IBM về Hệ thống R. Mặc dù việc triển khai Oracle V1 đã được hoàn thành vào năm 1978, nhưng mãi đến khi Oracle Phiên bản 2 đánh bại IBM trên thị trường vào năm 1979.

Stonoplker tiếp tục áp dụng các bài học từ INGRES để phát triển cơ sở dữ liệu mới, Postgres, hiện được gọi là PostgreQuery. PostgreSQL thường được sử dụng cho các ứng dụng quan trọng toàn cầu (các cơ quan đăng ký tên miền.org và.info sử dụng nó làm kho lưu trữ dữ liệu chính của họ, cũng như nhiều công ty lớn và tổ chức tài chính).

Ở Thụy Điển, bài báo của Codd cũng được đọc và Mimer SQL được phát triển từ giữa những năm 1970 tại Đại học Uppsala. Năm 1984, dự án này được hợp nhất thành một doanh nghiệp độc lập.

Một mô hình dữ liệu khác, mô hình quan hệ thực thể, xuất hiện vào năm 1976 và đã trở nên phổ biến cho thiết kế cơ sở dữ liệu vì nó nhấn mạnh một mô tả quen thuộc hơn so với mô hình quan hệ trước đó. Sau đó, các cấu trúc mối quan hệ thực thể được trang bị thêm như một cấu trúc mô hình dữ liệu cho mô hình quan hệ và sự khác biệt giữa hai cấu trúc đã trở nên không liên quan.

### Những năm 1980, trên máy tính để bàn

Những năm 1980 mở ra thời đại của máy tính để bàn. Các máy tính mới trao quyền cho người dùng của họ với các bảng tính như Lotus 1-2-3 và phần mềm cơ sở dữ liệu như dBASE. Sản phẩm dBASE rất nhẹ và dễ dàng cho bất kỳ người dùng máy tính nào hiểu được. C. Wayne Ratliff, người tạo ra dBASE, đã tuyên bố: "dBASE khác với các chương trình như BASIC, C, FORTRAN và COBOL ở chỗ rất nhiều công việc bẩn thỉu đã được thực hiện. Thao tác dữ liệu được thực hiện bởi dBASE thay vì người dùng, vì vậy người dùng có thể tập trung vào những gì anh ta đang làm, thay vì phải làm rối với các chi tiết bẩn của việc mở, đọc và đóng tệp và quản lý phân bổ không gian. " dBASE là một trong những phần mềm bán chạy hàng đầu trong những năm 1980 và đầu những năm 1990.

### Những năm 1990, hướng đối tượng

Những năm 1990, cùng với sự gia tăng trong lập trình hướng đối tượng, đã chứng kiến sự tăng trưởng về cách xử lý dữ liệu trong các cơ sở dữ liệu khác nhau. Các lập trình viên và nhà thiết kế bắt đầu coi dữ liệu trong cơ sở dữ liệu của họ là đối tượng. Điều đó có nghĩa là nếu dữ liệu của một người nằm trong cơ sở dữ liệu, các thuộc tính của người đó, như địa chỉ, số điện thoại và tuổi của họ, giờ đây được coi là thuộc về người đó thay vì dữ liệu không liên quan. Điều này cho phép các mối quan hệ giữa dữ liệu là quan hệ với các đối tượng và thuộc tính của chúng chứ không phải cho các trường riêng lẻ. Thuật ngữ " không khớp trở kháng quan hệ đối tượng " đã mô tả sự bất tiện của việc dịch giữa các đối tượng được lập trình và các bảng cơ sở dữ liệu. Cơ sở dữ liệu đối tượng và cơ sở dữ liệu quan hệ đối tượng cố gắng giải quyết vấn đề này bằng cách cung cấp ngôn ngữ hướng đối tượng (đôi khi là phần mở rộng cho SQL) mà các lập trình viên có thể sử dụng thay thế cho SQL hoàn toàn quan hệ. Về phía lập trình, các thư viện được gọi là ánh xạ quan hệ đối tượng (ORM) cố gắng giải quyết vấn đề tương tự.

### Những năm 2000, NoSQL và NewSQL

Cơ sở dữ liệu XML là một loại cơ sở dữ liệu hướng tài liệu có cấu trúc, cho phép truy vấn dựa trên các thuộc tính tài liệu XML. Cơ sở dữ liệu XML chủ yếu được sử dụng trong các ứng dụng mà dữ liệu được xem thuận tiện dưới dạng tập hợp tài liệu, với cấu trúc có thể thay đổi từ rất linh hoạt đến rất cứng nhắc: ví dụ bao gồm các bài báo khoa học, bằng sáng chế, hồ sơ thuế và hồ sơ nhân sự.

Cơ sở dữ liệu NoSQL thường rất nhanh, không yêu cầu lược đồ bảng cố định, tránh các hoạt động tham gia bằng cách lưu trữ dữ liệu không chuẩn hóa và được thiết kế để mở rộng theo chiều ngang.

Trong những năm gần đây, có nhu cầu lớn về cơ sở dữ liệu phân tán ồ ạt với dung sai phân vùng cao, nhưng theo định lý CAP, hệ thống phân tán không thể đồng thời cung cấp sự đảm bảo tính nhất quán, tính sẵn sàng và phân vùng. Một hệ thống phân tán có thể đáp ứng bất kỳ hai trong số các bảo đảm này cùng một lúc, nhưng không phải cả ba. Vì lý do đó, nhiều cơ sở dữ liệu NoSQL đang sử dụng cái được gọi là tính nhất quán cuối cùng để cung cấp cả đảm bảo dung sai phân vùng và tính sẵn sàng với mức độ thống nhất dữ liệu giảm.

NewSQL là một lớp cơ sở dữ liệu quan hệ hiện đại nhằm cung cấp hiệu năng có thể mở rộng tương tự của các hệ thống NoQuery để xử lý khối lượng công việc xử lý giao dịch trực tuyến (đọc-ghi) trong khi vẫn sử dụng SQL và duy trì bảo đảm ACID của hệ thống cơ sở dữ liệu truyền thống.

## Trường hợp sử dụng

Cơ sở dữ liệu được sử dụng để hỗ trợ các hoạt động nội bộ của các tổ chức và để củng cố các tương tác trực tuyến với khách hàng và nhà cung cấp (xem phần mềm Doanh nghiệp).

Cơ sở dữ liệu được sử dụng để chứa thông tin quản trị và dữ liệu chuyên ngành hơn, chẳng hạn như dữ liệu kỹ thuật hoặc mô hình kinh tế. Ví dụ bao gồm hệ thống thư viện máy tính, hệ thống đặt chỗ chuyến bay, hệ thống kiểm kê bộ phận máy tính và nhiều hệ thống quản lý nội dung lưu trữ các trang web dưới dạng bộ sưu tập các trang web trong cơ sở dữ liệu.

## Phân loại

Một cách để phân loại cơ sở dữ liệu liên quan đến loại nội dung của chúng, ví dụ: thư mục, tài liệu văn bản, thống kê hoặc đối tượng đa phương tiện. Một cách khác là theo lĩnh vực ứng dụng của họ, ví dụ: kế toán, sáng tác nhạc, phim ảnh, ngân hàng, sản xuất hoặc bảo hiểm. Cách thứ ba là theo một số khía cạnh kỹ thuật, chẳng hạn như cấu trúc cơ sở dữ liệu hoặc loại giao diện. Phần này liệt kê một số tính từ được sử dụng để mô tả các loại cơ sở dữ liệu khác nhau.

* Cơ sở dữ liệu trong bộ nhớ là cơ sở dữ liệu chủ yếu nằm trong bộ nhớ chính, nhưng thường được sao lưu bằng bộ lưu trữ dữ liệu máy tính không biến động. Cơ sở dữ liệu bộ nhớ chính nhanh hơn cơ sở dữ liệu đĩa và do đó thường được sử dụng trong đó thời gian đáp ứng là rất quan trọng, chẳng hạn như trong thiết bị mạng viễn thông.
* Một cơ sở dữ liệu hoạt động bao gồm một kiến trúc hướng sự kiện có thể đáp ứng các điều kiện cả bên trong và bên ngoài cơ sở dữ liệu. Sử dụng có thể bao gồm giám sát an ninh, cảnh báo, thu thập số liệu và ủy quyền. Nhiều cơ sở dữ liệu cung cấp các tính năng cơ sở dữ liệu hoạt động dưới dạng kích hoạt cơ sở dữ liệu.
* Một cơ sở dữ liệu đám mây dựa trên công nghệ đám mây. Cả cơ sở dữ liệu và hầu hết DBMS của nó đều nằm từ xa, "trong đám mây", trong khi các ứng dụng của nó được phát triển bởi các lập trình viên và sau đó được người dùng cuối duy trì và sử dụng thông qua trình duyệt web và API mở.
* Kho dữ liệu lưu trữ dữ liệu từ cơ sở dữ liệu hoạt động và thường từ các nguồn bên ngoài như các công ty nghiên cứu thị trường. Kho trở thành nguồn dữ liệu trung tâm để sử dụng bởi các nhà quản lý và người dùng cuối khác, những người có thể không có quyền truy cập vào dữ liệu vận hành. Ví dụ: dữ liệu bán hàng có thể được tổng hợp thành tổng số hàng tuần và được chuyển đổi từ mã sản phẩm nội bộ sang sử dụng UPC để có thể so sánh chúng với dữ liệu ACNielsen. Một số thành phần cơ bản và thiết yếu của kho dữ liệu bao gồm trích xuất, phân tích và khai thác dữ liệu, chuyển đổi, tải và quản lý dữ liệu để làm cho chúng có sẵn để sử dụng tiếp.
* Một cơ sở dữ liệu suy diễn kết hợp lập trình logic với cơ sở dữ liệu quan hệ.
* Cơ sở dữ liệu phân tán là một cơ sở dữ liệu trong đó cả dữ liệu và DBMS trải rộng trên nhiều máy tính.
* Cơ sở dữ liệu hướng tài liệu được thiết kế để lưu trữ, truy xuất và quản lý thông tin theo định hướng tài liệu hoặc bán cấu trúc. Cơ sở dữ liệu định hướng tài liệu là một trong những loại chính của cơ sở dữ liệu NoQuery.
* Hệ thống cơ sở dữ liệu nhúng là một DBMS được tích hợp chặt chẽ với một phần mềm ứng dụng yêu cầu quyền truy cập vào dữ liệu được lưu trữ theo cách mà DBMS bị ẩn khỏi người dùng cuối của ứng dụng và không cần bảo trì liên tục.
* Cơ sở dữ liệu người dùng cuối bao gồm dữ liệu được phát triển bởi từng người dùng cuối. Ví dụ về những thứ này là bộ sưu tập tài liệu, bảng tính, bản trình bày, đa phương tiện và các tệp khác. Một số sản phẩm tồn tại để hỗ trợ cơ sở dữ liệu như vậy. Một số trong số chúng đơn giản hơn nhiều so với DBMS chính thức, với chức năng DBMS cơ bản hơn.
* Một hệ thống cơ sở dữ liệu được liên kết bao gồm một số cơ sở dữ liệu riêng biệt, mỗi cơ sở có DBMS riêng. Nó được xử lý như một cơ sở dữ liệu bởi một hệ thống quản lý cơ sở dữ liệu được liên kết (FDBMS), tích hợp trong suốt nhiều DBMS tự trị, có thể thuộc các loại khác nhau (trong trường hợp đó cũng là một hệ thống cơ sở dữ liệu không đồng nhất) và cung cấp cho chúng một chế độ xem khái niệm tích hợp.
* Đôi khi thuật ngữ *đa cơ sở dữ liệu* được sử dụng như một từ đồng nghĩa với cơ sở dữ liệu được liên kết, mặc dù nó có thể đề cập đến một nhóm ít tích hợp (ví dụ, không có FDBMS và một lược đồ tích hợp được quản lý) hợp tác trong một ứng dụng. Trong trường hợp này, phần mềm trung gian thường được sử dụng để phân phối, thường bao gồm giao thức cam kết nguyên tử (ACP), ví dụ: giao thức cam kết hai pha, để cho phép các giao dịch phân tán (toàn cầu) trên cơ sở dữ liệu tham gia.
* Cơ sở dữ liệu đồ thị là một loại cơ sở dữ liệu NoQuery sử dụng các cấu trúc biểu đồ với các nút, cạnh và thuộc tính để thể hiện và lưu trữ thông tin. Cơ sở dữ liệu đồ thị chung có thể lưu trữ bất kỳ biểu đồ nào khác với cơ sở dữ liệu đồ thị chuyên dụng như bộ ba và cơ sở dữ liệu mạng.
* DBMS mảng là một loại DBMS NoQuery cho phép mô hình hóa, lưu trữ và truy xuất các mảng đa chiều (thường là lớn) như hình ảnh vệ tinh và đầu ra mô phỏng khí hậu.
* Trong một siêu văn bản hoặc hypermedia cơ sở dữ liệu, bất kỳ từ hoặc một đoạn văn bản thể hiện một đối tượng, ví dụ, một đoạn văn bản, một bài báo, một bức tranh, hay một bộ phim, có thể được siêu liên kết để đối tượng đó. Cơ sở dữ liệu siêu văn bản đặc biệt hữu ích để tổ chức một lượng lớn thông tin khác nhau. Ví dụ, chúng rất hữu ích để tổ chức bách khoa toàn thư trực tuyến, nơi người dùng có thể thuận tiện nhảy xung quanh văn bản. Do đó, World Wide Web là một cơ sở dữ liệu siêu văn bản phân tán lớn.
* Cơ sở tri thức (viết tắt **KB**, **kb** hoặc ) là một loại cơ sở dữ liệu đặc biệt để quản lý kiến thức, cung cấp phương tiện cho việc thu thập, tổ chức và thu thập kiến thức trên máy vi tính. Tương tự là một bộ sưu tập dữ liệu đại diện cho các vấn đề với các giải pháp và kinh nghiệm liên quan của họ.
* Một cơ sở dữ liệu di động có thể được tiến hành hoặc đồng bộ hóa từ một thiết bị điện toán di động.
* Cơ sở dữ liệu hoạt động lưu trữ dữ liệu chi tiết về hoạt động của một tổ chức. Họ thường xử lý khối lượng cập nhật tương đối cao bằng các giao dịch. Ví dụ bao gồm cơ sở dữ liệu khách hàng ghi lại thông tin liên hệ, tín dụng và thông tin nhân khẩu học về khách hàng của doanh nghiệp, cơ sở dữ liệu nhân sự chứa thông tin như tiền lương, lợi ích, dữ liệu kỹ năng về nhân viên, hệ thống hoạch định nguồn lực doanh nghiệp ghi lại chi tiết về thành phần sản phẩm, kiểm kê bộ phận và tài chính cơ sở dữ liệu theo dõi tiền, kế toán và giao dịch tài chính của tổ chức.
* Một cơ sở dữ liệu song song tìm cách cải thiện hiệu suất thông qua việc song song hóa các tác vụ như tải dữ liệu, xây dựng chỉ mục và đánh giá các truy vấn.

Các kiến trúc DBMS song song chính được tạo ra bởi kiến trúc phần cứng cơ bản là:
* **Kiến trúc bộ nhớ dùng chung**, nơi nhiều bộ xử lý chia sẻ không gian bộ nhớ chính, cũng như lưu trữ dữ liệu khác.
* **Kiến trúc đĩa chia sẻ**, trong đó mỗi đơn vị xử lý (thường bao gồm nhiều bộ xử lý) có bộ nhớ chính, nhưng tất cả các đơn vị chia sẻ bộ lưu trữ khác.
* **Kiến trúc không chia sẻ**, trong đó mỗi đơn vị xử lý có bộ nhớ chính và bộ lưu trữ khác.

* Cơ sở dữ liệu xác suất sử dụng logic mờ để rút ra các kết luận từ dữ liệu không chính xác.
* Cơ sở dữ liệu thời gian thực xử lý các giao dịch đủ nhanh để kết quả quay trở lại và được xử lý ngay lập tức.
* Một cơ sở dữ liệu không gian có thể lưu trữ dữ liệu với các tính năng đa chiều. Các truy vấn trên dữ liệu đó bao gồm các truy vấn dựa trên vị trí, như "Khách sạn gần nhất ở đâu trong khu vực của tôi?".
* Cơ sở dữ liệu tạm thời có các khía cạnh thời gian tích hợp, ví dụ mô hình dữ liệu tạm thời và phiên bản tạm thời của SQL. Cụ thể hơn, các khía cạnh thời gian thường bao gồm thời gian hợp lệ và thời gian giao dịch.
* Cơ sở dữ liệu định hướng thuật ngữ xây dựng trên cơ sở dữ liệu hướng đối tượng, thường được tùy chỉnh cho một trường cụ thể.
* Một cơ sở dữ liệu phi cấu trúc được dự định để lưu trữ theo cách có thể quản lý và bảo vệ các đối tượng đa dạng không phù hợp tự nhiên và thuận tiện trong các cơ sở dữ liệu chung. Nó có thể bao gồm email, tài liệu, tạp chí, đối tượng đa phương tiện, v.v. Tên có thể gây hiểu nhầm vì một số đối tượng có thể có cấu trúc cao. Tuy nhiên, toàn bộ bộ sưu tập đối tượng có thể không phù hợp với khung cấu trúc được xác định trước. Hầu hết các DBMS được thiết lập hiện nay đều hỗ trợ dữ liệu phi cấu trúc theo nhiều cách khác nhau và các DBMS chuyên dụng mới đang xuất hiện.

## Tương tác cơ sở dữ liệu

### Hệ quản trị cơ sở dữ liệu

Hệ quản trị cơ sở dữ liệu (Database Management System - DBMS) là một hệ thống phần mềm được sử dụng để quản lý và tổ chức cơ sở dữ liệu. Nó cung cấp một giao diện giữa cơ sở dữ liệu và người dùng hoặc các ứng dụng để thực hiện các hoạt động như tạo, sửa đổi, truy vấn và xóa dữ liệu.

Từ viết tắt DBMS đôi khi được mở rộng để chỉ ra mô hình cơ sở dữ liệu cơ bản, với RDBMS cho mô hình quan hệ, OODBMS hoặc ORDBMS cho mô hình đối tượng (định hướng) và ORDBMS cho Quan hệ đối tượng. Các phần mở rộng khác có thể chỉ ra một số đặc điểm khác, chẳng hạn như DDBMS cho hệ thống quản lý cơ sở dữ liệu phân tán.

Các chức năng được cung cấp bởi một DBMS có thể rất khác nhau. Chức năng cốt lõi là lưu trữ, truy xuất và cập nhật dữ liệu. Codd đề xuất các chức năng và dịch vụ sau đây, DBMS có mục đích chung được cung cấp đầy đủ:

* Lưu trữ, truy xuất và cập nhật dữ liệu
* Danh mục người dùng có thể truy cập hoặc từ điển dữ liệu mô tả siêu dữ liệu
* Hỗ trợ giao dịch và đồng thời
* Các cơ sở phục hồi cơ sở dữ liệu nên bị hỏng
* Hỗ trợ ủy quyền truy cập và cập nhật dữ liệu
* Hỗ trợ truy cập từ các địa điểm từ xa
* Thực thi các ràng buộc để đảm bảo dữ liệu trong cơ sở dữ liệu tuân thủ các quy tắc nhất định

Nhìn chung, DBMS sẽ cung cấp một bộ các tiện ích cho các mục đích như vậy có thể cần thiết để quản trị cơ sở dữ liệu một cách hiệu quả, bao gồm các tiện ích nhập, xuất, giám sát, phân mảnh và phân tích. Phần cốt lõi của DBMS tương tác giữa cơ sở dữ liệu và giao diện ứng dụng đôi khi được gọi là công cụ cơ sở dữ liệu.

Thông thường các DBMS sẽ có các tham số cấu hình có thể được điều chỉnh tĩnh và động, ví dụ: lượng bộ nhớ chính tối đa trên máy chủ mà cơ sở dữ liệu có thể sử dụng. Xu hướng là giảm thiểu số lượng cấu hình thủ công và đối với các trường hợp như cơ sở dữ liệu nhúng, nhu cầu nhắm mục tiêu quản trị tự động là tối quan trọng.

Các DBMS doanh nghiệp lớn có xu hướng tăng kích thước và chức năng và có thể liên quan đến hàng ngàn năm nỗ lực phát triển của con người trong suốt cuộc đời của họ.

DBMS nhiều người dùng sớm thường chỉ cho phép ứng dụng cư trú trên cùng một máy tính có quyền truy cập thông qua thiết bị đầu cuối hoặc phần mềm mô phỏng thiết bị đầu cuối. Kiến trúc máy chủ của máy khách là một sự phát triển trong đó ứng dụng nằm trên màn hình máy khách và cơ sở dữ liệu trên máy chủ cho phép xử lý được phân phối. Điều này phát triển thành một kiến trúc đa nhiệm kết hợp các máy chủ ứng dụng và máy chủ web với giao diện người dùng cuối thông qua trình duyệt web với cơ sở dữ liệu chỉ được kết nối trực tiếp với tầng liền kề.

DBMS có mục đích chung sẽ cung cấp các giao diện lập trình ứng dụng công cộng (API) và tùy chọn bộ xử lý cho các ngôn ngữ cơ sở dữ liệu như SQL để cho phép các ứng dụng được viết để tương tác với cơ sở dữ liệu. DBMS có mục đích đặc biệt có thể sử dụng API riêng và được tùy chỉnh và liên kết cụ thể với một ứng dụng. Ví dụ, một hệ thống email thực hiện nhiều chức năng của DBMS có mục đích chung như chèn tin nhắn, xóa tin nhắn, xử lý tệp đính kèm, tra cứu danh sách chặn, liên kết tin nhắn một địa chỉ email, v.v..

Một số thành tựu của Hệ quản trị cơ sở dữ liệu (DBMS):

1. Hệ quản trị cơ sở dữ liệu đã giúp giảm thiểu sự phức tạp của việc quản lý dữ liệu. Trước khi có các hệ quản trị cơ sở dữ liệu, dữ liệu thường được lưu trữ trong các tập tin riêng lẻ và việc truy xuất thông tin từ các tập tin này rất khó khăn và tốn nhiều thời gian.
2. Hệ quản trị cơ sở dữ liệu đã cung cấp phương pháp tổ chức dữ liệu hiệu quả hơn. Nhờ có Hệ quản trị cơ sở dữ liệu, dữ liệu có thể được tổ chức dưới dạng các bảng, quan hệ và các mối quan hệ giữa các bảng này được xác định rõ ràng. Điều này giúp giảm thiểu sự lặp lại dữ liệu và tăng tính rõ ràng và dễ dùng của dữ liệu.
3. Hệ quản trị cơ sở dữ liệu đã tạo ra các ngôn ngữ truy vấn mạnh mẽ để truy xuất và chỉnh sửa dữ liệu. Một số ngôn ngữ truy vấn phổ biến bao gồm SQL (Structured Query Language) và các biểu thức đại số quan hệ. Người dùng có thể sử dụng các ngôn ngữ này để thực hiện các truy vấn phức tạp trên cơ sở dữ liệu và lấy được kết quả nhanh chóng và hiệu quả.
4. Hệ quản trị cơ sở dữ liệu đã cung cấp khả năng bảo mật dữ liệu. Các hệ quản trị cơ sở dữ liệu đã phát triển các công cụ bảo mật để xác thực người dùng, kiểm soát quyền truy cập và bảo vệ dữ liệu khỏi các rủi ro an ninh và tổn hại từ bên ngoài.
5. Hệ quản trị cơ sở dữ liệu đã đóng góp vào phát triển của việc lưu trữ dữ liệu. Các công nghệ lưu trữ dữ liệu đã phát triển, từ các ổ đĩa cứng đến hệ thống cấp cao như RAID (Redundant Array of Independent Disks) và hệ thống lưu trữ dự phòng. Các hệ quản trị cơ sở dữ liệu đã tận dụng các công nghệ này để cung cấp khả năng lưu trữ dữ liệu an toàn, tin cậy và hiệu quả.
6. Hệ quản trị cơ sở dữ liệu đã đóng góp vào phát triển của việc xử lý dữ liệu lớn. Với sự phát triển của công nghệ điện toán đám mây và các công nghệ xử lý dữ liệu lớn như Hadoop và Spark, các hệ quản trị cơ sở dữ liệu đã được tối ưu hóa để xử lý và lưu trữ các khối lượng dữ liệu lớn và sự phức tạp của dữ liệu không gian và thời gian...

### Ứng dụng

Tương tác bên ngoài với cơ sở dữ liệu sẽ thông qua một chương trình ứng dụng có giao diện với DBMS. Điều này có thể bao gồm từ một công cụ cơ sở dữ liệu cho phép người dùng thực hiện các truy vấn SQL bằng văn bản hoặc bằng đồ họa, đến một trang web tình cờ sử dụng cơ sở dữ liệu để lưu trữ và tìm kiếm thông tin.

### Giao diện chương trình ứng dụng

Một lập trình viên sẽ lập trình các tương tác vào cơ sở dữ liệu (đôi khi được gọi là nguồn dữ liệu) thông qua giao diện chương trình ứng dụng (API) hoặc thông qua ngôn ngữ cơ sở dữ liệu. API hoặc ngôn ngữ cụ thể được chọn sẽ cần được DBMS hỗ trợ, có thể gián tiếp thông qua bộ xử lý trước hoặc API bắc cầu. Một số API nhằm mục đích độc lập với cơ sở dữ liệu, ODBC là một ví dụ thường được biết đến. Các API phổ biến khác bao gồm JDBC và ADO.NET.

### Ngôn ngữ cơ sở dữ liệu

Ngôn ngữ cơ sở dữ liệu là ngôn ngữ có mục đích đặc biệt, cho phép một hoặc nhiều tác vụ sau, đôi khi được phân biệt là ngôn ngữ con:

* Ngôn ngữ kiểm soát dữ liệu (DCL) - kiểm soát truy cập dữ liệu;
* Ngôn ngữ định nghĩa dữ liệu (DDL) - xác định các loại dữ liệu như tạo, thay đổi hoặc xóa và các mối quan hệ giữa chúng;
* Ngôn ngữ thao tác dữ liệu (DML) - thực hiện các tác vụ như chèn, cập nhật hoặc xóa các lần xuất hiện dữ liệu;
* Ngôn ngữ truy vấn dữ liệu (DQL) - cho phép tìm kiếm thông tin và tính toán thông tin dẫn xuất.

Ngôn ngữ cơ sở dữ liệu là cụ thể cho một mô hình dữ liệu cụ thể. Các ví dụ đáng chú ý bao gồm:

* SQL kết hợp các vai trò của định nghĩa dữ liệu, thao tác dữ liệu và truy vấn trong một ngôn ngữ. Đó là một trong những ngôn ngữ thương mại đầu tiên cho mô hình quan hệ, mặc dù nó rời khỏi một số khía cạnh từ mô hình quan hệ như được mô tả bởi Codd (ví dụ, các hàng và cột của bảng có thể được đặt hàng). SQL đã trở thành một tiêu chuẩn của Viện Tiêu chuẩn Quốc gia Hoa Kỳ (ANSI) vào năm 1986 và của Tổ chức Tiêu chuẩn hóa Quốc tế (ISO) năm 1987. Các tiêu chuẩn đã được nâng cao thường xuyên kể từ khi được hỗ trợ (với mức độ phù hợp khác nhau) DBMS quan hệ.
* OQL là một tiêu chuẩn ngôn ngữ mô hình đối tượng (từ Nhóm quản lý dữ liệu đối tượng). Nó đã ảnh hưởng đến thiết kế của một số ngôn ngữ truy vấn mới hơn như JDOQL và EJB QL.
* XQuery là ngôn ngữ truy vấn XML tiêu chuẩn được triển khai bởi các hệ thống cơ sở dữ liệu XML như MarkLogic và eXist, bởi các cơ sở dữ liệu quan hệ có khả năng XML như Oracle và DB2 và cả các bộ xử lý XML trong bộ nhớ như Saxon.
* SQL/XML kết hợp XQuery với SQL.

Một ngôn ngữ cơ sở dữ liệu cũng có thể kết hợp các tính năng như:

* Cấu hình và quản lý công cụ lưu trữ dành riêng cho DBMS
* Tính toán để sửa đổi kết quả truy vấn, như đếm, tính tổng, tính trung bình, sắp xếp, nhóm và tham chiếu chéo
* Hạn chế thực thi (ví dụ: trong cơ sở dữ liệu ô tô, chỉ cho phép một loại động cơ trên mỗi ô tô)
* Phiên bản giao diện lập trình ứng dụng của ngôn ngữ truy vấn, để thuận tiện cho lập trình viên

## Lưu trữ

Lưu trữ cơ sở dữ liệu là nơi chứa vật chất hóa vật lý của cơ sở dữ liệu. Nó bao gồm *mức độ* *nội bộ* (vật lý) trong kiến trúc cơ sở dữ liệu. Nó cũng chứa tất cả thông tin cần thiết (ví dụ: siêu dữ liệu, "dữ liệu về dữ liệu" và cấu trúc dữ liệu bên trong) để tái cấu trúc *mức khái niệm* và *cấp độ bên ngoài* từ cấp độ bên trong khi cần. Đưa dữ liệu vào lưu trữ vĩnh viễn nói chung là trách nhiệm của công cụ cơ sở dữ liệu hay còn gọi là "công cụ lưu trữ". Mặc dù DBMS thường truy cập thông qua hệ điều hành cơ bản (và thường sử dụng các hệ thống tệp của hệ điều hành làm trung gian để bố trí lưu trữ), các thuộc tính lưu trữ và cài đặt cấu hình là cực kỳ quan trọng đối với hoạt động hiệu quả của DBMS và do đó được duy trì chặt chẽ bởi quản trị cơ sở dữ liệu. Một DBMS, trong khi hoạt động, luôn có cơ sở dữ liệu của nó nằm trong một số loại lưu trữ (ví dụ: bộ nhớ và bộ nhớ ngoài). Dữ liệu cơ sở dữ liệu và thông tin cần thiết bổ sung, có thể với số lượng rất lớn, được mã hóa thành các bit. Dữ liệu thường nằm trong bộ lưu trữ trong các cấu trúc trông hoàn toàn khác với cách dữ liệu nhìn ở cấp độ khái niệm và bên ngoài, nhưng theo cách cố gắng tối ưu hóa (tốt nhất có thể) các cấu trúc này khi người dùng và chương trình cũng cần như để tính toán các loại thông tin cần thiết từ dữ liệu (ví dụ: khi truy vấn cơ sở dữ liệu).

Một số DBMS hỗ trợ chỉ định mã hóa ký tự nào được sử dụng để lưu trữ dữ liệu, do đó, nhiều mã hóa có thể được sử dụng trong cùng một cơ sở dữ liệu.

Các cấu trúc lưu trữ cơ sở dữ liệu mức thấp khác nhau được sử dụng bởi công cụ lưu trữ để tuần tự hóa mô hình dữ liệu để nó có thể được ghi vào phương tiện lựa chọn. Các kỹ thuật như lập chỉ mục có thể được sử dụng để cải thiện hiệu suất. Lưu trữ thông thường là theo định hướng hàng, nhưng cũng có cơ sở dữ liệu tương quan và định hướng cột.

### Quan điểm cụ thể hóa

Thường dự phòng lưu trữ được sử dụng để tăng hiệu suất. Một ví dụ phổ biến là lưu trữ *các khung nhìn cụ thể hóa*, bao gồm các *khung nhìn bên ngoài* hoặc kết quả truy vấn thường xuyên cần thiết. Lưu trữ các quan điểm như vậy giúp tiết kiệm điện toán đắt tiền của chúng mỗi khi chúng cần thiết. Nhược điểm của các khung nhìn cụ thể hóa là chi phí phát sinh khi cập nhật chúng để giữ cho chúng được đồng bộ hóa với dữ liệu cơ sở dữ liệu được cập nhật ban đầu của chúng và chi phí dự phòng lưu trữ.

### Sao chép nhân rộng

Đôi khi, cơ sở dữ liệu sử dụng dự phòng lưu trữ bằng cách sao chép đối tượng cơ sở dữ liệu (có một hoặc nhiều bản sao) để tăng tính khả dụng của dữ liệu (cả hai để cải thiện hiệu suất của nhiều người dùng cuối truy cập vào cùng một đối tượng cơ sở dữ liệu và để cung cấp khả năng phục hồi trong trường hợp không thành công một cơ sở dữ liệu phân tán). Cập nhật của một đối tượng được nhân rộng cần phải được đồng bộ hóa trên các bản sao đối tượng. Trong nhiều trường hợp, toàn bộ cơ sở dữ liệu được nhân rộng.

## Bảo mật

Bảo mật cơ sở dữ liệu liên quan đến tất cả các khía cạnh khác nhau của việc bảo vệ nội dung cơ sở dữ liệu, chủ sở hữu và người dùng của nó. Nó bao gồm từ bảo vệ khỏi việc sử dụng cơ sở dữ liệu trái phép có chủ ý đến cơ sở dữ liệu vô tình truy cập bởi các thực thể trái phép (ví dụ: một người hoặc một chương trình máy tính).

Kiểm soát truy cập cơ sở dữ liệu liên quan đến việc kiểm soát ai (một người hoặc một chương trình máy tính nhất định) được phép truy cập thông tin nào trong cơ sở dữ liệu. Thông tin có thể bao gồm các đối tượng cơ sở dữ liệu cụ thể (vd hoặc các cấu trúc dữ liệu khác để truy cập thông tin). Các điều khiển truy cập cơ sở dữ liệu được thiết lập bởi nhân viên được ủy quyền đặc biệt (bởi chủ sở hữu cơ sở dữ liệu) sử dụng các giao diện DBMS bảo mật chuyên dụng được bảo vệ.

Điều này có thể được quản lý trực tiếp trên cơ sở cá nhân, hoặc bằng cách phân công các cá nhân và đặc quyền cho các nhóm, hoặc (trong các mô hình phức tạp nhất) thông qua việc phân công các cá nhân và nhóm cho các vai trò sau đó được cấp quyền. Bảo mật dữ liệu ngăn người dùng trái phép xem hoặc cập nhật cơ sở dữ liệu. Sử dụng mật khẩu, người dùng được phép truy cập vào toàn bộ cơ sở dữ liệu hoặc các tập hợp con của nó được gọi là "các bộ phận con". Ví dụ: cơ sở dữ liệu nhân viên có thể chứa tất cả dữ liệu về một nhân viên, nhưng một nhóm người dùng có thể được phép chỉ xem dữ liệu bảng lương, trong khi những người khác chỉ được phép truy cập vào lịch sử làm việc và dữ liệu y tế. Nếu DBMS cung cấp một cách để tương tác nhập và cập nhật cơ sở dữ liệu, cũng như thẩm vấn nó, khả năng này cho phép quản lý cơ sở dữ liệu cá nhân.

Bảo mật dữ liệu nói chung liên quan đến việc bảo vệ các khối dữ liệu cụ thể, cả về mặt vật lý (nghĩa là khỏi tham nhũng, hoặc phá hủy hoặc xóa; ví dụ: xem bảo mật vật lý) hoặc giải thích chúng hoặc các phần của chúng đối với thông tin có ý nghĩa (ví dụ: nhìn vào chuỗi bit mà chúng bao gồm, kết luận số thẻ tín dụng hợp lệ cụ thể, ví dụ: xem mã hóa dữ liệu).

Thay đổi và truy cập các bản ghi nhật ký những người đã truy cập thuộc tính nào, những gì đã được thay đổi và khi nó được thay đổi. Dịch vụ ghi nhật ký cho phép kiểm tra cơ sở dữ liệu pháp y sau đó bằng cách lưu giữ hồ sơ về các lần xuất hiện và thay đổi truy cập. Đôi khi mã cấp độ ứng dụng được sử dụng để ghi lại các thay đổi thay vì để mã này vào cơ sở dữ liệu. Giám sát có thể được thiết lập để cố gắng phát hiện các vi phạm an ninh.

## Giao dịch và xử lý giao dịch đồng thời

Các giao dịch cơ sở dữ liệu có thể được sử dụng để giới thiệu một số mức độ chịu lỗi và tính toàn vẹn dữ liệu sau khi phục hồi sau sự cố. Giao dịch cơ sở dữ liệu là một đơn vị công việc, thường đóng gói một số hoạt động trên cơ sở dữ liệu (ví dụ: đọc đối tượng cơ sở dữ liệu, viết, lấy khóa, v.v.), một sự trừu tượng được hỗ trợ trong cơ sở dữ liệu và các hệ thống khác. Mỗi giao dịch có các ranh giới được xác định rõ về mặt thực thi chương trình / mã được bao gồm trong giao dịch đó (được xác định bởi người lập trình giao dịch thông qua các lệnh giao dịch đặc biệt).

Từ viết tắt ACID mô tả một số tính chất lý tưởng của giao dịch cơ sở dữ liệu: tính nguyên tử, tính nhất quán, sự cô lập và độ bền.

## Di chuyển

Một cơ sở dữ liệu được xây dựng với một DBMS không thể di chuyển sang một DBMS khác (nghĩa là DBMS khác không thể chạy nó). Tuy nhiên, trong một số tình huống, mong muốn di chuyển, di chuyển cơ sở dữ liệu từ DBMS này sang DBMS khác. Các lý do chủ yếu là kinh tế (các DBMS khác nhau có thể có tổng chi phí sở hữu hoặc TCO khác nhau), chức năng và hoạt động (các DBMS khác nhau có thể có các khả năng khác nhau). Việc di chuyển liên quan đến việc chuyển đổi cơ sở dữ liệu từ loại DBMS này sang loại khác. Việc chuyển đổi phải duy trì (nếu có thể) các ứng dụng liên quan đến cơ sở dữ liệu (nghĩa là tất cả các chương trình ứng dụng liên quan) còn nguyên vẹn. Do đó, các mức kiến trúc bên ngoài và khái niệm của cơ sở dữ liệu nên được duy trì trong quá trình chuyển đổi. Có thể mong muốn rằng một số khía cạnh của cấp độ kiến trúc được duy trì. Di chuyển cơ sở dữ liệu phức tạp hoặc lớn có thể là một dự án phức tạp và tốn kém (một lần), điều này cần được đưa vào quyết định di chuyển. Điều này mặc dù thực tế là các công cụ có thể tồn tại để giúp di chuyển giữa các DBMS cụ thể. Thông thường, nhà cung cấp DBMS cung cấp các công cụ để giúp nhập cơ sở dữ liệu từ các DBMS phổ biến khác.

## Xây dựng, bảo trì và điều chỉnh

Sau khi thiết kế cơ sở dữ liệu cho một ứng dụng, giai đoạn tiếp theo là xây dựng cơ sở dữ liệu. Thông thường, một DBMS có mục đích chung thích hợp có thể được chọn để sử dụng cho mục đích này. DBMS cung cấp các giao diện người dùng cần thiết được sử dụng bởi các quản trị viên cơ sở dữ liệu để xác định cấu trúc dữ liệu của ứng dụng cần thiết trong mô hình dữ liệu tương ứng của DBMS. Các giao diện người dùng khác được sử dụng để chọn các tham số DBMS cần thiết (như liên quan đến bảo mật, tham số phân bổ lưu trữ, v.v.).

Khi cơ sở dữ liệu đã sẵn sàng (tất cả các cấu trúc dữ liệu và các thành phần cần thiết khác được xác định), nó thường được điền với dữ liệu của ứng dụng ban đầu (khởi tạo cơ sở dữ liệu, thường là một dự án riêng biệt; trong nhiều trường hợp sử dụng giao diện DBMS chuyên dụng hỗ trợ chèn hàng loạt) trước đó làm cho nó hoạt động. Trong một số trường hợp, cơ sở dữ liệu sẽ hoạt động trong khi trống dữ liệu ứng dụng và dữ liệu được tích lũy trong quá trình hoạt động.

Sau khi cơ sở dữ liệu được tạo, khởi tạo và điền vào nó cần được duy trì. Các tham số cơ sở dữ liệu khác nhau có thể cần thay đổi và cơ sở dữ liệu có thể cần được điều chỉnh (điều chỉnh) để có hiệu suất tốt hơn; cấu trúc dữ liệu của ứng dụng có thể được thay đổi hoặc thêm vào, các chương trình ứng dụng liên quan mới có thể được viết để thêm vào chức năng của ứng dụng, v.v.

## Sao lưu và khôi phục

Đôi khi, mong muốn đưa cơ sở dữ liệu trở về trạng thái trước đó (vì nhiều lý do, ví dụ: các trường hợp khi phát hiện cơ sở dữ liệu bị lỗi do lỗi phần mềm hoặc nếu nó đã được cập nhật với dữ liệu bị lỗi). Để đạt được điều này, một hoạt động sao lưu được thực hiện đôi khi hoặc liên tục, trong đó mỗi trạng thái cơ sở dữ liệu mong muốn (nghĩa là các giá trị của dữ liệu và việc nhúng chúng vào cấu trúc dữ liệu của cơ sở dữ liệu) được giữ trong các tệp sao lưu chuyên dụng (có nhiều kỹ thuật để thực hiện điều này một cách hiệu quả). Khi trạng thái này là cần thiết, tức là khi người quản trị cơ sở dữ liệu quyết định đưa cơ sở dữ liệu trở lại trạng thái này (ví dụ: bằng cách chỉ định trạng thái này theo thời điểm mong muốn khi cơ sở dữ liệu ở trạng thái này), các tệp này được sử dụng để khôi phục trạng thái đó.

## Phân tích tĩnh

Các kỹ thuật phân tích tĩnh để xác minh phần mềm cũng có thể được áp dụng trong kịch bản của các ngôn ngữ truy vấn. Cụ thể, khung giải thích \* Tóm tắt đã được mở rộng sang lĩnh vực ngôn ngữ truy vấn cho cơ sở dữ liệu quan hệ như một cách để hỗ trợ các kỹ thuật gần đúng âm thanh. Ngữ nghĩa của các ngôn ngữ truy vấn có thể được điều chỉnh theo sự trừu tượng phù hợp của miền dữ liệu cụ thể. Sự trừu tượng của hệ thống cơ sở dữ liệu quan hệ có nhiều ứng dụng thú vị, đặc biệt, cho mục đích bảo mật, chẳng hạn như kiểm soát truy cập chi tiết, hình mờ, v.v.

## Các tính năng khác

Các tính năng DBMS khác có thể bao gồm:

* Nhật ký cơ sở dữ liệu - Điều này giúp giữ một lịch sử của các chức năng được thực hiện.
* Thành phần đồ họa để sản xuất đồ thị và biểu đồ, đặc biệt là trong một hệ thống kho dữ liệu.
* Trình tối ưu hóa truy vấn - Thực hiện tối ưu hóa truy vấn trên mọi truy vấn để chọn gói *truy vấn* hiệu quả (một phần thứ tự (cây) của các hoạt động) sẽ được thực hiện để tính kết quả truy vấn. Có thể được cụ thể cho một công cụ lưu trữ cụ thể.
* Các công cụ hoặc móc để thiết kế cơ sở dữ liệu, lập trình ứng dụng, bảo trì chương trình ứng dụng, giám sát và phân tích hiệu suất cơ sở dữ liệu, giám sát cấu hình cơ sở dữ liệu, cấu hình phần cứng DBMS (DBMS và cơ sở dữ liệu liên quan có thể trải rộng trên máy tính, mạng và đơn vị lưu trữ) và ánh xạ cơ sở dữ liệu liên quan (đặc biệt là một DBMS phân tán), phân bổ lưu trữ và giám sát bố cục cơ sở dữ liệu, di chuyển lưu trữ, v.v.

Ngày càng có nhiều lời kêu gọi cho một hệ thống duy nhất kết hợp tất cả các chức năng cốt lõi này vào cùng một khung xây dựng, kiểm tra và triển khai để quản lý cơ sở dữ liệu và kiểm soát nguồn. Mượn từ những phát triển khác trong ngành công nghiệp phần mềm, một số thị trường như " DevOps cho cơ sở dữ liệu".

## Thiết kế và mô hình

Nhiệm vụ đầu tiên của một nhà thiết kế cơ sở dữ liệu là tạo ra một mô hình dữ liệu khái niệm phản ánh cấu trúc của thông tin sẽ được lưu giữ trong cơ sở dữ liệu. Một cách tiếp cận phổ biến cho việc này là phát triển một mô hình quan hệ thực thể, thường với sự trợ giúp của các công cụ vẽ. Một cách tiếp cận phổ biến khác là Ngôn ngữ mô hình thống nhất. Một mô hình dữ liệu thành công sẽ phản ánh chính xác trạng thái có thể có của thế giới bên ngoài đang được mô hình hóa: ví dụ: nếu mọi người có thể có nhiều hơn một số điện thoại, nó sẽ cho phép nắm bắt thông tin này. Thiết kế một mô hình dữ liệu khái niệm tốt đòi hỏi sự hiểu biết tốt về miền ứng dụng; nó thường liên quan đến việc đặt câu hỏi sâu sắc về những điều mà một tổ chức quan tâm, như "khách hàng cũng có thể là nhà cung cấp không?" hoặc "nếu một sản phẩm được bán với hai hình thức đóng gói khác nhau, đó là cùng một sản phẩm hay sản phẩm khác nhau? "hoặc" nếu một chiếc máy bay bay từ New York đến Dubai qua Frankfurt, đó có phải là một hoặc hai chuyến bay (hoặc thậm chí là ba) không? ". Các câu trả lời cho những câu hỏi này thiết lập các định nghĩa về thuật ngữ được sử dụng cho các thực thể (khách hàng, sản phẩm, chuyến bay, phân khúc chuyến bay) và các mối quan hệ và thuộc tính của chúng.

Sản xuất mô hình dữ liệu khái niệm đôi khi liên quan đến đầu vào từ các quy trình kinh doanh hoặc phân tích quy trình công việc trong tổ chức. Điều này có thể giúp thiết lập những thông tin cần thiết trong cơ sở dữ liệu và những gì có thể bị bỏ lại. Ví dụ, nó có thể giúp khi quyết định liệu cơ sở dữ liệu có cần giữ dữ liệu lịch sử cũng như dữ liệu hiện tại hay không.

Đã tạo ra một mô hình dữ liệu khái niệm mà người dùng hài lòng, giai đoạn tiếp theo là dịch nó thành một lược đồ thực hiện các cấu trúc dữ liệu có liên quan trong cơ sở dữ liệu. Quá trình này thường được gọi là thiết kế cơ sở dữ liệu logic và đầu ra là một mô hình dữ liệu lôgic được thể hiện dưới dạng lược đồ. Trong khi mô hình dữ liệu khái niệm (về lý thuyết ít nhất) không phụ thuộc vào sự lựa chọn công nghệ cơ sở dữ liệu, mô hình dữ liệu lôgic sẽ được biểu thị theo mô hình cơ sở dữ liệu cụ thể được DBMS chọn. (*Mô hình dữ liệu* thuật ngữ và *mô hình* *cơ sở dữ liệu* thường được sử dụng thay thế cho nhau, nhưng trong bài viết này, chúng tôi sử dụng *mô hình dữ liệu* để thiết kế cơ sở dữ liệu cụ thể và *mô hình cơ sở dữ liệu* cho ký hiệu mô hình được sử dụng để thể hiện thiết kế đó.)

Mô hình cơ sở dữ liệu phổ biến nhất cho cơ sở dữ liệu đa năng là mô hình quan hệ, hay chính xác hơn là mô hình quan hệ được biểu thị bằng ngôn ngữ SQL. Quá trình tạo ra một thiết kế cơ sở dữ liệu logic bằng mô hình này sử dụng một phương pháp có phương pháp được gọi là chuẩn hóa. Mục tiêu của chuẩn hóa là đảm bảo rằng mỗi "thực tế" cơ bản chỉ được ghi lại ở một nơi, để các phần chèn, cập nhật và xóa tự động duy trì tính nhất quán.

Giai đoạn cuối cùng của thiết kế cơ sở dữ liệu là đưa ra các quyết định ảnh hưởng đến hiệu suất, khả năng mở rộng, phục hồi, bảo mật và tương tự, phụ thuộc vào DBMS cụ thể. Điều này thường được gọi là *thiết kế cơ sở dữ liệu vật lý* và đầu ra là mô hình dữ liệu vật lý. Mục tiêu chính trong giai đoạn này là tính độc lập dữ liệu, nghĩa là các quyết định được đưa ra cho mục đích tối ưu hóa hiệu suất sẽ vô hình đối với người dùng cuối và ứng dụng. Có hai loại độc lập dữ liệu: độc lập dữ liệu vật lý và độc lập dữ liệu logic. Thiết kế vật lý được điều khiển chủ yếu bởi các yêu cầu về hiệu suất và đòi hỏi kiến thức tốt về khối lượng công việc và các mẫu truy cập dự kiến và hiểu biết sâu sắc về các tính năng được cung cấp bởi DBMS đã chọn.

Một khía cạnh khác của thiết kế cơ sở dữ liệu vật lý là bảo mật. Nó bao gồm cả việc xác định kiểm soát truy cập cho các đối tượng cơ sở dữ liệu cũng như xác định các mức và phương thức bảo mật cho chính dữ liệu.

### Mô hình

 Cắt dán năm loại mô hình cơ sở dữ liệu
Mô hình cơ sở dữ liệu là một loại mô hình dữ liệu xác định cấu trúc logic của cơ sở dữ liệu và xác định cơ bản theo cách thức dữ liệu có thể được lưu trữ, sắp xếp và thao tác. Ví dụ phổ biến nhất của mô hình cơ sở dữ liệu là mô hình quan hệ (hoặc xấp xỉ SQL của quan hệ), sử dụng định dạng dựa trên bảng.

Các mô hình dữ liệu logic phổ biến cho cơ sở dữ liệu bao gồm:

* Cơ sở dữ liệu hướng đối tượng
	+ Mô hình cơ sở dữ liệu phân cấp
	+ Mô hình mạng
	+ Cơ sở dữ liệu đồ thị
* Mô hình quan hệ
* Mô hình quan hệ Entity
	+ Mô hình quan hệ thực thể nâng cao
* Mô hình đối tượng
* Mô hình tài liệu
* Mô hình giá trị thuộc tính Entity
* Lược đồ sao

Một cơ sở dữ liệu quan hệ đối tượng kết hợp hai cấu trúc liên quan.

Các mô hình dữ liệu vật lý bao gồm:

* Chỉ số đảo ngược
* Tập tin phẳng

Các mô hình khác bao gồm:

* Mô hình liên kết
* Mô hình đa chiều
* Mô hình mảng
* Mô hình đa giá trị

Các mô hình chuyên biệt được tối ưu hóa cho các loại dữ liệu cụ thể:

* Cơ sở dữ liệu XML
* Mô hình ngữ nghĩa
* Cửa hàng nội dung
* Cửa hàng sự kiện
* Mô hình chuỗi thời gian

### Cấp độ xem bên ngoài, khái niệm và nội bộ

 Chế độ xem dữ liệu truyền thống
Một hệ thống quản lý cơ sở dữ liệu cung cấp ba khung nhìn của dữ liệu cơ sở dữ liệu:

* **Cấp độ bên ngoài** xác định cách mỗi nhóm người dùng cuối nhìn thấy tổ chức dữ liệu trong cơ sở dữ liệu. Một cơ sở dữ liệu có thể có bất kỳ số lượt xem nào ở cấp độ bên ngoài.
* Mức **khái niệm** thống nhất các quan điểm bên ngoài khác nhau thành một chế độ xem toàn cầu tương thích. Nó cung cấp tổng hợp của tất cả các cấp độ xem bên ngoài. Nó nằm ngoài phạm vi của những người dùng cuối cơ sở dữ liệu khác nhau và được các nhà phát triển ứng dụng cơ sở dữ liệu và quản trị viên cơ sở dữ liệu quan tâm.
* **Cấp độ nội bộ** (hoặc *cấp độ vật lý*) là tổ chức nội bộ của dữ liệu bên trong DBMS. Nó liên quan đến chi phí, hiệu suất, khả năng mở rộng và các vấn đề hoạt động khác. Nó liên quan đến bố trí lưu trữ dữ liệu, sử dụng các cấu trúc lưu trữ như chỉ mục để nâng cao hiệu suất. Đôi khi, nó lưu trữ dữ liệu của các chế độ xem riêng lẻ (chế độ xem được cụ thể hóa), được tính toán từ dữ liệu chung, nếu có sự biện minh về hiệu suất cho sự dư thừa đó. Nó cân bằng tất cả các yêu cầu về hiệu suất của các khung nhìn bên ngoài, có thể xung đột, trong nỗ lực tối ưu hóa hiệu suất tổng thể trên tất cả các hoạt động.

Mặc dù thường chỉ có một chế độ xem khái niệm (hoặc logic) và vật lý (hoặc nội bộ) của dữ liệu, có thể có bất kỳ số lượt xem bên ngoài khác nhau. Điều này cho phép người dùng xem thông tin cơ sở dữ liệu theo cách liên quan đến kinh doanh hơn là từ quan điểm xử lý kỹ thuật. Ví dụ: bộ phận tài chính của một công ty cần chi tiết thanh toán của tất cả nhân viên như một phần chi phí của công ty, nhưng không cần chi tiết về nhân viên là mối quan tâm của bộ phận nhân sự. Do đó, các bộ phận khác nhau cần *quan điểm* khác nhau về cơ sở dữ liệu của công ty.

Kiến trúc cơ sở dữ liệu ba cấp liên quan đến khái niệm *độc lập dữ liệu*, một trong những động lực ban đầu chính của mô hình quan hệ. Ý tưởng là những thay đổi được thực hiện ở một mức độ nhất định không ảnh hưởng đến chế độ xem ở cấp độ cao hơn. Ví dụ, các thay đổi ở cấp độ nội bộ không ảnh hưởng đến các chương trình ứng dụng được viết bằng giao diện cấp khái niệm, điều này làm giảm tác động của việc thực hiện các thay đổi vật lý để cải thiện hiệu suất.

Khung nhìn khái niệm cung cấp một mức độ gián tiếp giữa bên trong và bên ngoài. Một mặt, nó cung cấp một khung nhìn chung cho cơ sở dữ liệu, độc lập với các cấu trúc khung nhìn bên ngoài khác nhau và mặt khác, nó trừu tượng hóa các chi tiết về cách dữ liệu được lưu trữ hoặc quản lý (mức nội bộ). Về nguyên tắc, mọi cấp độ và thậm chí mọi chế độ xem bên ngoài đều có thể được trình bày bởi một mô hình dữ liệu khác nhau. Trong thực tế, một DBMS nhất định sử dụng cùng một mô hình dữ liệu cho cả mức độ bên ngoài và mức khái niệm (ví dụ: mô hình quan hệ). Cấp độ bên trong, được ẩn bên trong DBMS và phụ thuộc vào việc triển khai nó, đòi hỏi một mức độ chi tiết khác và sử dụng các loại cấu trúc dữ liệu riêng của nó.

Tách rời các cấp độ *bên ngoài*, *khái niệm* và *bên trong* là một tính năng chính của việc triển khai mô hình cơ sở dữ liệu quan hệ thống trị cơ sở dữ liệu thế kỷ 21.

## Nghiên cứu

Công nghệ cơ sở dữ liệu là một chủ đề nghiên cứu tích cực từ những năm 1960, cả trong các học viện và trong các nhóm nghiên cứu và phát triển của các công ty (ví dụ như Nghiên cứu của IBM). Hoạt động nghiên cứu bao gồm lý thuyết và phát triển các nguyên mẫu. Các chủ đề nghiên cứu đáng chú ý đã bao gồm các mô hình, khái niệm giao dịch nguyên tử và các kỹ thuật kiểm soát đồng thời có liên quan, ngôn ngữ truy vấn và phương pháp tối ưu hóa truy vấn, RAID,v.v....

Khu vực nghiên cứu cơ sở dữ liệu có một số tạp chí học thuật chuyên dụng (ví dụ: *ACM Transactions on Database Systems* -TODS, *Data & Knowledge Engineering* -DKE) và các hội nghị hàng năm (ví dụ: ACM SIGMOD, ACM PODS, VLDB, IEEE ICDE).

## Chú thích

## Tham khảo

## Sách tham khảo

* Bachman, Charles W. (1973). "The Programmer as Navigator". *Communications of the ACM*. Quyển 16 số 11. tr. 653–658. doi:10.1145/355611.362534. ISSN 0001-0782. `{{Chú thích tạp chí}}`: Đã bỏ qua tham số không rõ `|subscription=` (gợi ý `|url-access=`) (trợ giúp)

* Beynon-Davies, Paul (2003). *Database Systems* (ấn bản thứ 3). Palgrave Macmillan. ISBN 978-1403916013.

* Chapple, Mike (2005). "SQL Fundamentals". *Databases*. About.com. Lưu trữ bản gốc ngày 22 tháng 2 năm 2009. Truy cập 28 tháng 1, 2009.

* Childs, David L. (1968a). "Description of a set-theoretic data structure" (PDF). *CONCOMP (Research in Conversational Use of Computers) Project*. Quyển Technical Report 3. University of Michigan.
* Childs, David L. (1968b). "Feasibility of a set-theoretic data structure: a general structure based on a reconstituted definition" (PDF). *CONCOMP (Research in Conversational Use of Computers) Project*. Quyển Technical Report 6. University of Michigan.
* Chong, Raul F.; Wang, Xiaomei; Dang, Michael; Snow, Dwaine R. (2007). "Introduction to DB2". *Understanding DB2: Learning Visually with Examples* (ấn bản thứ 2). ISBN 978-0131580183. Truy cập 17 tháng 3, 2013.

* Codd, Edgar F. (1970). "A Relational Model of Data for Large Shared Data Banks" (PDF). *Communications of the ACM*. Quyển 13 số 6. tr. 377–387. doi:10.1145/362384.362685.

* Connolly, Thomas M.; Begg, Carolyn E. (2014). *Database Systems – A Practical Approach to Design Implementation and Management* (ấn bản thứ 6). Pearson. ISBN 978-1292061184.

* Date, C. J. (2003). *An Introduction to Database Systems* (ấn bản thứ 8). Pearson. ISBN 978-0321197849.

* Halder, Raju; Cortesi, Agostino (2011). "Abstract Interpretation of Database Query Languages" (PDF). *Computer Languages, Systems & Structures*. Quyển 38 số 2. tr. 123–157. doi:10.1016/j.cl.2011.10.004. ISSN 1477-8424. Bản gốc (PDF) lưu trữ ngày 23 tháng 11 năm 2024. Truy cập ngày 19 tháng 2 năm 2019.

* Hershey, William; Easthope, Carol (1972). *A set theoretic data structure and retrieval language*. Spring Joint Computer Conference, May 1972. *ACM SIGIR Forum*. Quyển 7 số 4. tr. 45–55. doi:10.1145/1095495.1095500.
* Nelson, Anne Fulcher; Nelson, William Harris Morehead (2001). *Building Electronic Commerce: With Web Database Constructions*. Prentice Hall. ISBN 978-0201741308.

* North, Ken (10 tháng 3, 2010). "Sets, Data Models and Data Independence". *Dr. Dobb's*. Lưu trữ bản gốc ngày 24 tháng 10 năm 2012.

* Tsitchizris, Dionysios C.; Lochovsky, Fred H. (1982). *Data Models*. Prentice–Hall. ISBN 978-0131964280.

* Ullman, Jeffrey; Widom, Jennifer (1997). *A First Course in Database Systems*. Prentice–Hall. ISBN 978-0138613372.

* Wagner, Michael (2010), *SQL/XML:2006 – Evaluierung der Standardkonformität ausgewählter Datenbanksysteme*, Diplomica Verlag, ISBN 978-3836696098