Tiểu mục quan hệ Cơ sở dữ liệu quan hệ. Khái niệm cơ sở dữ liệu quan hệ

Cơ sở dữ liệu (DB) là tập hợp thông tin về các đối tượng, quá trình, sự kiện hoặc hiện tượng liên quan đến một lĩnh vực, chủ đề hoặc nhiệm vụ nhất định, được tổ chức theo các quy tắc nhất định và được lưu giữ trong bộ nhớ máy tính. Nó được tổ chức theo cách nhằm cung cấp nhu cầu thông tin của người dùng, cũng như lưu trữ thuận tiện bộ sưu tập dữ liệu này, cả về tổng thể và bất kỳ phần nào của dữ liệu đó.

Cơ sở dữ liệu quan hệ là một tập hợp các bảng được kết nối với nhau, mỗi bảng chứa thông tin về các đối tượng thuộc một loại nhất định. Mỗi hàng của bảng chứa dữ liệu về một đối tượng (ví dụ: ô tô, máy tính, khách hàng) và các cột của bảng chứa các đặc điểm khác nhau của các đối tượng này - thuộc tính (ví dụ: số động cơ, nhãn hiệu bộ xử lý, số điện thoại của công ty hoặc khách hàng).

Các hàng của bảng được gọi là bản ghi. Tất cả các bản ghi bảng đều có cùng cấu trúc - chúng bao gồm các trường (phần tử dữ liệu) trong đó các thuộc tính đối tượng được lưu trữ (Hình 1). Mỗi trường bản ghi chứa một đặc điểm của đối tượng và thể hiện một kiểu dữ liệu được chỉ định (ví dụ: chuỗi văn bản, số, ngày). Khóa chính được sử dụng để xác định các bản ghi. Khóa chính là tập hợp các trường bảng có sự kết hợp các giá trị xác định duy nhất từng bản ghi trong bảng.

Cơm. 1. Tên các đối tượng trong bảng

Hệ thống quản lý cơ sở dữ liệu (DBMS) được sử dụng để làm việc với dữ liệu. Các chức năng chính của DBMS:

Định nghĩa dữ liệu (mô tả cấu trúc cơ sở dữ liệu);

Xử lí dữ liệu;

Quản lý dữ liệu.

Phát triển cấu trúc cơ sở dữ liệu là nhiệm vụ quan trọng nhất được giải quyết khi thiết kế cơ sở dữ liệu. Cấu trúc của cơ sở dữ liệu (tập hợp, biểu mẫu và các mối quan hệ của các bảng) là một trong những quyết định thiết kế chính khi tạo các ứng dụng sử dụng cơ sở dữ liệu. Cấu trúc cơ sở dữ liệu do nhà phát triển tạo được mô tả bằng ngôn ngữ định nghĩa dữ liệu DBMS.

Bất kỳ DBMS nào cũng cho phép bạn thực hiện các thao tác sau với dữ liệu:

Thêm bản ghi vào bảng;

Xóa bản ghi khỏi bảng;

Cập nhật giá trị của một số trường trong một hoặc nhiều bản ghi trong bảng cơ sở dữ liệu;

Tìm kiếm một hoặc nhiều bản ghi đáp ứng một điều kiện cụ thể.

Để thực hiện các hoạt động này, một cơ chế truy vấn được sử dụng. Kết quả của việc thực hiện truy vấn là một tập hợp các bản ghi được chọn theo tiêu chí nhất định hoặc những thay đổi trong bảng. Các truy vấn tới cơ sở dữ liệu được hình thành bằng ngôn ngữ được tạo đặc biệt cho mục đích này, được gọi là “ngôn ngữ truy vấn có cấu trúc” (SQL - Ngôn ngữ truy vấn có cấu trúc).

Quản trị dữ liệu thường đề cập đến việc bảo vệ dữ liệu khỏi bị truy cập trái phép, hỗ trợ xử lý dữ liệu nhiều người dùng và đảm bảo tính toàn vẹn và nhất quán của dữ liệu.

Theo quy định, bất kỳ ứng dụng web nào cũng có thể được chia thành 2 phần chính: mặt trước, nơi hiển thị tất cả thông tin trang web và mặt sau, nơi thông tin này được tạo và đặt. Trong bài viết này, chúng ta sẽ nói về cơ sở dữ liệu quan hệ là gì và cách thiết kế chúng.

Cơ sở dữ liệu lưu trữ các bản ghi theo cách được tổ chức đặc biệt để có thể dễ dàng tìm thấy và truy xuất thông tin. Bất kỳ cơ sở dữ liệu nào cũng bao gồm một hoặc nhiều bảng. Một bảng tính bao gồm các hàng và cột. Tất cả các hàng đều có cùng một cột và mỗi cột chứa dữ liệu. Nói chung, để hiểu rõ hơn, hãy xác định rằng các bảng trong cơ sở dữ liệu rất giống với các bảng bạn thấy trong Excel.

Dữ liệu dạng bảng có thể được chèn, khôi phục, cập nhật và xóa. Một chữ viết tắt đặc biệt CRUD (Tạo-Đọc-Cập nhật-Xóa) đã được tạo cho gói các thao tác này.

Cơ sở dữ liệu quan hệ là cơ sở dữ liệu nơi tất cả thông tin được lưu trữ trong các bảng được kết nối với nhau bằng các mối quan hệ đặc biệt. Những mối quan hệ này cho phép chúng ta truy xuất và nối dữ liệu từ một hoặc nhiều bảng bằng một truy vấn duy nhất.

Nhưng tất cả chỉ là lời nói. Để thực sự hiểu cơ sở dữ liệu quan hệ là gì, bạn cần thực hành nhiều hơn. Hãy bắt đầu và xem chúng ta phải làm việc với dữ liệu nào.

Bước 1: Chuẩn bị dữ liệu

Để chúng tôi có thứ gì đó để làm việc, tôi đã nhập truy vấn “#databases” trên Twitter và tạo một bảng gồm 10 bản ghi:

Bảng 1

Họ và tên tên tài khoản chữ đã tạo_at theo_tên người dùng
Boris Hadjur _Dẫn đầu ước mơ Scootmedia, MetiersInternet
Gunnar Svalander GunnarSvalander klout, zillow
Phần mềm GE phần mềm GE DayJobDoc, byosko
Adrian Burch Adrianburch Cindy Crawford, Arjantim
Andy Ryder AndyRyder5 Michael Dell, Yahoo
Andy Ryder AndyRyder5 Michael Dell, Yahoo
Brett Englebert Brett_Englebert
Brett Englebert Brett_Englebert RealSkipBayless, stephenasmith
Hệ thống dữ liệu Nimbus Dữ liệu Nimbus dellock6, rohitkilam
SSWUG.ORG SSWUGorg drsql, steam_games

Trước hết, chúng ta hãy nhìn vào các cột:

Đây là dữ liệu thực tế. Nếu muốn, bạn có thể tìm thấy chúng và cập nhật chúng.

