Khi thiết kế webstite cơ sở dữ liệu là khâu quan trọng không kém deisign và code. Làm sao có một cơ sở dữ liệu đúng, tối ưu và đáp ứng được nhu cầu? Đó là điều mà chúng ta cần giải quyết trong bài hôm nay.
Các khái niệm:
Thực thể:
Là những đối tượng chứa thông tin (dữ liệu) cần quản lý (thêm, xóa, sữa, xem), hay nói đơn giản: thực thể “1 nơi” để chứa dữ liệu trong quá trình vận hành site.
Ví dụ: Nếu cần “1 nơi” để chứa các tin như bảng bên dưới, thì bạn sẽ cần 1 thực thể để chứa tin. Mỗi thực thể có 1 tên(vd tintuc). Mỗi tin gọi là 1 đối tượng dữ liệu cụ thể (nghĩa là 1 tin nào đó)
Bảng dữ liệu
Site của bạn có thể cần nhiều thực thể khác nhau: tintuc, loaitin, users, ykienbandoc …tùy mục đích sử dụng.
Ký hiệu của thực thể:
Mổi thực thể được ký hiệu như sau:
Thực thể trong CSDL
Thuộc tính của thực thể:
Trong thực thể tintuc như trên, tin nào cũng có nhưng thông tin như: TieuDe, TomTat, Ngay, NoiDung. Những thông tin này được gọi tổng quát là thuộc tính của thực thể.
Mỗi thực thể có thế có 1 hoặc nhiều thuộc tính.
Quan hệ giữa các thực thể:
Giữa hai thực thể A và B có thể có hoặc không có quan hệ. Nếu có, thường sẽ có những kiểu quan hệ sau:
Quan hệ 1 -1:
1 đối tượng dữ liệu bên A tương ứng với 1 đối tượng dữ liệu bên B và ngược lại
Ví dụ: 2 thực thể họcsinh và diem có quan hệ 1-1 vì mỗi học sinh có 1 bộ điểm và 1 bộ điểm là của 1 học sinh.
Quan hệ 1 – 1
Quan hệ 1 – nhiều:
1 đối tượng dữ liệu bên A tương ứng với nhiều đối tượng dữ liệu bên B và 1 đối tượng bên B tương tứng với 1 đối tượng dữ liệu bên A
Ví dụ: 2 thực thể loaitin và tin có quan hệ 1-nhiều vì mỗi loại tin có 1 nhiều tin và 1 tin là ở trong 1 loại nào đó
Quan hệ 1 – nhiều
Quan hệ nhiều → nhiều:
1 đối tượng dữ liệu bên A tương ứng với nhiều đối tượng dữ liệu bên B và ngược lại
Ví dụ: 2 thực thể donhang và sanpham có quan hệ nhiều-nhiều vì mỗi đơn hàng có mua nhiều sản phẩm và 1 sản phẩm được mua trong nhiều đơn hàng.
Quan hệ nhiều – nhiều
Mô hình ERD (Entity Relationship Diagram):
Là mô hình mô tả các thực thể trong site & các mối quan hệ giữa chúng. Vẽ ra mô hình ERD là việc cần làm để diễn tả rõ ràng ý đồ, ý tưởng của người chủ website.
Cách vẽ mô hình ERD
-
Liệt kê các thực thể cần thiết trong site
-
Liệt kê các mối quan hệ giữa các thực thể
-
Tách các mối quan hệ nhiều-nhiều thành 2 mối quan hệ 1 nhiều và 1 thực thể trung gian.
Mô hình RD (Relationship Diagram)
Là mô hình mô tả chi tiết các thuộc tính của từng thực thể và các mối quan hệ giữa chúng. Vẽ ra mô hình RD là cần thiết để diễn tả chi tiết, cụ thể từng đối tượng trong site
Cách vẽ mô hình RD
Liệt kê từng thực thể và các thuộc tính của từng thực thể. Mỗi thực thể vẽ như sau:
Mô hình RD
-
Bổ sung các khóa chính, khóa ngoại cho từng thực thể.
-
Gạch dưới các khóa chính, gạch chấm chấm các khóa ngoại.
-
Vẽ quan hệ giữa các thực thể : vẽ từ khóa chính đến khóa ngoại
Table:
Dùng để lưu dữ liệu cho một thực thể. Thực thể chỉ nằm trên giấy, table là hiện thực của nó vào máy tính.
Mỗi cột của Table là 1 thuộc tính của thực thể(field)
Mỗi hàng của Table là 1 đối tượng dữ liệu cụ thể(record)
Tên Table trùng tên thực thể
Table trong CSDL
Khóa chính: Là thông tin để nhận biết từng record trong table (không có ID trùng nhau)
Khóa ngoại: Là thông tin liên hệ với khóa chính ở bảng khác
Cơ sở dữ liệu (Database): Là một tập hợp các table có quan hệ với nhau. Mỗi cơ sở dữ liệu có 1 tên.
Hệ quản trị CSDL: Là các chương trình quản lý CSDL như MySQL, MsSQL, Oracle, Access…
Phụ lục: Các mô hình website cơ bản(chỉ màng tích chất tham khảo)
Mô hình ERD
1. Mô hình ERD tin tức
ERD tin tức
2. Mô hình ERD bán hàng:
ERD web bán hàng
3. Mô hình ERD nhạc:
ERD site nhạc
Mô hình RD:
1.Site Tin Tức:
RD web tin tức
Liệt kê chi tiết các thuộc tính:
<!--
1. theloai: idTL(int(11)),TenTL (varchar(255)),ThuTu(int(11)),AnHien(tinyint(1))
2. loaitin: idLT(int(11)), Ten (varchar(100)), ThuTu (int(11)), AnHien (tinyint(1)), idTL (int(11))
3. sukien: idSK (int(11)), MoTa (varchar(100))
4. binhchon: idBC (int(11)), MoTa (varchar(255)), idLT (int(11)), SoLanChon (int(11)), AnHien (tinyint(1)), ThuTu (int(11))
5. phuongan: idPA (int(11)),MoTa (varchar(255)),SoLanChon(int(11)),idBC(int(11))
6. lienket: idLienKet(int(4)),Ten (varchar(255)),Url (varchar(255)),ThuTu (int(11))
7. cacvitri: idVitri (int(11)), TenViTri (varchar(255))
8. users: idUser (int(11)), HoTen (varchar(100)), UserName (varchar(50)), Password (varchar(50)), DiaChi(varchar(255)), Email (varchar(255)), DienThoai(varchar(100)), GioiTinh (tinyint(1)) , NgaySinh (date), idGroup (int(11)), NgayDangKy (date)
9. tin: idTin (int(11)), TieuDe (varchar(255)), TomTat (varchar(1000)), urlHinh (varchar(255)), Ngay (date), idUser (int(11)), idSK (int(11)), Content (text), idLT int(11)), SoLanXem (int(11)), KeyWord (varchar(255)), TinNoiBat (tinyint(1)), AnHien (tinyint(1))
10.ykien: idYKien (int(11)), idTin (int(11)), Ngay (date), NoiDung (text), Email (varchar(255)), HoTen (varchar(255)), DiaChi (varchar(255))
11. quangcao: idQC (int(11)), MoTa (varchar(255)), Url (varchar(255)), urlHinh (varchar(255)), idLT (int(11)), idViTri (int(11))
-->
2. Site Bán Hàng:
RD site bán hàng
Liệt kê chi tiết các thuộc tính:
<!--
1. chungloai: idCL (int(11)), TenCL (varchar(100)), ThuTu (int(11)), AnHien(tinyint(1))
2. loaisp: idLoai (int(11)), idCL (int(11)), TenLoai (varchar(100)), ThuTu(int(11)), AnHien (int(1))
3. sanpham: idSP (int(11)), TenSP (varchar(100)) , urlHinh (varchar(255)), MoTa (varchar(255)), NgayCapNhat (date), Gia (int(11)), SoLanXem(int(11)) , AnHien (tinyint(1)) , idLoai (int(11)), idCL(int(11)) , GhiChu (varchar(255)), SoLuongTonKho (int(11)), SoLanMua (int(11))
4. users: idUser (int(11)), HoTen (varchar(100)), UserName (varchar(50)), Password (varchar(50)), DiaChi(varchar(255)), Email (varchar(255)), DienThoai(varchar(100)), NgayDangKy (date), idGroup (int(11)), NgaySinh (date), GioiTinh (tinyint(1))
5. donhang: idDH (int(11)), idUser (int(11)), ThoiDiemDatHang (date), ThoiDiemGiaoHang (date), TenNguoiNhan (varchar(100)), DiaDiemGiaoHang (varchar(255)), TinhTrang (tinyint(1)), GhiChu (varchar(255))
6. chitietdonhang: idChiTiet (int(11)), idDH (int(11)), idSP (int(11)), SoLuong (int(11)), Gia (int(11))
-->
3. Site nhạc:
RD site nhạc
Liệt kê chi tiết các thuộc tính:
<!--
1. theloainhac: idTL (int(11,TenTL (varchar(255)),ThuTu (int (11)),AnHien(tinyint(1))
2. casi idCS: (int(11, HoTenCS (varchar(255)), urlHinhCS (varchar(255)), GioiThieuCS (text)
3. nhacsi: idNS (int(11)), HoTenNS (varchar(255)), urlHinhNS (varchar(255)), GioiThieuNS (text)
4. baihat: idBH (int(11)), TenBH (varchar(255)), LoiBH (text), urlBH (varchar(255)), idCS (int(11)), NgayCapNhat (date), SoLanNghe (int(11)), idNS (int(11)), idTL (int(11)), SoLanDown (int(11))
5. users: idUser (int(11)), HoTen (varchar(100)), UserName (varchar(50)), Password (varchar(50)), DiaChi(varchar(255)), Email (varchar(255)), DienThoai(varchar(100)), NgayDangKy (date), idGroup (int(11)), NgaySinh (date), GioiTinh (tinyint(1))
6. playlist: idPL (int(11)), TenPL (varchar(255)), MoTaPL (text), SoLanNghe (int(11)), NgayCapNhat (date)
7. truyenhinh: idDai (int(11)), TenDai (varchar(255)), MoTa (text), url (varchar(255)), ThuTu (int(11))
-->
Kết luận: Qua bài này chúng ta đã biết các khái niệm cũng như cách phân tích một cơ sở dữ liệu. Các mô hình trên mang tích chất tham khảo bạn phải chỉnh sửa và áp dụng nó vào thực tế của csdl mình cần. Good luck!