Please enable JavaScript.
Coggle requires JavaScript to display documents.
Module 3 - Coggle Diagram
Module 3
Database
Cơ sở dữ lệu quan hệ
- Dữ liệu: là các mô tả về các sự vật hiện tượng, sự kiện...được biểu diễn dưới dạng tài liệu, chữ số, hình ảnh, âm thanh, video...
- Xử lý dữ liệu sẽ có thông tin.
- Dữ liệu và thông tin sẽ cho chúng ta tri thức
- Cơ sở dữ liệu quan là dữ liệu lưu trữ có tổ chức.
- CSDL quan hệ là CSDL được xây dựng trên mô hình dữ liệu quan hệ(relational model of data)
- Dữ liệu được tổ chức trong các bảng (table)
- Bảng bao gồm cột (column) và hàng(row)
- Cột: thuộc tính(attribute), trường(field)
- Hàng: bản ghi(record),hàng(tuple)
- Hệ quản trị CSDL: viết tắt DBMS (database management system) là 1 ứng dụng phần mềm máy tính được sử dụng quản lý CSDL.
- Chức năng: định nghĩa, cập nhật, truy vấn, phân quyền
- MySQL là 1 hệ quản trị CSDL quan hệ miễn phí, mã nguồn mở, chạy đa nền tảng
- MySQL Server: máy chủ dịch vụ quản trị CSDL
- MySQL Client: có thể là MySQL Workbench, phpMyAdmin
- SQL là ngôn ngữ truy vấn có cấu trúc.
- Các nhóm lệnh trong SQL:
- DDL: create, alter, drop
- DML insert, select, update, delete
- DCL: grant, revoke
- TCL: commit, rollback, savepoint
Thiết kế và tạo CSDL
- Bản vẽ ERD(entity relationship diagram) và các kí hiệu.
- Các thành phần
- Entity: thực thể
- Relationship: là các mối quan hệ giữa các thực thể
- Thực thể là đối tượng trong thế giới thực, tồn tại độc lập và phân biệt được với các đối tượng khác. vd nhân viên, sinh viên, lớp học - kí hiệu hình vuông, hình chữ nhật
- Thuộc tính: là những đặc tính- thôn tin riêng của đối tượng.
- Các loại thuộc tính:
- Thuộc tính đơn: không thể chia nhỏ
- Thuộc tính phức hợp: có thể tách ra thành nhiều thành phần
- Giá trị của thuộc tính:
- Thuộc tính đơn trị: thuộc tính có giá trị duy nhất cho 1 thực thể- elip
- Thuộc tính đa trị: các thuộc tính có một tập giá trị cho cùng một thực thể - kí hiệu elip lồng nhau
- Thuộc tính suy diễn: thuộc tính có thể tính toán được từ các thuộc tính khác, vd tuổi tính từ ngày sinh.
- Quan hệ: có 3 mối quan hệ: 1-1, 1-n, n-m
-
- Các bước chuyển ERD sang CSDLQH (table)
- Bước 1: biến đổi các thực thể thành table
- Thuộc tính khóa của thực thể thành khóa chính của table.
- Các thuộc tính thông thường của thực thể là thuộc tính của table.
- Bước 2: biến đổi thuộc tính đa trị:
- Tách các thuộc tính đa trị thành table mới, đặt khóa ngoại vào table hiện tại.
- Bước 3: biến đổi quan hệ 1-1.
- Cách 1: đặt thuộc tính khóa ở phía tùy chọn sang phía bắt buộc.
- Cách 2: Thêm 1 table xác định bởi các thuộc tính là khóa của các thực thể liên quan.
- Bước 4: biến đổi quan hệ 1-n.
- Đặt thuộc tính khóa ở phía 1 sang phía n.
- Bước 5: biến đổi quan hệ n-m.
- Tạo ra 1 table mới có khóa chính là tập hợp của 2 khóa chính của 2 thực thể tham gia vào mối quan hệ
- Các loại ràng buộc: constraint là quy tắc (rule)được áp dụng cho table, cột.
- Mục đích giúp cho dữ liệu được chính xác, toàn vẹn, tin cậy.
- Một số ràng buộc:
- Primary key: khóa chính của 1 hoặc nhiều cột, dùng để xác định bản ghi duy nhất trong table.
- Khóa chính not null và unique.
- Mỗi table chỉ có 1 khóa chính
- Khóa chính có 2 loại là khóa chính đơn và khóa chính phức hợp(composite) là khóa được tạo từ 2 cột trở lên.
- Foreign key: khóa ngoại, là cơ chế tạo ra liên kết giữa 2 table trong CSDL
- Mỗi bảng có thể ko có hoặc có nhiều khóa ngoại
- Kiểu dữ liệu khóa ngoại phải cùng với khóa chính của table mà nó tham chiếu
- Not null: không cho phép giá trị null
- Unique: giá trị duy nhất
- Default: giá trị mặc định cho trường
- Check: kiểm tra dựa vào điều kiện
- Index giúp tăng tốc độ tìm kiếm truy vấn dữ liệu
Thao tác với CSDL
- Chuẩn hóa dữ liệu:
- Mục đích:
- Giảm bớt sự dư thừa dữ liệu
- Đảm bảo tính độc lập
- Giảm bớt lỗi xảy ra khi thực hiện các câu lệnh truy vấn
- Chuẩn hóa là 1 bước cuối cùng để review lại sản phẩm, sau khi đã chuyển đổi sang toàn bộ table.
- Thực hiện 4 bước:
-1NF -> 2NF -> 3NF -> Boyce-Codd, thông thường 3NF đã đạt chuẩn.
- Các loại join:
- Inner join
- Outer join: left join, right join, full join(dùng union kết hợp left và right)
- Where: dùng để lọc kết quả theo dòng.
- Group by: cho phép nhóm các hàng dữ liệu có giá trị giống nhau thành 1 nhóm. giá trị giống nhau đó dựa vào giá trị của 1 hoặc nhiều cột
- Having: gán điều kiện với group by
- Order by: dùng đế sắp xếp dữ liệu: asc tăng dần(mặc định), desc giảm dần
- Một số hàm chỉ chạy được với having, having có thể thay thế cho where, where không hoàn toàn thay thế cho having.
Các hàm thông dụng SQL
- Union và union all: dùng để gộp kết quả:
- Số lượng column 2 câu lệnh select phải giống nhau
- Union loại bỏ record trùng lặp
- Union all: không loại bỏ trùng lặp, tốc độ truy vấn nhanh hơn.
Limit: giới hạn số record trả về bởi câu lệnh select.
limit 0,3 : bắt đầu từ index 0, số record muốn lấy là 3.
Select
from
limit [offer], row_cound
offer không bắt buộc, bắt đầu từ 0, row cound số lượng record trả về
Hàm tổng hợp, hàm gộp: là những hàm hay được sử dụng trong mệnh đề group by: count, max, min, sum, avg.
Truy vấn lồng nhau:
- Truy vấn bên trong 1 truy vấn khác, có tên gọi là sub-query
- Các hàm thông dụng: timestampdiff(year, ngaySinh, curdate()) sẽ trả về tuổi.
- concat(), year(), ucase(), lcase(), now(), curdate(), timestampdiff()
-
-
Tổng quan ứng dụng web
- Khái niệm website và phân loại:
- Tập hợp các trang web(web page) chứa văn bản, âm thanh, hình ảnh, video
- Một trang web có thể lưu trữ ở máy chủ hoặc tại máy tính cá nhân của người dùng.
- Static website là website mà phần nội dung không thay đổi theo thời gian, thường được viết bằng HTML, CSS, Js.
- Dynamic website: là website mà phần nội dung có thể thay đổi theo thời gian ngữ cảnh hoặc tương tác của người dùng. Thường được viết bằng ngôn ngữ back-end như java, php, c#
- Dynamic website thông thường được lưu trữ trên một máy chủ web(web server)
HTTP,HTTPS
- HTTP (HyperText Transfer Protocol) giao thức truyền tải ở trong world wide web(www) dùng để truyền tải dữ liệu giữa webserver và web browser
- HTTPS (secure) là giao thức HTTP có thêm chứng chỉ SSL( Sercure socket layer) để mã hóa dữ liệu trong lúc truyền tải dữ liệu giữa web browser và web server
Mô hình Client-Server
- Client server là mô hình thông dụng trong mạng máy tính, chia gồm 2 thành phần là máy chủ -server và máy khách client
- Ý tưởng: client gửi request đến server. server xử lí yêu cầu của client rồi trả về kết quả (respon) cho client.
Java Servlet
Servlet là một công nghệ được sử dụng để tạo ra các ứng dụng web (được triển khai ở phía server để tạo ra các trang web động)
Vòng đời servlet:
- Tải servlet vào bộ nhớ
- Tạo đối tượng servlet
- Gọi phương thức init, 1 lần duy nhất
- Gọi phương thức service
- Gọi phương thức destroy()
Boostrap
Phân biệt framework và library:
- Library là công cụ, tập hợp các chức năng(function), class được viết sẵn để có thể tái sử dụng
- Framework là một tập hợp các library được đóng gói để phát triển dựa theo framework đó. Framework cung cấp tài nguyên, nguyên tắc, cấu trúc của ứng dụng mà lập trình viên cần phải tuân theo nó.
- Bootstrap là một front-end framework miễn phí.
- Bootstrap gồm các mẫu thiết kế dựa trên HTML, CSS, Javascript
- Bootstrap cung cấp khả năng tạo các thiết kế responsive
Các cách nhúng:
- Dùng CDN hoặc Local(có gợi ý)
Hệ thống grid:
- Bootstrap chia trang web thành 12 cột, Bootstrap 4 có 5 css class:
- col- dành cho thiết bị rất nhỏ(extra small) có chiều rộng nhỏ hơn 576px
- col-sm: dành cho thiết bị nhỏ(small) có chiều rộng lớn hơn hoặc bằng 576px
- col-md dành cho thiết bị trung bình(medium) lớn hơn hoặc bằng 768px
- col-lg dành cho thiết bị lớn (large) chiều rộng lớn hơn hoặc bằng 992px
- col- xl: dành cho thiết bị rất lớn(extra large) chiều rộng lớn hơn 1200px
-
-
-
JDBC
Khái niệm: Java Database Connectivity là một API (Application program interface) cho phép kết nối các chương trình viết bằng ngôn ngữ java với các hệ quản trị CSDL (MySQL, SQL Server, Oracle,DB2...)
Thành phần JDBC:
- Driver:dùng để liên kết các kết nối tới CSDL (mỗi hệ quản trị CSDL có 1 driver riêng)
- Driver Manager: dùng để quán lí danh sách các driver.
- Connection: đối tượng biểu thị có việc kết nối tới CSDL.
- Statement, PreparedStatement, CallableStatement: chứa các câu lệnh SQL gửi tới CSDL để thực thi.
- ResultSet: chứa các tập kết quả trả về từ CSDL (thông thường dùng với câu lệnh select)
- SQL Exception: class xử lí ngoại lệ liên quan đến việc truy cập CSDL.
Trình từ làm việc:
- Tạo connection bởi các thông tin host name, tên database, user, password, port
- Sử dụng Statement, PreparedStatement, CallableStatement để tạo câu lệnh query
- Sử dụng ResultSet để xử lý kết quả ở bước 2(đối với câu lệnh select)
- Đóng connection
PreparedStatement, CallableStatement có thể truy vấn động bằng dấu ?, tốc độ nhanh hơn do biên dịch và lưu trong CSDL, bảo mật hơn
JSP,JSTP
JSP (JavaServer Page)
- Là ngôn ngữ kịch bản phía server cho phép người dùng tạo ra các trang web động.
- So sánh giữa JSP và Servlet:
- Giống nhau: đều là ngôn ngữ phía server, xử lí dữ liệu động. Bản chất JSP cũng chính là servlet. Vòng đời JSP cũng giống như Servlet
- Khác nhau:
- Servlet: mạnh về xử lí logic, điều phối, yếu về giao diện. Mã HTML trong java
- JSP: mạnh về xử lí giao diện, yếu về điều phối, mã Java trong HTML
JSTL (JSP Standard Tag Library) bộ thư viện thẻ chuẩn được bổ sung để hỗ trợ lập trình JSP
- Các nhóm thẻ: core(chứa thẻ ĐK, Lặp), SQL,XML,Function...
vd: <c: if> <c:choose> when, otherwise, <c:foreach>
JDBC- Transaction
Phân biệt các loại Statement:
- Statement: dùng để tạo câu truy vấn tĩnh, hiệu suất thấp, không bảo mật
- PreparedStatement: dùng để tạo câu truy vấn động, hiệu suất cao, bảo mật
- CallableStatement: dùng để tạo câu truy vấn gọi Store Procedure, hiệu suất cao, bảo mật
Transaction: ( giao dich, giao tác) là một tiến trình xử lí có điểm bắt đầu và điểm kết thúc. Transaction gồm nhiều phép thực thi nhỏ, trong đó mỗi phép thực thi sẽ thực hiện một cách tuần tự và độc lập theo nguyên tắc tất cả thành công thì transaction thành công.1 phép thất bại thì tất cả thất bại
- Atomicity: tính nguyên tử, tất cả thành công thì thành công, 1 phép thất bại thì tất cả thất bại
- Consistency: tính nhất quán, đảm bảo đồng nhất dữ liệu
- Isolation: tính độc lập, đảm bảo transaction này độc lập với transaction khác.
- Durability: tính bền vững, nghĩa là khi transaction đã thành công thì kết quả đó sẽ đảm bảo tồn tại dù có xảy ra các lỗi kỹ thuật, thiên tai