Khỏe. Bây giờ tất cả dữ liệu của chúng tôi ở một nơi. Điều này có cho phép chúng ta dễ dàng tìm kiếm chúng không? Không thực sự. Chiếc bàn này không còn lý tưởng nữa. Đầu tiên, chúng ta có các mục trùng lặp trong một số cột: ví dụ: trong x “username” và “following_username”. Ngoài ra, cột “following_username” vi phạm quy tắc của mô hình quan hệ, bởi vì có nhiều hơn 1 giá trị trong các ô (các mục được phân tách bằng dấu phẩy).

Ngoài ra, chúng tôi còn gặp các dòng trùng lặp.

Dữ liệu trùng lặp thực sự là một vấn đề vì... chúng làm cho quá trình CRUD trở nên khó khăn. Ví dụ: khi tìm kiếm qua bảng này, việc xử lý các bản sao sẽ mất thêm thời gian. Ngoài ra, nếu người dùng cập nhật tweet thì chúng tôi sẽ cần ghi đè lên tất cả các bản sao.

Giải pháp cho vấn đề này là chia Bảng 1 thành nhiều bảng. Hãy bắt tay vào giải quyết vấn đề đầu tiên, đó là loại bỏ các cột trùng lặp.

Bước 2. Loại bỏ các cột trùng lặp

Như đã nêu ở trên, cột “username” và “following_username” chứa dữ liệu trùng lặp. Chúng ra đời vì tôi muốn thể hiện mối quan hệ giữa các dòng tweet và người dùng. Hãy cải thiện cấu trúc cơ sở dữ liệu của chúng ta bằng cách chia bảng hiện có thành hai: một bảng sẽ lưu trữ thông tin và bảng còn lại sẽ lưu trữ mối quan hệ giữa các bản ghi.

Vì @Brett_Englebert theo dõi @RealSkipBayless nên chúng tôi sẽ hiển thị tên này trong bảng “tiếp theo” như sau: chúng tôi sẽ đặt tên @Brett_Englebert trong cột “from_user” và @RealSkipBayless trong “to_user”. Cùng xem bảng “theo sau” sẽ như thế nào sau khi tách Bảng 1:

Bảng 2. sau đây

from_user đến người dùng
_Dẫn đầu ước mơ Scootmedia
_Dẫn đầu ước mơ Số liệuInternet
GunnarSvalander thô lỗ
GunnarSvalander màu vàng
phần mềm GE DayJobDoc
phần mềm GE byosko
Adrianburch CindyCrawford
Adrianburch Arjantim
AndyRyder MichaelDell
AndyRyder Yahoo
Brett_Englebert RealSkipBayless
Brett_Englebert Stephenasmith
Dữ liệu Nimbus dellock6
Dữ liệu Nimbus rohitkilam
SSWUGorg drsql
SSWUGorg trò chơi hơi nước

Bảng 3. người dùng

Họ và tên tên tài khoản chữ đã tạo_at
Boris Hadjur _Dẫn đầu ước mơ Bạn nghĩ gì về #gửi email #chiến dịch #lưu lượng truy cập ở #USA? Thị trường hiện nay có tốt không? bạn có #cơ sở dữ liệu không? Thứ ba, 12/02/2013 08:43:09 +0000
Gunnar Svalander GunnarSvalander Bill Gates nói về cơ sở dữ liệu, phần mềm miễn phí trên Reddit http://t.co/ShX4hZlA #billgates #databases Thứ ba, 12/02/2013 07:31:06 +0000
Phần mềm GE phần mềm GE RT @KirkDBorne: Các bài đọc trong #Databases: danh sách đọc xuất sắc, nhiều danh mục: http://t.co/S6RBUNxq qua @rxin Hấp dẫn. Thứ ba, 12/02/2013 07:30:24 +0000
Adrian Burch Adrianburch RT @tisakovich: @NimbusData tại hội nghị Dữ liệu lớn @Barclays ở San Francisco hôm nay, nói chuyện về #ảo hóa, #cơ sở dữ liệu và #bộ nhớ flash. Thứ ba, 12/02/2013 06:58:22 +0000
Andy Ryder AndyRyder5 http://t.co/D3KOJIvF bài viết về Madden 2013 sử dụng AI để dự đoán siêu bát #databases #bus311 Thứ ba, 12/02/2013 05:29:41 +0000
Andy Ryder AndyRyder5 http://t.co/rBhBXjma một bài viết về cài đặt quyền riêng tư và facebook #databases #bus311 Thứ ba, 12/02/2013 05:24:17 +0000
Brett Englebert Brett_Englebert #BUS311 NCFPD của Đại học Minnesota đang tạo #cơ sở dữ liệu để ngăn chặn “gian lận thực phẩm”. http://t.co/0LsAbKqJ Thứ ba, 12/02/2013 01:49:19 +0000
Brett Englebert Brett_Englebert Các công ty #BUS311 có thể đang bảo vệ #cơ sở dữ liệu sản xuất của họ, nhưng còn các tệp sao lưu của họ thì sao? http://t.co/okJjV3Bm Thứ ba, 12/02/2013 01:31:52 +0000
Hệ thống dữ liệu Nimbus Dữ liệu Nimbus @NimbusData CEO @tisakovich @BarclaysHội nghị Dữ liệu lớn trực tuyến tại San Francisco hôm nay, nói chuyện về #ảo hóa, #cơ sở dữ liệu và #bộ nhớ flash Thứ hai, 11/02/2013 23:15:05 +0000
SSWUG.ORG SSWUGorg Đừng quên đăng ký tham gia hội chợ MIỄN PHÍ vào thứ Sáu tuần này: #Databases, #BI và #Sharepoint: Những điều bạn cần biết! http://t.co/Ijrqrz29 Thứ hai, 11/02/2013 22:15:37 +0000

Đã tốt hơn rồi. Bây giờ trong bảng “người dùng” (Bảng 3), chúng tôi chỉ lưu trữ thông tin về các tweet và trong bảng sau (Bảng 2), chúng tôi lưu trữ các phần phụ thuộc của người dùng.

Người sáng lập lý thuyết cơ sở dữ liệu quan hệ, Edgar Codd, sẽ gọi quá trình này (loại bỏ các bản sao khỏi các cột trong bảng) đưa cơ sở dữ liệu về dạng bình thường đầu tiên.

Bước 3: Xóa các bản sao khỏi hàng

Bây giờ chúng ta sẽ chuyển sang khắc phục các vấn đề khác, cụ thể là loại bỏ các hàng trùng lặp trong các hàng của bảng “người dùng”. Vì @AndyRyder5 và @Brett_Englebert mỗi người đều đăng nhiều tweet nên tên của họ nằm trong bảng “người dùng” ( bàn số 3) được nhân đôi trong cột full_name. Vấn đề này cũng được giải quyết bằng cách phân vùng bảng “người dùng”.

Vì văn bản tweet và thời điểm nó được tạo là dữ liệu duy nhất nên chúng tôi sẽ đặt chúng vào cùng một bảng. Chúng tôi cũng cần chỉ ra mối quan hệ giữa các tweet và người dùng. Với mục đích này, tôi đã tạo một tên người dùng cột đặc biệt.

