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á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:
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
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
1 |
<strong><code lang="sql">Create Database Tên_CSDL</code></strong> |
Ví dụ tạo cơ sở dữ liệu QuanLyBanHang
1 |
<strong><code lang="sql">Create Database QuanLyBanHang</code></strong> |
Cài đặt cơ sở dữ liệu – Tạo bảng
Câu lệnh
1 2 3 4 5 6 7 |
Create Table <strong>Tên_Bảng</strong> ( Tên_Cột Kiểu_Dữ_Liệu(Kích cỡ) ,Tên_Cột Kiểu_Dữ_Liệu(Kích cỡ) ,... <strong> ,primary key (Khoá chính)</strong> <strong> ,foreign key (Khoá ngoại) references Bảng_Tham_Chiếu(Khoá ngoại)</strong> ) |
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
1 |
<strong>,foreign key (Khoá ngoại) references Bảng_Tham_Chiếu(Khoá ngoại)</strong> |
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
1 2 3 4 5 |
Create Table <strong>PHONGBAN</strong> ( <strong> TenPhong</strong> varchar2(30) ,<strong>SDT</strong> varchar2(15) <strong> ,primary key(TenPhong)</strong> ) |
Tạo bảng NHANVIEN
1 2 3 4 5 6 7 8 |
Create Table <strong>NHANVIEN</strong> ( <strong> MaNv</strong> varchar2(15) ,<strong>TenNv</strong> varchar2(50) ,<strong>GioiTinh</strong> varchar2(3) ,<strong>TenPhong</strong> varchar2(30) <strong> ,primary key(MaNv)</strong> <strong> ,foreign key(TenPhong) references PHONGBAN(TenPhong)</strong> ) |
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
1 |
Insert Into <strong>Tên_Bảng</strong> Values (<strong>Dữ liệu cho cột thứ nhất, Dữ liệu cho cột thứ hai, ..</strong>.) |
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
1 2 |
Insert Into <strong>PHONGBAN</strong> Values (<strong>'Phòng IT', '(08)12345678'</strong>); Insert Into <strong>PHONGBAN</strong> Values (<strong>'Phòng nhân sự', '(08)12345679'</strong>); |
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
1 2 3 |
Insert Into <strong>NHANVIEN</strong> Values (<strong>'nv01','Nguyễn Tiến Lên','Nam','Phòng IT'</strong>); Insert Into <strong>NHANVIEN</strong> Values (<strong>'nv02','Trần Bình','Nữ','Phòng IT'</strong>); Insert Into <strong>NHANVIEN</strong> Values (<strong>'nv03','Huỳnh Tiến Tín','Nam','Phòng nhân sự'</strong>); |
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
1 |
Update <strong>Tên_Bảng</strong> Set <strong>Tên_Cột</strong> = <strong>Dữ_Liệu_Thay_Đổi</strong> Where <strong>Điều_Kiện_Thay_Đổi</strong> |
Ví dụ thay đổi tên phòng ban cho nhân viên có mã số nv02 thành Phòng nhân sự. Câu lệnh cập nhật như sau
1 |
Update <strong>NHANVIEN</strong> Set <strong>TenPhong</strong> = '<strong>Phòng nhân sự</strong>' Where <strong>MaNv</strong> = '<strong>nv02</strong>' |
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 và 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
1 |
Delete From <strong>Tên_Bảng</strong> Where <strong>Điều_Kiện_Xoá_Dữ_Liệu</strong> |
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
1 |
Delete From <strong>NHANVIEN</strong> Where <strong>TenPhong</strong> = '<strong>Phòng nhân sự</strong>' |
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