Cài đặt cơ sở dữ liệu (Bài 4)

Cài đặt cơ sở dữ liệu là bước thiết kế CSDL ở mức vật lý. Là xây dựng CSDL quan hệ gồm các bảng từ các quan hệ đã được chuẩn hóa. Ngoài ra, cần phải thêm các ràng buộc và đảm bảo các yêu cầu về toàn vẹn dữ liệu.

Cài đặt cơ sở dữ liệu – Thiết kế các bảng

Là bước đầu tiên trong thiết kế CSDL vật lý. Mỗi bảng biểu diễn một quan hệ đã được chuẩn hóa. Ví dụ Quan hệ KhachHang: MaKH, Hoten, Diachi, Dienthoai được biểu diễn dưới dạng bảng như sau

cài đặt cơ sở dữ liệu

Các nguyên tắc xây dựng bảng bao gồm mỗi quan hệ đã chuẩn hóa trở thành một bảng. Mỗi thuộc tính trong quan hệ trở thành một cột trong bảng. Mỗi thuộc tính có tên, kiểu dữ liệu và miền giá trị và thiết lập ràng buộc cho các thuộc tính (nếu có). Ngoài ra, khóa của quan hệ trở thành khóa chính (PK) của bảng và có giá trị NOT NULL. Các liên kết giữa các quan hệ trở thành ràng buộc tham chiếu (ràng buộc khóa ngoại)

Ví dụ cho CSDL gồm 4 quan hệ như sau

  • PRODUCT: Product Number (PK), Product Description, List Unit Price
  • CUSTOMER: Customer Number (PK),  Customer Name, Customer Address,  Customer City, Customer State, Customer Zip  Code,  Customer Phone
  • INVOICE:  Invoice Number (PK),  Customer Number, Terms, Ship Via,  Order Date
  • INVOICE  LINE  ITEM:   Invoice Number (PK), Product Number (PK), Quantity, Sale Unit Price

4 bảng tương ứng với 4 quan hệ và ràng buộc giữa các bảng như sau:

cai-dat-co-so-du-lieu-2

Cài đặt cơ sở dữ liệu – Bài tập ví dụ

Bài toán quản lý CSDL các đối tượng khách hàng mua hàng. CSDL gồm các đối tượng KhachHang, DonHang, SanPham như sau:

  • KHACHHANG: MaKH , HotenKH, DiaChi, DienThoai
  • DONHANG: SoDH, NgayDatHang, TongTien, NguoiLap
  • SANPHAM: MaSP, TenSP, QuyCach, DonViTinh
  • Mỗi Yêu cầu đặt hàng của KhachHang gồm các thông tin: SoLuong, DonGia, ThanhTien

Hãy thiết kế các bảng cho CSDL trên? Xem đáp án

Cài đặt cơ sở dữ liệu – Các quy tắc đặt tên

Đặt tên bảng: Tên bảng phải phản ánh thực thể. Dùng các kí tự “_” để phân tách các từ và không có các từ “table” hay “file” trong tên bảng;

Đặt tên cột: Tên cột phải dựa trên tên của thuộc tính. Dùng các kí tự “_” để phân tách các từ và tên cột là duy nhất trong bảng.

Cài đặt cơ sở dữ liệu – Tạo cơ sở dữ liệu

Câu lệnh

Create Database Tên_CSDL

Ví dụ tạo cơ sở dữ liệu QuanLyBanHang

Create Database QuanLyBanHang

Cài đặt cơ sở dữ liệu – Tạo bảng

Câu lệnh

Create Table Tên_Bảng (
  Tên_Cột    Kiểu_Dữ_Liệu(Kích cỡ)
  ,Tên_Cột   Kiểu_Dữ_Liệu(Kích cỡ)
  ,...
  ,primary key (Khoá chính)
  ,foreign key (Khoá ngoại) references Bảng_Tham_Chiếu(Khoá ngoại)
)

Trong đó

Bảng tham chiếu phải tồn tại trước và có khoá chính tham gia làm khoá ngoại trong bảng đang được tạo.

Nếu tạo bảng không có khoá ngoại thì loại bỏ dòng

,foreign key (Khoá ngoại) references Bảng_Tham_Chiếu(Khoá ngoại)

Cài đặt cơ sở dữ liệu – Kiểu dữ liệu trong MySQL

Kiểu chuỗi

Kiểu dữ liệu Miêu tả
char(độ dài chuỗi) Chứa chuỗi có chiều dài cố định.
Có thể chứa các chữ cái, số hoặc ký tự đặc biệt.
Độ dài chuỗi được quy định trong ngoặc đơn.
Có thể lưu trữ lên đến 255 ký tự.
varchar(độ dài chuỗi) Chứa chuỗi có độ dài không cố định.
Có thể chứa các chữ cái, số hoặc ký tự đặc biệt.
Độ dài chuỗi được quy định trong ngoặc đơn.
Có thể lưu trữ lên đến 255 ký tự.
 text Chứa chuỗi có độ dài tối đa 65,535 ký tự
mediumtext Chứa chuỗi có độ dài tối đa 16,777,215 ký tự
longtext Chứa chuỗi có độ dài tối đa 4,294,967,295 ký tự

