Mô hình lập trình thứ hai trong Series Một Số Mô Hình Lập Trình Phổ Biến là Declarative Programming
, cũng đã được giới thiệu qua bài viết Imperative & Declarative của Series Tự Học Lập Trình Web mà mình đã thực hiện trước đó.
Ở phần này thì mình chọn SQL
là ngôn ngữ để tìm hiểu song song với việc giới thiệu lại Declarative Programming
; Tuy nhiên do phần giới thiệu ở Series JavaScript cũng rất tổng quát rồi nên mục đích chủ yếu của Sub-Series này mình sẽ để dành tìm hiểu về ngôn ngữ SQL
và sử dụng RDBMS
– môi trường ứng dụng chính của ngôn ngữ này.
RDBMS là …
Tên viết tắt của Relational DataBase Management System – trong đó thì cái Relational DataBase đã được giới thiệu trong Sub-Series Database nếu như bạn đã đồng hành cùng mình từ Series Tự Học Lập Trình Web. Và tại Sub-Series Database đó thì chúng ta cũng đã viết một phần mềm Management System nho nhỏ để quản lý một cái Relational DataBase đơn giản – sử dụng cho trang blog cá nhân đang xây dựng ở thời điểm đó.
Trong trường hợp bạn đến với bài viết này từ một nguồn tìm kiếm nào đó kiểu như Google hay Bing thì đây là định nghĩa ngắn gọn cho cái RDBMS
:
- Relational DataBase – là một cơ sở dữ liệu mà các bản ghi dữ liệu có sự lệ thuộc lẫn nhau. Ví dụ là bản ghi A sẽ cần tham chiếu tới bản ghi B để có thêm thông tin chi tiết về một trường dữ liệu nào đó mô tả cho bản ghi A.
- Management System – là một phần mềm được thiết kế để quản lý cái Relational DataBase ở phía trên. Bạn có thể tự viết một cái nếu muốn, hoặc tìm một cái đã được viết sẵn bởi các lập trình viên rất rất giỏi để sử dụng.
Vậy một cái RDBMS về cơ bản là bao gồm có hai thành phần như trên; Và đứng từ vị trí người sử dụng thì chúng ta cần tìm hiểu nhiều hơn về cái Management System. Cụ thể là khi nhắc tới RDBMS người ta thường nghĩ tới các phần mềm phổ biến sử dụng chung một ngôn ngữ giao tiếp tiêu chuẩn tên là SQL
; Ví dụ như phần mềm SQL Server – Microsoft, MySQL- Oracle, PostgreSQL, Oracle SQL, MariaDB, v.v…
Hãy tạm chưa nói tới ngôn ngữ SQL
. Các phần mềm quản trị dữ liệu này đều có một thiết kế chung đó là được thiết kế ở dạng một HTTP server
. Khi khởi chạy thì phần mềm quản trị database sẽ chờ yêu cầu được gửi tới và phản hồi lại kết quả ở dạng chuỗi mô tả dữ liệu truy vấn được. Tức là thứ mà chúng ta sẽ học cách sử dụng là giao diện lập trình API
do các phần mềm RDBMS
cung cấp. Và ở đây thì mình chọn một cái RDBMS
là MySQL đang thuộc sở hữu của Oracle, để phục vụ cho mục đích học tập khởi đầu.
Cài đặt MySQL Sever
Oracle có cung cấp một phiên bản MySQL miễn phí có thể được tải về tại đây: MySQL Community. Nếu bạn đang sử dụng một bản phân phối Linux nào đó thì có mấy lựa chọn đầu tiên để thêm thư viện các bộ cài MySQL cho APT, YUM, SUSE, v.v… Còn nếu bạn đang sử dụng Windows thì có cái lựa chọn MySQL Installer for Windows ở phía bên dưới để tải về tệp cài đặt tự động.
Thao tác cài đặt trên các hệ điều hành có thể khác nhau đôi chút, tuy nhiên về cơ bản là cứ Next, Next, và Next… vì chúng ta đang mới bắt đầu học sử dụng nên cứ cài đặt theo mặc định thôi chứ không cần tùy biến gì nhiều. Ở bước tùy chỉnh cài đặt mạng Type and Networking
bạn có thể chỉnh lại port
để sử dụng cho phần mềm server
và ghi chú lại đâu đó để sử dụng sau này. Mình sẽ chỉnh lại là 3045
.
Mốc quan trọng tiếp theo là bước đặt mật khẩu cho tài khoản quản trị root
và tùy chọn tạo thêm tài khoản quản trị với tên khác. Bạn chỉ cần nhớ ghi lại thông tin các tài khoản quản trị để sử dụng sau này là được. Ở đây mình để tạm mật khẩu đơn giản là 1->9
cho cả tài khoản quản trị gốc là root
và tài khoản tạo thêm là semiarthanoi
.
Full-Slide cài đặt MySQL-Community trên Windows
Sau khi cài đặt xong thì chúng ta sẽ có một cửa sổ dòng lệnh đang chạy một phần mềm console có tên là MySQL Shell
và một cửa sổ phần mềm quản lý có giao diện đồ họa tên là MySQL Workbench
.
Ở đây chúng ta sẽ không sử dụng cái cửa sổ dòng lệnh và khởi đầu với việc học cách sử dụng phần mềm quản lý MySQL Workbench
.
MySQL Workbench
Ok.. như vậy là sau khi cài đặt xong bộ cài MySQL Community
thì chúng ta đang có một phần mềm quản lý Relational DataBase
ở dạng một HTTP Server
đang chờ nhận yêu cầu ở địa chỉ localhost:3045
hoặc 127.0.0.1:3045
. Lúc này chúng ta đã có thể viết code ở nền tảng bất kỳ và gửi tương tác tới cái MySQL Server
này để thực hiện thao tác điều khiển như lưu các bản ghi dữ liệu mới, truy vấn, cập nhật, hoặc xóa các bản ghi dữ liệu đã có.
Tuy nhiên trước khi viết code để gửi các yêu cầu request
tới cái MySQL Server
để thực hiện các thao tác điều khiển như trên thì chúng ta cần tìm hiểu về các quy ước convention
và các công cụ mà cái server
này cung cấp. Cụ thể là chúng ta sẽ cần quan tâm tới 2 câu hỏi:
- Các bản ghi dữ liệu khi được lưu vào cái
Database Server
này sẽ được biểu thị như thế nào? - Khi cần gửi yêu cầu tới
MySQL Server
để thực hiện một thao tác nào đó như thêm, tìm, sửa, xóa các bản ghi dữ liệu, thì chúng ta cần biểu thị cái yêu cầurequest
đó như thế nào trong code phần mềm mà chúng ta đang xây dựng trên các nền tảng khác nhau? Ví dụ là khi code một ứng dụngNodeJS
mà muốn điều khiển cáiMySQL Server
kia theo ý muốn thì phải biểu thị cái yêu cầu cần gửi tớiMySQL Server
như thế nào?
Và chúng ta sẽ có thể tìm được câu trả lời cho cả 2 câu hỏi trên với sự giúp đỡ của phần mềm MySQL Workbench
đã được cài đặt kèm theo cái MySQL Server
trong bộ MySQL Community
.
Trước hết thì chúng ta cần định hình rõ ở điểm này, phần mềm MySQL Workbench
này là một phần mềm khách Client Program
, tương tác với phần mềm MySQL Server
qua giao thức HTTP chứ không phải là một phần của MySQL Server
. Do đó nên ở giao diện cửa sổ mở đầu thì chúng ta đang có mục MySQL Connections
với một cái server instance
có tên mặc định là MySQL80
nếu bạn không thay đổi khi cài đặt. Bên cạnh đó thì bạn cũng có thể thấy thông tin về tên tài khoản quản trị gốc là root
và địa chỉ nhận yêu cầu là localhost:3045
. Nhấn vào thôi.
Sau khi đăng nhập tài khoản quản trị với mật khẩu 1->9
thì chúng ta sẽ có một giao diện điều khiển với các thông tin truy vấn được từ MySQL Server
, và các nút nhấn gắn kèm các yêu cầu thực hiện các thao tác quản trị để gửi tới đó.
Hmm… ở ô điều hướng Navigator
phía bên trái có 2 tab nhỏ ở phía dưới chân, và chúng ta đang nhìn thấy tab mặc định là các thông tin thống kê quản trị Administration
. Hãy chuyển qua tab Schemas
biểu thị các thiết kế database
xem chúng ta có những gì.
Nguồn: viblo.asia