[DATABASE] - Taking note

Database: 1 tổ chức để lưu dữ liệu

Database managerment system (DBMS): phần mềm máy tính giúp thao tác với database

Relation database management system (RDBMS): phần mềm máy tính giúp thao tác với CSDL quan hệ (Relation database) 

- Các ngôn ngữ trong SQL (Structured query language)

+ DDL - Data Definition Language: Create, Alter, Drop, Truncate Table

+ DML - Data Manipulation Language: Insert, Update, and Delete data into Table

+ DQL - Data Queries language: Select - lấy các hàng trong bảng

+ DCL - Data Control Language: Grant, Revoke

+ TCL - Transaction Control Language: Commit, Rollback, save point

- Index (chỉ mục) sử dụng cơ chế Data Search Engine: sử dụng để giảm thời gian và tăng hiệu suất thực hiện các câu truy vấn. Index có thể tạo ra trên một hoặc nhiều cột của 1 table

- Partion: Phân chia dữ liệu của table thành những phần nhỏ theo một logic nhất định (chia dữ liệu trong table thành những đoạn riêng biệt) -> Cải tiến về hiệu năng

- Transaction: tiến trình thực hiện 1 nhóm các câu lệnh SQL, thực hiện tuần tự và dộc lập

Khi tất cả câu lệnh thực hiện thành công -> thì các thay dổi mới được lưu vào CSDL 

Khi 1 câu lệnh bị fail thì rollback về trạng thái ban đầu (trước khi thực hiện transaction hoặc tại đểm save point)

+ commit: lưu các thay đổi

+ rollback: quay lại trạng thái trước khi thay đổi

+ savepoint: tạo các điểm để rollback

+ set transaction: đặt tên cho transaction

+ Các câu lệnh điều khiển transaction chỉ thực hiện được với DML (insert, update, delete)

- Subqueries (truy vấn lồng): truy vấn con được nhúng trong mệnh đề where

- Các phép toán: để thực hiện các phép toán cần điều kiện tiên quyết: R và S khả hợp (cùng thuộc tính, các thuộc tính cùng miền giá trị)

+ Phép trừ R - S: tham gia R mà không tham gia S

(select * from R) except (select * from S)

+ Phép hội R U S: tham gia R hoặc tham gia S

(select * from R) union (select * from S)

+ Phép giao R ౧ S: tham gia R và tham gia S

(select * from R) intersect (select * from S)

- 1 table chỉ có thể có 1 primary key và nhiều foreign key

  • primary key: định danh mỗi record trong table, không chức null
  • foreign key: liên kết 2 bảng với nhau, con trỏ tới khóa chính của table khác

- Liên kết nhiều bảng sử dụng JOIN: có 2 dạng là kết bằng và kết không mất thông tin

+ Kết bằng: inner join, self-join

  • self-join: ứng dụng tìm trong cùng một bảng (VD: tìm các sinh viên cùng quê, nhân viên có lương bằng nhau,..)
STUDENT(ID, name, address, email,...)
SELECT s1.* 
FROM Student s1, Student s2 
WHERE s1.ID <> s2.ID AND s1.address = s2.address

+ Kết không mất thông tin: 

  • left-join: Giữ bảng bên trái, ánh xạ qua bảng bên phải, không có dữ liệu đặt NULL
  • right-join: giữ bảng bên phải, ánh xạ bảng bên trái, không có dữ liệu đặt NULL
  • full-join: Giữ 2 bảng ánh xạ, không có dữ liệu đặt NULL

- Cấu trúc chung của câu truy vấn:

SELECT <tên thuộc tính>
FROM <tên bảng>
WHERE <điều kiện> //điều kiện lọc
GROUP BY <tên thuộc tính> //gom nhóm
HAVING <điều kiện> //phép toán trên nhóm
ORDER BY <tên cột> ASC | DESC  //sắp xếp cột theo thứ tự bảng chữ cái

- where vs having

  • where: điều kiện lọc trên từng record 
  • having: điều kiện trên phép toán gom nhóm

- truncate vs delete:

  • truncate: xóa data trong table, reset transaction log (ID quay về 1 khi insert)
  • delete: xóa record theo điều kiện lọc, nếu không có điều kiện thì xóa nguyên bảng, đồng thời log dòng đã xóa vào transaction log (ID chỉ số động là n+1)

- View: gán kết quả truy vấn vào 1 bảng mới (new table) và có thể thực hiện truy vấn trên view

-  Đếm bằng hàm count()

  • count(*): số lượng các record trong table
  • count(<tên cột>): số lượng record của <tên cột>
  • count(<number>): số lượng record của thứ tự cột

DISTINCT: mỗi record chỉ xuất hiện 1 lần

SELECT DISTINCT <tên cột> FROM <tên bảng>;

- Chọn các hàng ngẫu nhiên trong table

SELECT <tên cột> FROM <table_name> SAMPLE(10);

- Quan hệ giữa các bảng

  • Quan hệ 1 - 1: Mỗi bảng chỉ có 1 và chỉ 1 bản ghi tương ứng (key đặt bên nào cũng được)
  • Quan hệ 1 - N : 1 bản ghi ở bảng này có nhiều bản ghi tương ứng ở bảng kia. VD: Customer - Invoice (key bên 1 đặt bên N)
  • Quan hệ N - N: 1 bản ghi trong bảng này có nhiều bản ghi tương ứng ở bảng kia và ngược lại. VD: Employee - Project (giải thích: 1 nhân viên tham gia nhiều dự án và 1 một dự án có nhiều nhân viên)  -> cần đưa về dạng 1 - N và 1 - N (tách ra một bảng chung chứa khóa chính của 2 bảng Employee_Project (employeeID, projectID)
Chuẩn hóa: là quá trình thiết kế để giảm thiểu sự thừa số liệu; chia CSDL thành nhiều bảng và xác định mối quan hệ giữa chúng



Nhận xét

Bài đăng phổ biến từ blog này

[DATABASE] Tìm mọi khóa của lược đồ quan hệ

[DATABASE] Phủ tối thiểu của tập phụ thuộc hàm

[DATABASE] Dạng chuẩn cao nhất của lược đồ quan hệ