Kiểu số

Kiểu dữ liệu Miêu tả
Số nguyên
TINYINT(độ dài chuỗi) Chứa các số từ -128 đến 127.
Số lượng tối đa các chữ số được quy định trong ngoặc.
SMALLINT(độ dài chuỗi) Chứa các số từ -32768 đến 32767.
Số lượng tối đa các chữ số được quy định trong ngoặc.
MEDIUMINT(độ dài chuỗi) Chứa các số từ -8388608 đến 8388607.
Số lượng tối đa các chữ số cđược quy định trong ngoặc.
INT(size) Chứa các số từ -2147483648 đến 2147483647.
Số lượng tối đa các chữ số có thể được quy định trong ngoặc.
Số thực
FLOAT(size,d) Số lượng tối đa các chữ số có thể được chỉ định trong tham số size.
Số lượng tối đa các chữ số bên phải dấu thập phân được quy định bởi tham số d

Cài đặt cơ sở dữ liệu – Kiểu dữ liệu trong SQL Server

Kiểu chuỗi

Kiểu dữ liệu Miêu tả
char(n) Cố định độ rộng chuỗi. Tối đa 8000 ký tự
varchar(n) Không cố định độ rộng chuỗi. Tối đa 8000 ký tự
varchar(max) Không cố định độ rộng chuỗi. Tối đa 1,073,741,824 ký tự
text Không cố định độ rộng chuỗi. Tối đa 2GB dữ liệu văn bản
nchar(n) Tương tự kiểu dữ liệu char nhưng hỗ trợ Unicode
nvarchar(n) Tương tự kiểu dữ liệu varchar nhưng hỗ trợ Unicode
nvarchar(max) Tương tự kiểu dữ liệu varchar(max) nhưng hỗ trợ Unicode
ntext Tương tự kiểu dữ liệu text nhưng hỗ trợ Unicode

Kiểu số

Kiểu dữ liệu Miêu tả
Số nguyên
tinyint Chứa các số từ 0 đến 255.
smallint Chứa các số từ -32,768 đến 32,767.
int Chứa các số từ -2,147,483,648 đến 2,147,483,647.
Số thực
float Chứa các số từ -1.79E + 308 đến 1.79E + 308.

Cài đặt cơ sở dữ liệu – Kiểu dữ liệu trong Oracle

Kiểu dữ liệu Miêu tả
 char(độ dài chuỗi) Chứa chuỗi với chiều cố định.
Độ dài chuỗi được quy định trong cặp dấu ngoặc đơn từ 1 đến 2000 ký tự.
 varchar2(độ dài chuỗi) Chứa chuỗi có độ dài không cố định.
Độ dài chuỗi được quy định trong ngoặc đơn.
Có thể lưu trữ lên đến 4000 ký tự.
number(p,s) Chứa số bao gồm số nguyên hoặc số thực. p là tổng số chữ số, s là số chữ số bên phải dấu thập phân

Ví dụ về sử dụng kiểu number

Nhập Sử dụng Lưu trữ
1,234,567.89 number 1234567.89
1,234,567.89 number(7) 1234568
1,234,567.89 number(7,1) 1234567.9

Cài đặt cơ sở dữ liệu – Ví dụ tạo 2 bảng

PHONGBAN gồm có tên phòng ban (khoá chính), số điện thoại

NHANVIEN gồm mã nhân viên (khoá chính), tên nhân viên, giới tính và tên phòng ban (khoá ngoại)

Câu lệnh tạo bảng trong Oracle

Tạo bảng PHONGBAN

Create Table PHONGBAN (
   TenPhong varchar2(30)
   ,SDT varchar2(15)
   ,primary key(TenPhong)
)

Tạo bảng NHANVIEN

Create Table NHANVIEN (
  MaNv varchar2(15)
  ,TenNv varchar2(50)
  ,GioiTinh varchar2(3)
  ,TenPhong varchar2(30)
  ,primary key(MaNv)
  ,foreign key(TenPhong) references PHONGBAN(TenPhong)
)

Cài đặt cơ sở dữ liệu – Thêm dữ liệu

Thêm dữ liệu cho các bảng với lưu ý dữ liệu cho khoá chính không được trùng và dữ liệu cho cột khoá ngoại phải tồn tại ở bảng tham chiếu.

Câu lệnh

Insert Into Tên_Bảng Values (Dữ liệu cho cột thứ nhất, Dữ liệu cho cột thứ hai, ...)

Lưu ý

  • Dữ liệu kiểu chuỗi phải đặt trong dấu nháy đơn
  • Số lượng cột và số lượng dữ liệu cho các cột phải giống nhau

Ví dụ thêm dữ liệu cho 2 bảng PHONGBAN và NHANVIEN

Thêm dữ liệu cho bảng PHONGBAN

Tên phòng ban Số điện thoại
Phòng IT (08)12345678
Phòng nhân sự (08)12345679

Câu lệnh

Insert Into PHONGBAN Values ('Phòng IT', '(08)12345678');
Insert Into PHONGBAN Values ('Phòng nhân sự', '(08)12345679');