Bảng 4. tweet

tên tài khoản chữ đã tạo_at
_Dẫn đầu ước mơ Bạn nghĩ gì về #gửi email #chiến dịch #lưu lượng truy cập ở #USA? Thị trường hiện nay có tốt không? bạn có #cơ sở dữ liệu không? Thứ ba, 12/02/2013 08:43:09 +0000
GunnarSvalander Bill Gates nói về cơ sở dữ liệu, phần mềm miễn phí trên Reddit http://t.co/ShX4hZlA #billgates #databases Thứ ba, 12/02/2013 07:31:06 +0000
phần mềm GE RT @KirkDBorne: Các bài đọc trong #Databases: danh sách đọc xuất sắc, nhiều danh mục: http://t.co/S6RBUNxq qua @rxin Hấp dẫn. Thứ ba, 12/02/2013 07:30:24 +0000
Adrianburch RT @tisakovich: @NimbusData tại hội nghị Dữ liệu lớn @Barclays ở San Francisco hôm nay, nói chuyện về #ảo hóa, #cơ sở dữ liệu và #bộ nhớ flash. Thứ ba, 12/02/2013 06:58:22 +0000
AndyRyder5 http://t.co/D3KOJIvF bài viết về Madden 2013 sử dụng AI để dự đoán siêu bát #databases #bus311 Thứ ba, 12/02/2013 05:29:41 +0000
AndyRyder5 http://t.co/rBhBXjma một bài viết về cài đặt quyền riêng tư và facebook #databases #bus311 Thứ ba, 12/02/2013 05:24:17 +0000
Brett_Englebert #BUS311 NCFPD của Đại học Minnesota đang tạo #cơ sở dữ liệu để ngăn chặn “gian lận thực phẩm”. http://t.co/0LsAbKqJ Thứ ba, 12/02/2013 01:49:19 +0000
Brett_Englebert Các công ty #BUS311 có thể đang bảo vệ #cơ sở dữ liệu sản xuất của họ, nhưng còn các tệp sao lưu của họ thì sao? http://t.co/okJjV3Bm Thứ ba, 12/02/2013 01:31:52 +0000
Dữ liệu Nimbus @NimbusData CEO @tisakovich @BarclaysHội nghị Dữ liệu lớn trực tuyến tại San Francisco hôm nay, nói chuyện về #ảo hóa, #cơ sở dữ liệu và #bộ nhớ flash Thứ hai, 11/02/2013 23:15:05 +0000
SSWUGorg Đừng quên đăng ký tham gia hội chợ MIỄN PHÍ vào thứ Sáu tuần này: #Databases, #BI và #Sharepoint: Những điều bạn cần biết! http://t.co/Ijrqrz29 Thứ hai, 11/02/2013 22:15:37 +0000

Bảng 5. người dùng

Họ và tên tên tài khoản
Boris Hadjur _Dẫn đầu ước mơ
Gunnar Svalander GunnarSvalander
Phần mềm GE phần mềm GE
Adrian Burch Adrianburch
Andy Ryder AndyRyder5
Brett Englebert Brett_Englebert
Hệ thống dữ liệu Nimbus Dữ liệu Nimbus
SSWUG.ORG SSWUGorg

Sau khi phân vùng trong bảng người dùng ( Bảng 5) chúng ta có các dòng duy nhất (không lặp lại).

Quá trình loại bỏ các bản sao khỏi chuỗi này được gọi là chuyển sang dạng chuẩn thứ hai.

Bước 4. Nối các bảng dựa trên khóa

Vì vậy, do hành động của chúng tôi, Bảng 1 được chia thành 3 phần: người theo dõi (Bảng 2), tweet (Bảng 4), người dùng (Bảng 5). Tất cả các bản sao đã được loại bỏ. Để có thể dễ dàng trích xuất dữ liệu từ cấu trúc này trong tương lai, chúng tôi phải kết nối các bảng độc lập với nhau bằng các mối quan hệ đặc biệt sẽ cung cấp cho chúng tôi thông tin về người dùng nào sở hữu tweet nào và ai theo dõi ai.

Để tạo mối quan hệ giữa các bản ghi, chúng ta cần nhập một mã định danh duy nhất được gọi là khóa chính.

Nói chung, trong Bảng 4 và 5, chúng tôi đã thực hiện việc này. Trong bảng “người dùng”, khóa chính là cột “tên người dùng” vì tên người dùng phải là giá trị duy nhất và không thể lặp lại. Trong bảng “tweet”, chúng tôi sử dụng khóa này để biểu thị mối quan hệ giữa người dùng và tweet. Cột “tên người dùng” trong bảng “tweet” được gọi là khóa ngoại.

Nếu bạn đã từng làm việc với cơ sở dữ liệu thì có thể bạn sẽ có một câu hỏi: liệu chúng ta có thể sử dụng cột “tên người dùng” làm khóa chính không?

Một mặt, điều này có thể đơn giản hóa quá trình tìm kiếm vì chúng tôi không sử dụng bất kỳ ID số nào. Mặt khác, nếu người dùng muốn thay đổi thông tin đăng nhập của mình thì sao? Điều này có thể dẫn đến một số lượng lớn các vấn đề. Để tránh rơi vào tình huống tương tự, tốt hơn hết bạn nên sử dụng ID số. Tất cả phụ thuộc vào hệ thống của bạn. Nếu bạn cung cấp cho người dùng khả năng thay đổi thông tin đăng nhập thì tốt hơn nên sử dụng trường ID số tăng tự động làm khóa chính. Mặt khác, cột “tên người dùng” khá phù hợp với vai trò này. Tôi sẽ để nó như vậy.

Hãy nhìn vào bảng tweet (Bảng 4). Khóa chính phải là duy nhất cho mỗi hàng. Chúng ta có thể chọn cột nào trong bảng này cho vai trò này? Cột “created_at” sẽ không hoạt động vì về nguyên tắc, 2 người dùng khác nhau có thể đăng một bài cùng một lúc. Cột “văn bản” giống nhau: hai người dùng khác nhau có thể tạo một tweet có nội dung “Xin chào thế giới”. Cột “tên người dùng” trong bảng này là khóa ngoại để biểu thị mối quan hệ giữa người dùng và tweet. Vì vậy, vì tất cả các tùy chọn có thể không phù hợp với chúng tôi, giải pháp tốt nhất là thêm cột id, cột này sẽ là khóa chính cho bảng này.

Bảng 6. tweet có cột id

NHẬN DẠNG tên tài khoản chữ đã tạo_at
1 _Dẫn đầu ước mơ Bạn nghĩ gì về #gửi email #chiến dịch #lưu lượng truy cập ở #USA? Thị trường hiện nay có tốt không? bạn có #cơ sở dữ liệu không? Thứ ba, 12/02/2013 08:43:09 +0000
2 GunnarSvalander Bill Gates nói về cơ sở dữ liệu, phần mềm miễn phí trên Reddit http://t.co/ShX4hZlA #billgates #databases Thứ ba, 12/02/2013 07:31:06 +0000
3 phần mềm GE RT @KirkDBorne: Các bài đọc trong #Databases: danh sách đọc xuất sắc, nhiều danh mục: http://t.co/S6RBUNxq qua @rxin Hấp dẫn. Thứ ba, 12/02/2013 07:30:24 +0000
4 Adrianburch RT @tisakovich: @NimbusData tại hội nghị Dữ liệu lớn @Barclays ở San Francisco hôm nay, nói chuyện về #ảo hóa, #cơ sở dữ liệu và #bộ nhớ flash. Thứ ba, 12/02/2013 06:58:22 +0000
5 AndyRyder5 http://t.co/D3KOJIvF bài viết về Madden 2013 sử dụng AI để dự đoán siêu bát #databases #bus311 Thứ ba, 12/02/2013 05:29:41 +0000
6 AndyRyder5 http://t.co/rBhBXjma một bài viết về cài đặt quyền riêng tư và facebook #databases #bus311 Thứ ba, 12/02/2013 05:24:17 +0000
7 Brett_Englebert #BUS311 NCFPD của Đại học Minnesota đang tạo #cơ sở dữ liệu để ngăn chặn “gian lận thực phẩm”. http://t.co/0LsAbKqJ Thứ ba, 12/02/2013 01:49:19 +0000
8 Brett_Englebert Các công ty #BUS311 có thể đang bảo vệ #cơ sở dữ liệu sản xuất của họ, nhưng còn các tệp sao lưu của họ thì sao? http://t.co/okJjV3Bm Thứ ba, 12/02/2013 01:31:52 +0000
9 Dữ liệu Nimbus @NimbusData CEO @tisakovich @BarclaysHội nghị Dữ liệu lớn trực tuyến tại San Francisco hôm nay, nói chuyện về #ảo hóa, #cơ sở dữ liệu và #bộ nhớ flash Thứ hai, 11/02/2013 23:15:05 +0000
10 SSWUGorg Đừng quên đăng ký tham gia hội chợ MIỄN PHÍ vào thứ Sáu tuần này: #Databases, #BI và #Sharepoint: Những điều bạn cần biết! http://t.co/Ijrqrz29 Thứ hai, 11/02/2013 22:15:37 +0000

Chúng ta có thể làm tương tự với bảng sau, bởi vì không có cột hiện có nào có thể dùng làm khóa chính. Các cột “from_user” và “to_user” là khóa ngoại và biểu thị mối quan hệ giữa các đăng ký của người dùng.

Vì vậy, tại thời điểm này chúng tôi đã làm được rất nhiều thứ. Chúng tôi đã loại bỏ thông tin trùng lặp trong các cột và hàng, đồng thời chọn các cột phù hợp để các bảng của chúng tôi đóng vai trò là khóa chính và khóa ngoại nhằm biểu thị sự phụ thuộc giữa dữ liệu. Quá trình này được gọi là chuẩn hóa và được thiết kế để đưa các bảng của bạn theo mô hình quan hệ. Nhờ chuẩn hóa, chúng ta có thể triển khai các thao tác CRUD một cách đơn giản hơn.

Dưới đây bạn có thể thấy sơ đồ các bảng của chúng tôi và mối quan hệ giữa chúng:

Hệ thống Quản lý Dữ liệu

Bây giờ chúng ta đã có cơ sở dữ liệu quan hệ, chúng ta có thể triển khai nó như thế nào? Để làm được điều này, chúng ta có thể sử dụng các hệ thống quản lý cơ sở dữ liệu (DBMS). Có rất nhiều chương trình tương tự, cả trả phí và miễn phí. Những cái trả phí bao gồm Cơ sở dữ liệu Oracle, IBM DB2 và Microsoft SQL Server. Miễn phí: MySQL, SQLite và PostgreSQL.

Thông thường, các công ty khác nhau sử dụng MySQL. Twitter theo nghĩa này cũng không ngoại lệ.

SQLite thường được sử dụng nhiều hơn khi phát triển ứng dụng cho iOS và Android, nơi lưu trữ nhiều loại thông tin bí mật. Trình duyệt Google Chrome sử dụng SQLite để lưu trữ lịch sử duyệt web, cookie, hình ảnh...

PostgreSQL được sử dụng ít thường xuyên hơn. Có một tiện ích mở rộng PostGIS hữu ích cho nó, giúp DBMS này thuận tiện cho việc lưu trữ dữ liệu vị trí địa lý. Ví dụ: dịch vụ OpenStreetMap sử dụng PostgreSQL.

Ngôn ngữ truy vấn có cấu trúc (SQL)

Khi bạn đã chọn đúng DBMS cho mình và cài đặt nó, bước tiếp theo sẽ là tạo bảng và quản lý dữ liệu. Để làm điều này, chúng ta có thể sử dụng một ngôn ngữ đặc biệt gọi là SQL.

Tạo cơ sở dữ liệu phát triển:

TẠO phát triển CƠ SỞ DỮ LIỆU;

Tạo bảng Người dùng:

TẠO người dùng BẢNG (full_name VARCHAR(100), tên người dùng VARCHAR(100));

Khi tạo trường, chúng ta cần chỉ định loại thông tin sẽ được lưu trữ và kích thước của nó. Các cột “full_name” và “username” sẽ có kiểu VARCHAR, được thiết kế để lưu trữ các chuỗi ký tự. Kích thước 100 ký tự. Bạn có thể tìm thấy một danh sách tất cả các loại.

Thêm một mục:

XÁC NHẬN VÀO người dùng (full_name, tên người dùng) GIÁ TRỊ ("Boris Hadjur", "_DreamLead");

Truy xuất tất cả bài viết của user _DreamLead:

Cập nhật bài đăng:

Xóa một mục:

SQL rất giống với ngôn ngữ của con người (tiếng Anh). Mỗi SQL DBMS có một số tính năng và sự khác biệt riêng, nhưng nhìn chung, tất cả các loại SQL đều tương tự nhau.

Điểm mấu chốt

Trong bài học này, chúng ta đã xem xét quá trình tạo cơ sở dữ liệu quan hệ, lấy một tập hợp dữ liệu và phân phối chúng thành các bảng theo mô hình quan hệ. Chúng tôi cũng đã xem nhanh các DBMS hiện có và ngôn ngữ SQL.

Cơ sở dữ liệu (DB) -Đây là tập hợp dữ liệu có cấu trúc được đặt tên liên quan đến một lĩnh vực chủ đề cụ thể và được dùng để lưu trữ, tích lũy và xử lý bằng máy tính.

Cơ sở dữ liệu quan hệ (RDB) là tập hợp các quan hệ có tên trùng với tên của các quan hệ lược đồ trong lược đồ cơ sở dữ liệu.

Các khái niệm cơ bản Cơ sở dữ liệu quan hệ:

· Loại dữ liệu– loại giá trị của một cột cụ thể.