Thêm dữ liệu cho bảng NHANVIEN

Mã nhân viên Tên nhân viên Giới tính Tên phòng ban
nv01 Nguyễn Tiến Lên Nam Phòng IT
nv02 Trần Bình Nữ Phòng IT
nv03 Huỳnh Tiến Tín Nam Phòng nhân sự

Câu lệnh

Insert Into NHANVIEN Values ('nv01','Nguyễn Tiến Lên','Nam','Phòng IT');
Insert Into NHANVIEN Values ('nv02','Trần Bình','Nữ','Phòng IT');
Insert Into NHANVIEN Values ('nv03','Huỳnh Tiến Tín','Nam','Phòng nhân sự');

Cài đặt cơ sở dữ liệu – Cập nhật dữ liệu

Thay đổi dữ liệu hiện có theo tiêu chí đặt ra và thông thường dữ liệu cho cột khoá chính không được thay đổi

Câu lệnh

Update Tên_Bảng Set Tên_Cột = Dữ_Liệu_Thay_Đổi Where Điều_Kiện_Thay_Đổi

Ví dụ thay đổi tên phòng ban cho nhân viênmã số nv02 thành Phòng nhân sự. Câu lệnh cập nhật như sau

Update NHANVIEN Set TenPhong = 'Phòng nhân sự' Where MaNv = 'nv02'

Lưu ý trong trường hợp có nhiều điều kiện có thể sử dụng toán tử And (và), toán tử Or (hoặc) để lập điều kiện cho mệnh đề Where. Ví dụ những nhân viên ở phòng IT giới tính Nam; những nhân viên ở phòng IT hoặc phòng nhân sự.

Cài đặt cơ sở dữ liệu – Xoá dữ liệu

Xoá dữ liệu đã tồn tại trong các bảng, khi xoá dữ liệu lưu ý ràng buộc khoá ngoại.

Câu lệnh

Delete From Tên_Bảng Where Điều_Kiện_Xoá_Dữ_Liệu

Ví dụ xoá dữ liệu cho những nhân viên thuộc phòng nhân sự, câu lệnh như sau

Delete From NHANVIEN Where TenPhong = 'Phòng nhân sự'

Trong trường hợp không có mệnh đề Where, đồng nghĩa với việc xoá tất cả dữ liệu của bảng

Cài đặt cơ sở dữ liệu – Tổng kết bài học

  • Câu lệnh tạo cơ sở dữ liệu
  • Câu lệnh tạo bảng và kiểu dữ liệu
  • Câu lệnh thêm dữ liệu
  • Câu lệnh cập nhật dữ liệu
  • Câu lệnh xoá dữ liệu

Cài đặt cơ sở dữ liệu – Bài tập thực hành

Bài thực hành số 1: Cài đặt cơ sở dữ liệu QuanLyDuAn gồm các bảng sau và thêm dữ liệu cho tất cả các bảng, mỗi bảng ít nhất 5 dòng.

DONVI
Tên cột Kiểu dữ liệu Ghi chú
TenDv Chuỗi Khoá chính
SDT Chuỗi
DONVI_DIADIEM
Tên cột Kiểu dữ liệu Ghi chú
TenDv Chuỗi Khoá chính
DiaDiem Chuỗi
NHANVIEN
Tên cột Kiểu dữ liệu Ghi chú
MaNv Chuỗi Khoá chính
TenNv Chuỗi
GioiTinh Chuỗi
NgaySinh Chuỗi
NoiSinh Chuỗi
SDT Chuỗi
TenDv Chuỗi Khoá ngoại
DUAN
Tên cột Kiểu dữ liệu Ghi chú
TenDa Chuỗi Khoá chính
TenDv Chuỗi Khoá ngoại
THAMGIA
Tên cột Kiểu dữ liệu Ghi chú
MaNv Chuỗi Khoá chính
TenDa Chuỗi
NgayBD Chuỗi
NgayKT Chuỗi

Bài thực hành số 2: Ứng dụng quản lý tài khoản ngân hàng liên quan đến việc quản lý các đối tượng khách hàng và quản lý các tài khoản của khách hàng. Xây dựng CSDL quản lý tài khoản ngân hàng chính là việc xác định các thông tin về các đối tượng khách hàng và các thông tin về mỗi tài khoản. Sau đây là yêu cầu chi tiết

Thông tin về khách hàng gồm có mã, họ tên, địa chỉsố điện thoại. Trong mã khách hàng là duy nhất.

Mỗi khách hàng được cung cấp một tài khoản gồm số tài khoản, kiểu tài khoản, ngày mở tài khoản số tiền.

Một tài khoản có 1 hoặc nhiều giao dịch và mỗi giao dịch gồm mã giao dịch, thời gian giao dịch, số tiền giao dịch, số dư tài khoản mô tả giao dịch.

Yêu cầu: Cài đặt cơ sở dữ liệu bao gồm các bảng, tạo liên kết giữa các bảng và thêm dữ liệu tối thiểu là 5 dòng cho tất các bảng.

Xem giáo trình môn cơ sở dữ liệu