· Lãnh địa(miền) – tập hợp tất cả các giá trị thuộc tính hợp lệ.

· Thuộc tính(thuộc tính) – tiêu đề cột trong bảng mô tả thuộc tính được đặt tên của một đối tượng, ví dụ: họ của sinh viên, ngày đặt hàng, giới tính của nhân viên, v.v.

· đoàn tùy tùng– một hàng trong bảng biểu thị một tập hợp các giá trị của các thuộc tính có liên quan logic.

· Thái độ(quan hệ) – một bảng phản ánh thông tin về các đối tượng trong thế giới thực, ví dụ: về sinh viên, đơn đặt hàng, nhân viên, cư dân, v.v.

· Khóa chính(khóa chính) – một trường (hoặc tập hợp các trường) của bảng xác định duy nhất từng bản ghi của nó.

· Khóa thay thế là một trường (hoặc tập hợp các trường) không khớp với khóa chính và xác định duy nhất một phiên bản của bản ghi.

· Chìa khóa ngoài là một trường (hoặc tập hợp các trường) có giá trị khớp với các giá trị hiện có của khóa chính của bảng khác. Khi bạn liên kết hai bảng, khóa chính của bảng đầu tiên sẽ được liên kết với khóa ngoại của bảng thứ hai.

· Mô hình dữ liệu quan hệ (RDM)- Tổ chức dữ liệu dưới dạng bảng hai chiều.

Mỗi bảng quan hệ phải có các thuộc tính sau:

1. Mỗi bản ghi bảng là duy nhất, tức là. tập hợp các giá trị trong các trường không được lặp lại.

2. Mỗi giá trị ghi tại giao điểm của một hàng và một cột là giá trị nguyên tử (không thể tách rời).

3. Các giá trị của mỗi trường phải cùng loại.

4. Mỗi trường có một tên duy nhất.

5. Thứ tự của các mục không quan trọng.

Các thành phần chính của cơ sở dữ liệu:

Cánh đồng- đơn vị cơ bản của việc tổ chức dữ liệu một cách logic. Các đặc điểm sau được sử dụng để mô tả trường:

· tên, ví dụ: Họ, Tên, Tên viết tắt, Ngày sinh;

· Kiểu, ví dụ: chuỗi, ký tự, số, ngày tháng;

· độ dài, ví dụ, tính bằng byte;

· độ chính xác cho dữ liệu số, chẳng hạn như hai chữ số thập phân để hiển thị phần phân số của một số.

Ghi- một tập hợp các giá trị của các trường có liên quan một cách logic.

Mục lục– một phương tiện tăng tốc hoạt động tìm kiếm bản ghi, được sử dụng để thiết lập mối quan hệ giữa các bảng. Một bảng có sử dụng chỉ mục được gọi là bảng được lập chỉ mục. Khi làm việc với các chỉ mục, bạn cần chú ý đến việc tổ chức các chỉ mục, đó là cơ sở để phân loại. Một chỉ mục đơn giản được biểu thị bằng một trường đơn lẻ hoặc một biểu thức Boolean xử lý một trường đơn lẻ. Chỉ mục tổng hợp được biểu thị bằng nhiều trường với khả năng sử dụng nhiều chức năng khác nhau. Chỉ mục bảng được lưu trữ trong một tệp chỉ mục.


Toàn vẹn dữ liệu– đây là phương tiện bảo vệ dữ liệu trên các trường giao tiếp, cho phép bạn duy trì các bảng ở trạng thái nhất quán (consistent) (nghĩa là không cho phép tồn tại các bản ghi ở bảng con mà không có bản ghi tương ứng ở bảng cha) bàn).

Lời yêu cầu– một câu hỏi được xây dựng cho một hoặc nhiều bảng được kết nối với nhau chứa tiêu chí lấy mẫu dữ liệu. Truy vấn được thực hiện bằng ngôn ngữ truy vấn có cấu trúc SQL (Ngôn ngữ truy vấn có cấu trúc). Việc truy xuất dữ liệu từ một hoặc nhiều bảng có thể tạo ra một tập hợp các bản ghi được gọi là dạng xem.

Trình bày dữ liệu– một truy vấn được đặt tên được lưu trữ trong cơ sở dữ liệu để lấy dữ liệu (từ một hoặc nhiều bảng).

Chế độ xem về cơ bản là một bảng tạm thời được tạo do kết quả của một truy vấn. Bản thân yêu cầu có thể được gửi đến một tệp, báo cáo, bảng tạm thời, bảng trên đĩa, v.v.

Báo cáo– một thành phần hệ thống có mục đích chính là mô tả và in tài liệu dựa trên thông tin từ cơ sở dữ liệu.

Đặc điểm chung khi làm việc với RDB:

Cách giải thích phổ biến nhất về mô hình dữ liệu quan hệ dường như là của Dữ liệu, người đã tái tạo nó (với nhiều cải tiến khác nhau) trong hầu hết các cuốn sách của mình. Theo Date, mô hình quan hệ bao gồm ba phần mô tả các khía cạnh khác nhau của cách tiếp cận quan hệ: phần cấu trúc, phần thao tác và phần tổng thể.

Phần cấu trúc của mô hình nêu rõ rằng cấu trúc dữ liệu duy nhất được sử dụng trong cơ sở dữ liệu quan hệ là quan hệ n-ary được chuẩn hóa.

Phần thao tác của mô hình khẳng định hai cơ chế cơ bản để thao tác cơ sở dữ liệu quan hệ - đại số quan hệ và phép tính quan hệ. Cơ chế đầu tiên chủ yếu dựa trên lý thuyết tập hợp cổ điển (với một số cải tiến), và cơ chế thứ hai dựa trên bộ máy logic cổ điển của phép tính vị từ bậc nhất. Lưu ý rằng chức năng chính của phần thao tác của mô hình quan hệ là cung cấp thước đo về mối quan hệ của bất kỳ ngôn ngữ cơ sở dữ liệu quan hệ cụ thể nào: một ngôn ngữ được gọi là quan hệ nếu nó có tính biểu cảm và sức mạnh không kém đại số quan hệ hoặc phép tính quan hệ.


28. NGÔN NGỮ THUẬN TÁC. NGƯỜI DỊCH (thông dịch viên và biên dịch). NGÔN NGỮ THUẬN TÁC CƠ BẢN. CẤU TRÚC CHƯƠNG TRÌNH. NHẬN DẠNG. BIẾN. NGƯỜI ĐIỀU HÀNH. XỬ LÝ Mảng MỘT CHIỀU VÀ HAI CHIỀU. CHỨC NĂNG NGƯỜI DÙNG. CHƯƠNG TRÌNH CON. LÀM VIỆC VỚI TỆP DỮ LIỆU.

Ngôn ngữ cấp cao- một ngôn ngữ lập trình có khái niệm và cấu trúc thuận tiện cho nhận thức của con người.

Ngôn ngữ thuật toán(Ngôn ngữ thuật toán) - ngôn ngữ lập trình - ngôn ngữ nhân tạo (chính thức) được thiết kế để viết thuật toán. Ngôn ngữ lập trình được xác định bằng mô tả của nó và được triển khai dưới dạng một chương trình đặc biệt: trình biên dịch hoặc trình thông dịch. Ví dụ về các ngôn ngữ thuật toán là Borland Pascal, C++, Basic, v.v.

Các khái niệm cơ bản của ngôn ngữ thuật toán:

Thành phần của ngôn ngữ:

Ngôn ngữ nói thông thường bao gồm bốn yếu tố cơ bản: ký hiệu, từ, cụm từ và câu. Một ngôn ngữ thuật toán chứa các phần tử tương tự nhau, chỉ có các từ được gọi là cấu trúc cơ bản, các cụm từ được gọi là biểu thức và các câu được gọi là toán tử.

Biểu tượng, các cấu trúc, biểu thức và toán tử cơ bản tạo thành một cấu trúc phân cấp, vì các cấu trúc cơ bản được hình thành từ một chuỗi các ký hiệu.

Biểu thức là một chuỗi các cấu trúc và ký hiệu cơ bản,

Nhà điều hành- một chuỗi các biểu thức, cấu trúc cơ bản và ký hiệu.

Mô tả ngôn ngữ:

Mô tả ký tự bao gồm việc liệt kê các ký tự hợp lệ của ngôn ngữ. Việc mô tả các cấu trúc cơ bản có nghĩa là các quy tắc hình thành của chúng. Mô tả biểu thức là quy tắc hình thành bất kỳ biểu thức nào có ý nghĩa trong một ngôn ngữ nhất định. Mô tả các toán tử bao gồm việc xem xét tất cả các loại toán tử được phép trong ngôn ngữ. Mô tả của mỗi thành phần ngôn ngữ được đưa ra bởi CÚP ĐỔI và NGỤY NGHĨA của nó.

cú pháp các định nghĩa thiết lập các quy tắc để xây dựng các thành phần ngôn ngữ.

Ngữ nghĩa xác định ý nghĩa và quy tắc sử dụng của các thành phần ngôn ngữ mà các định nghĩa cú pháp đã được đưa ra.

Ký hiệu ngôn ngữ- đây là những dấu hiệu cơ bản không thể phân chia mà tất cả các văn bản bằng ngôn ngữ đều được viết.

Cấu trúc cơ bản- đây là những đơn vị ngôn ngữ tối thiểu có ý nghĩa độc lập. Chúng được hình thành từ các ký hiệu cơ bản của ngôn ngữ.

Sự biểu lộ trong ngôn ngữ thuật toán, nó bao gồm các cấu trúc và ký hiệu cơ bản, nó chỉ định một quy tắc để tính một giá trị nhất định.

Nhà điều hành chỉ định mô tả đầy đủ về một số hành động cần được thực hiện. Có thể cần một nhóm câu lệnh để mô tả một hành động phức tạp.

Trong trường hợp này, các toán tử được kết hợp thành Toán tử ghép hoặc Khối. hành động, được chỉ định bởi các toán tử, được thực thi trên dữ liệu. Các câu lệnh của ngôn ngữ thuật toán cung cấp thông tin về các kiểu dữ liệu được gọi là các câu lệnh khai báo hoặc các câu lệnh không thể thực thi được. Một tập hợp các mô tả và toán tử được hợp nhất bởi một thuật toán duy nhất tạo thành một chương trình bằng ngôn ngữ thuật toán. Trong quá trình nghiên cứu ngôn ngữ thuật toán, cần phân biệt ngôn ngữ thuật toán với ngôn ngữ dùng để mô tả ngôn ngữ thuật toán đang nghiên cứu. Thông thường, ngôn ngữ đang được nghiên cứu được gọi đơn giản là một ngôn ngữ và ngôn ngữ mà mô tả về ngôn ngữ đang được nghiên cứu được đưa ra - Ngôn ngữ kim loại.

Người dịch - (English Translator – phiên dịch viên) là một chương trình dịch thuật. Nó chuyển đổi một chương trình được viết bằng một trong các ngôn ngữ cấp cao thành chương trình bao gồm các lệnh máy.

Một chương trình được viết bằng bất kỳ ngôn ngữ thuật toán cấp cao nào đều không thể được thực thi trực tiếp trên máy tính. Máy tính chỉ hiểu ngôn ngữ của lệnh máy. Do đó, một chương trình bằng ngôn ngữ thuật toán phải được dịch (dịch) sang ngôn ngữ lệnh của một máy tính cụ thể. Việc dịch như vậy được thực hiện tự động bởi các chương trình dịch đặc biệt được tạo cho từng ngôn ngữ thuật toán và cho từng loại máy tính.

Có hai phương pháp phát sóng chính - biên soạn và giải thích.

1. Biên dịch: Trình biên dịch(Trình biên dịch tiếng Anh - trình biên dịch, trình thu thập) đọc toàn bộ chương trình, dịch nó và tạo ra một phiên bản hoàn chỉnh của chương trình bằng ngôn ngữ máy, sau đó được thực thi.

Tại biên soạn toàn bộ chương trình gốc ngay lập tức được chuyển đổi thành một chuỗi lệnh máy. Sau đó, chương trình thu được sẽ được thực thi bởi một máy tính với dữ liệu nguồn có sẵn. Ưu điểm của phương pháp này là việc dịch được thực hiện một lần và việc thực hiện (nhiều) chương trình kết quả có thể được thực hiện ở tốc độ cao. Đồng thời, chương trình thu được có thể chiếm nhiều dung lượng trong bộ nhớ máy tính, vì một toán tử ngôn ngữ được thay thế bằng hàng trăm, thậm chí hàng nghìn lệnh trong quá trình dịch. Ngoài ra, việc gỡ lỗi và sửa đổi chương trình phát sóng là rất khó khăn.

2. Phiên dịch: Thông dịch viên(Thông dịch viên tiếng Anh - thông dịch viên, thông dịch viên) dịch và thực hiện từng dòng chương trình.

Tại sự diễn giải chương trình gốc được lưu trữ trong bộ nhớ máy tính gần như không thay đổi. Chương trình thông dịch giải mã lần lượt các câu lệnh của chương trình nguồn và ngay lập tức đảm bảo việc thực thi chúng với dữ liệu có sẵn. Chương trình được thông dịch chiếm ít dung lượng trong bộ nhớ máy tính và dễ dàng gỡ lỗi và sửa đổi. Nhưng việc thực thi chương trình khá chậm, vì với mỗi lần thực hiện, việc giải thích tất cả các toán tử được thực hiện lại.

Các chương trình biên dịch chạy nhanh hơn, nhưng các chương trình được thông dịch thì dễ sửa và thay đổi hơn.

Mỗi ngôn ngữ cụ thể được định hướng theo hướng biên dịch hoặc giải thích - tùy thuộc vào mục đích mà nó được tạo ra. Ví dụ, Pascal thường được sử dụng để giải các bài toán khá phức tạp trong đó tốc độ chương trình là quan trọng. Do đó, ngôn ngữ này thường được triển khai bằng trình biên dịch.

Mặt khác, BASIC được tạo ra như một ngôn ngữ dành cho những người mới lập trình, những người mà việc thực thi chương trình từng dòng một có những lợi thế không thể phủ nhận.

Đôi khi có cả trình biên dịch và trình thông dịch cho cùng một ngôn ngữ. Trong trường hợp này, bạn có thể sử dụng trình thông dịch để phát triển và kiểm tra chương trình, sau đó biên dịch chương trình đã được sửa lỗi để cải thiện tốc độ thực thi của chương trình.

Sự xuất hiện của công nghệ máy tính trong thời hiện đại đã đánh dấu một cuộc cách mạng thông tin trong mọi lĩnh vực hoạt động của con người. Nhưng để ngăn chặn tất cả thông tin trở thành rác thải không cần thiết trên Internet toàn cầu, một hệ thống cơ sở dữ liệu đã được phát minh trong đó các tài liệu được sắp xếp, hệ thống hóa, giúp chúng dễ dàng tìm thấy và gửi đi xử lý tiếp theo. Có ba loại chính - cơ sở dữ liệu quan hệ, phân cấp và mạng.

Mô hình cơ bản

Quay trở lại sự xuất hiện của cơ sở dữ liệu, điều đáng nói là quá trình này khá phức tạp, nó bắt nguồn từ sự phát triển của các thiết bị xử lý thông tin có thể lập trình. Vì vậy, không có gì ngạc nhiên khi số lượng mô hình của họ hiện lên tới hơn 50, nhưng chủ yếu là mô hình phân cấp, quan hệ và mạng, vẫn được sử dụng rộng rãi trong thực tế. Họ là ai?

Phân cấp có cấu trúc cây và được tạo thành từ dữ liệu từ các cấp độ khác nhau, giữa đó có các kết nối. Mô hình cơ sở dữ liệu mạng là một mẫu phức tạp hơn. Cấu trúc của nó giống với cấu trúc phân cấp và sơ đồ của nó được mở rộng và cải tiến. Sự khác biệt giữa chúng là dữ liệu con cháu của mô hình phân cấp chỉ có thể có kết nối với một tổ tiên, trong khi mô hình mạng có thể có một vài trong số đó. Cấu trúc của cơ sở dữ liệu quan hệ phức tạp hơn nhiều. Vì vậy, cần phải phân tích chi tiết hơn.

Khái niệm cơ bản về cơ sở dữ liệu quan hệ

Mô hình này được phát triển vào những năm 1970 bởi Tiến sĩ Edgar Codd. Đó là một bảng có cấu trúc logic với các trường mô tả dữ liệu, mối quan hệ của chúng với nhau, các thao tác được thực hiện trên chúng và quan trọng nhất là các quy tắc đảm bảo tính toàn vẹn của chúng. Tại sao mô hình được gọi là quan hệ? Nó dựa trên các mối quan hệ (từ tiếng Latin relatio) giữa dữ liệu. Có nhiều định nghĩa cho loại cơ sở dữ liệu này. Các bảng thông tin quan hệ dễ dàng hệ thống hóa và xử lý hơn nhiều so với trong mô hình mạng hoặc phân cấp. làm như thế nào? Chỉ cần biết các tính năng, cấu trúc của mô hình và thuộc tính của bảng quan hệ là đủ.

Quá trình mô hình hóa và biên soạn các phần tử cơ bản

Để tạo DBMS của riêng mình, bạn nên sử dụng một trong các công cụ lập mô hình, suy nghĩ về thông tin bạn cần làm việc, thiết kế các bảng và mối quan hệ đơn và đa quan hệ giữa dữ liệu, điền vào các ô thực thể và đặt khóa chính và khóa ngoài.

Việc lập mô hình bảng và thiết kế cơ sở dữ liệu quan hệ được thực hiện bằng các công cụ miễn phí như Workbench, PhpMyAdmin, Case Studio, dbForge Studio. Sau khi thiết kế chi tiết, bạn nên lưu mô hình quan hệ sẵn sàng về mặt đồ họa và dịch nó sang mã SQL tạo sẵn. Ở giai đoạn này, bạn có thể bắt đầu làm việc với việc sắp xếp, xử lý và hệ thống hóa dữ liệu.

Đặc điểm, cấu trúc và thuật ngữ liên quan đến mô hình quan hệ

Mỗi nguồn mô tả các thành phần của nó theo cách riêng, vì vậy để giảm bớt sự nhầm lẫn, tôi xin đưa ra một gợi ý nhỏ:

  • bảng quan hệ = thực thể;
  • bố cục = thuộc tính = tên trường = tiêu đề cột thực thể;
  • thể hiện thực thể = bộ dữ liệu = bản ghi = chuỗi bảng;
  • giá trị thuộc tính = ô thực thể = trường.

Để chuyển sang các thuộc tính của cơ sở dữ liệu quan hệ, bạn nên biết nó bao gồm những thành phần cơ bản nào và chúng nhằm mục đích gì.

  1. Nước hoa. Có thể có một bảng trong cơ sở dữ liệu quan hệ hoặc có thể có cả một tập hợp các bảng mô tả đặc điểm của các đối tượng được mô tả nhờ dữ liệu được lưu trữ trong đó. Chúng có số lượng trường cố định và số lượng bản ghi thay đổi. Bảng mô hình cơ sở dữ liệu quan hệ được tạo thành từ các hàng, thuộc tính và bố cục.
  2. Bản ghi là một số dòng hiển thị dữ liệu đặc trưng cho đối tượng được mô tả. Việc đánh số hồ sơ được hệ thống thực hiện tự động.
  3. Thuộc tính là dữ liệu mô tả các cột của một thực thể.
  4. Cánh đồng. Đại diện cho một cột thực thể. Số của chúng là một giá trị cố định, được đặt trong quá trình tạo hoặc sửa đổi bảng.

Bây giờ, khi đã biết các thành phần cấu thành của bảng, bạn có thể chuyển sang các thuộc tính của mô hình cơ sở dữ liệu quan hệ:

  • Các thực thể cơ sở dữ liệu quan hệ là hai chiều. Nhờ đặc tính này, bạn có thể dễ dàng thực hiện các phép toán logic và toán học khác nhau với chúng.
  • Thứ tự của các giá trị thuộc tính và bản ghi trong bảng quan hệ có thể tùy ý.
  • Một cột trong một bảng quan hệ phải có tên riêng.
  • Tất cả dữ liệu trong một cột thực thể có độ dài cố định và cùng loại.
  • Bất kỳ bản ghi nào về cơ bản đều được coi là một mục dữ liệu.
  • Các thành phần của dây là duy nhất. Không có hàng giống hệt nhau trong một thực thể quan hệ.

Dựa trên các thuộc tính, rõ ràng các giá trị thuộc tính phải cùng loại và cùng độ dài. Chúng ta hãy xem xét các tính năng của các giá trị thuộc tính.

Đặc điểm chính của các trường cơ sở dữ liệu quan hệ

Tên trường phải là duy nhất trong một thực thể. Thuộc tính cơ sở dữ liệu quan hệ hoặc các loại trường mô tả loại dữ liệu nào được lưu trữ trong các trường thực thể. Trường cơ sở dữ liệu quan hệ phải có kích thước cố định, được đo bằng ký tự. Các tham số và định dạng của các giá trị thuộc tính xác định cách sửa dữ liệu trong chúng. Ngoài ra còn có một thứ gọi là “mặt nạ” hoặc “mẫu đầu vào”. Nó nhằm mục đích xác định cấu hình mục nhập dữ liệu cho một giá trị thuộc tính. Một thông báo lỗi phải được đưa ra nếu một mục nhập không chính xác được thực hiện trong một trường. Ngoài ra, một số hạn chế được áp dụng đối với các thành phần trường - điều kiện để kiểm tra tính chính xác và không có lỗi của việc nhập dữ liệu. Có một số giá trị thuộc tính bắt buộc chắc chắn phải chứa đầy dữ liệu. Một số chuỗi thuộc tính có thể chứa đầy giá trị NULL. Dữ liệu trống được phép trong thuộc tính trường. Giống như thông báo lỗi, có những giá trị được hệ thống tự động điền vào - đây là dữ liệu mặc định. Trường được lập chỉ mục được thiết kế để tăng tốc độ tìm kiếm bất kỳ dữ liệu nào.

Sơ đồ bảng cơ sở dữ liệu quan hệ hai chiều

Để hiểu chi tiết mô hình bằng SQL, tốt nhất bạn nên xem sơ đồ bằng một ví dụ. Chúng ta đã biết cơ sở dữ liệu quan hệ là gì. Một bản ghi trong mỗi bảng là một phần tử dữ liệu. Để tránh dư thừa dữ liệu, các thao tác chuẩn hóa phải được thực hiện.

Các quy tắc cơ bản để chuẩn hóa một thực thể quan hệ

1. Giá trị tên trường của bảng quan hệ phải là duy nhất, duy nhất (dạng thông thường thứ nhất - 1NF).

2. Đối với một bảng đã được chuyển sang 1NF, tên của bất kỳ cột không xác định nào phải phụ thuộc vào mã định danh duy nhất của bảng (2NF).

3. Đối với toàn bộ bảng đã ở dạng 2NF, mỗi trường không xác định không thể phụ thuộc vào một phần tử của một giá trị không xác định khác (thực thể 3NF).

Cơ sở dữ liệu: mối quan hệ giữa các bảng

Có 2 bảng quan hệ chính:

  • "Một-nhiều". Xảy ra khi một bản ghi khóa của bảng số 1 tương ứng với một số phiên bản của thực thể thứ hai. Biểu tượng chìa khóa ở một đầu của đường vẽ cho biết thực thể nằm ở phía “một”; đầu kia của đường thẳng thường được đánh dấu bằng ký hiệu vô cực.

  • Mối quan hệ “nhiều-nhiều” được hình thành khi xảy ra tương tác logic rõ ràng giữa một số hàng của một thực thể với một số bản ghi của một bảng khác.
  • Nếu xảy ra phép nối một-một giữa hai thực thể, điều này có nghĩa là mã định danh khóa của một bảng có trong thực thể kia, thì một trong các bảng phải bị loại bỏ, điều đó là dư thừa. Nhưng đôi khi, hoàn toàn vì lý do bảo mật, các lập trình viên cố tình tách biệt hai thực thể này. Do đó, theo giả thuyết, mối quan hệ một-một có thể tồn tại.

Sự tồn tại của các khóa trong cơ sở dữ liệu quan hệ

Khóa chính và khóa phụ xác định các mối quan hệ cơ sở dữ liệu tiềm năng. Các mối quan hệ trong mô hình dữ liệu chỉ có thể có một khóa tiềm năng và đây sẽ là khóa chính. tính cách anh ta như thế nào? Khóa chính là một cột thực thể hoặc tập hợp các thuộc tính mà qua đó dữ liệu có thể được truy cập cho một hàng cụ thể. Nó phải là duy nhất, duy nhất và các trường của nó không được chứa giá trị trống. Nếu khóa chính chỉ bao gồm một thuộc tính thì nó được gọi là đơn giản, nếu không nó sẽ là một thành phần.

Ngoài khóa chính còn có khóa ngoại. Nhiều người không hiểu sự khác biệt giữa chúng. Hãy xem xét chúng chi tiết hơn bằng cách sử dụng một ví dụ. Vì vậy, có 2 bảng: “Văn phòng Trưởng khoa” và “Sinh viên”. Thực thể "Văn phòng Trưởng khoa" chứa các trường sau: "ID sinh viên", "Tên đầy đủ" và "Nhóm". Bảng “Sinh viên” có các giá trị thuộc tính như “Tên”, “Nhóm” và “GPA”. Vì một ID sinh viên không thể giống nhau đối với nhiều sinh viên nên trường này sẽ là khóa chính. “Tên đầy đủ” và “Nhóm” từ bảng “Sinh viên” có thể giống nhau đối với một số người; chúng đề cập đến số ID sinh viên từ thực thể “Văn phòng của Trưởng khoa”, vì vậy chúng có thể được sử dụng làm khóa ngoại.

Ví dụ về mô hình cơ sở dữ liệu quan hệ

Để rõ ràng, chúng tôi đưa ra một ví dụ đơn giản về mô hình cơ sở dữ liệu quan hệ bao gồm hai thực thể. Có một cái bàn tên là "Văn phòng Trưởng khoa".

Cần phải tạo các kết nối để tạo ra một cơ sở dữ liệu quan hệ đầy đủ. Mục nhập “IN-41”, như “IN-72”, có thể xuất hiện nhiều lần trong bảng hiệu “Văn phòng Trưởng khoa” và trong một số trường hợp hiếm hoi, họ, tên và tên đệm của sinh viên có thể trùng nhau, vì vậy các trường này không thể được thực hiện khóa chính. Hãy hiển thị thực thể "Sinh viên".

Như chúng ta có thể thấy, các loại trường của cơ sở dữ liệu quan hệ hoàn toàn khác nhau. Có cả hồ sơ kỹ thuật số và biểu tượng. Do đó, trong cài đặt thuộc tính, bạn nên chỉ định các giá trị số nguyên, char, vachar, ngày tháng và các giá trị khác. Trong bảng "Văn phòng Trưởng khoa", giá trị duy nhất duy nhất là ID sinh viên. Trường này có thể được lấy làm khóa chính. Tên đầy đủ, nhóm và số điện thoại từ thực thể “Sinh viên” có thể được lấy làm khóa ngoại tham chiếu ID sinh viên. Kết nối đã được thiết lập. Đây là một ví dụ về mô hình mối quan hệ một-một. Theo giả thuyết, một trong các bảng là dư thừa; chúng có thể dễ dàng kết hợp thành một thực thể. Để ngăn chặn việc số ID sinh viên bị công khai, hoàn toàn có thể có hai bảng.