Môn học MaMH TenMH Tập thực thể Cấu trúc DL – M002 XSTK – M006 MMT – null Từ mô hình ER chuyển qua mô hình CSDL Quan Hệ Tập thực thể không phải là tệp thực thể Mô hình ER: hiểu chính xác
Trang 1Môn học
MaMH
TenMH Tập thực thể
Cấu trúc DL – M002 XSTK – M006 MMT – null
Từ mô hình ER chuyển qua mô hình CSDL Quan Hệ
Tập thực thể không phải là tệp thực thể
Mô hình ER: hiểu chính xác và duy nhất
Thuộc tính của mối kết hợp thường xuất hiện trong quan hệ nhiều nhiều (n – n)
MỖi tập thực thể bắt buộc phải có thuộc tính khóa
Không có tập thực thể nào không có thuộc tính nhưng có thể có thực thể có thuộc tính null ( tuy nhiên không có 2 null ) Vì dữ liệu được lưu trữ vào các thuộc tính
Mô hình ER
Tập thực thể
Thuộc tính
Thuộc tính của tập thực thẻ
Thuộc tính khóa
Thuộc tính của mối kết hợp
Mối kết hợp
Chuyển từ mô hình ER sang mô hình CSDL Quan hệ
Thuộc tính
Thuộc tính của tập thực thể Thuộc tính của Quan hệ
Khác : bổ sung thêm
- Kiểu dữ liệu
- Miền giá trị
Miền giá trị thuộc tính : dom(thuoctinh)
Ví dụ dom(ĐTB) thuộc [0,10]
Thuộc tính khóa Thuộc tính khóa chính của quan hệ Hạn chế dùng kiểu string Chuyển qua
dùng kiểu dữ liệu số vì sẽ có một số bài toán sort
Trang 2Sinh Viên
MSSV
hoten ĐTB
Lophoc
Malophoc
Tenlop ĐTB
Sinh Viên
MSSV
hoten ĐTB
Khóa chính : MSSV Khóa : 1 2 3 4
Sinhvien (MSSV, hoten, Sđt, diachi ) Khóa là bộ phân biệt từng dòng CSDL
Khóa :
- MSSV
- Hoặc MSSV +hoten
- Hoặc MSSV +Sđt Khóa ứng viên = chọn khóa nhắn nhất: lọc
ra
- MSSV
- CMND Khóa chính: chọn một trong những khóa ngắn nhất:
- Chọn MSSV Thuộc tính của mối kết hợp Thuộc tính khóa ngoại của quan hệ
Sinhvien (MSSV, hoten, Sđt, diachi, thuoclop: int)
Lophoc ( Malop:int, tenlop:string,)
Khóa ngoại thuoclop tham chiêu đến Malop
Kinh nghiệm :
- khóa chính của lophoc kiểu
dữ liệu gì thì thuoclop có kiểu dữ liệu tương ứng
- Miền giá trị của thuoclop phụ thuộc vào miền giá trị của lophop
- Khóa ngoại được chọn giá trị null
Thuộc
SV1 A SV2 A SV3 D SV4 E SV5 null
A Toán
B Sinh
C Địa
D Toán
Trang 3Sinh Viên
MSSV
hoten ĐTB
Mối kết hợp
Là tương đương hoàn toàn
Là tương đương không hoàn toàn
ER
Quan hệ
Sinhvien ( MSSV: int (auto) ,hoten: String , ĐTB:Float)
Ví dụ điểm là 5.6
- Float: 5.6
- Int: 5
- Char/String: “5.6”
Khi so sánh ĐTB
Ví dụ:
- An : 6.5
- Bình : 10 Nếu float: 6.5 < 10 Nếu string : “6.5>11.5” không hợp lí
Khi lưu trự ĐTB
- Float: 5.6 8Byte 7 digits
- Int: 5 4 Byte
- Char(n) nByte ( 0 – 255)
Nhu cầu chứa đấu thập phân bắt buộc chọn float hay double
Trang 4Quan hệ và lược đồ quan hệ
Trong lược đồ CSDL không có dữ liệu mẫu Quan hệ gồm lược đồ quan hệ và dữ liệu mẫu
Trang 5A X
Sinh Viên
MSSV
hoten Sđt Điachi
Chuyển mô hình
1 Tất cả tập thực thể + thuộc tính + khóa chính
Tạo ra quan hệ cùng tên
Quanhe(thuoctinh + khoachinh)
Lưu ý
- Thuoctinh: thuoctinh thường + thuoctinh suy dien
- bỏ qua các tạp thực thể yếu + thuộc tính ( đa trị, kết hợp)
2 Chuyển thuộc tính đa trị của A ( tập thực thể )
Tạo ra quan hệ mới
Khóa chính mới gồm kháo chính A và đa trị Trỏ khóa chính A về khóa chính A
QuanheMoi ( khóa chính A, thuộc tính đa trị x)
3 Chuyển thuộc tính kết hợp của A
Bổ sung vào quan hệ A:
- Bỏ thuộc tính trung gian
- Bỏ thuộc tính cấp con
Nhớ ghi chú bên dưới: Sinhvien: diachi == sonha + quan
Ví dụ
B1: Sinhvien ( MSSV, hoten B2: Đa trị SinhVienDienThoai(MSSV, SĐT)
B3 : Kết hợp Trường hợp 1: lấy cha bỏ con Sinhvien ( MSSV, hoten, diachi
Trường hợp 2 : lấy con bỏ cha Sinhvien ( MSSV, hoten, sonha, quan
Ghi chú: Sinh viên có thuộc tính địa chỉ = số nhà + phường + quận
Trang 6Sinh Viên
MSSV
TenSV
MonHoc
MaMon
TenMon
(1,n)
(1,n)
4 Chuyển mối kết hợp (n – n )( A B )
- Tạo thành 1 quan hệ mới
- Quan hệ mới lấy tên mối kết hợp
- Khóa là kết hợp của khóa A và B QuanheMoi(Khóa A, Khóa B, Thuộc tính trên mối kết hợp)
1 Sinh viên có thể ĐK 1 hoặc nhiều môn học
1 Môn 1 có thể được đăng kí bới 1 hoặc nhiều sinh viên
B1:
SinhVien(MSSV, TenSV) MonHoc(MaMon, TenMon) B2: Không làm vì ko có thuộc tính đa trị B3: Không làm vì ko có thuộc tính kết họp B4:
Tạo quan hệ đăng kí Nhớ trỏ khỏa chính đến khóa ngoài SinhVien(MSSV, TenSV)
MonHoc(MaMon, TenMon)
DangKi( MSSV, MaMon, Diem Thi)
Trang 7Sinh Viên
MSSV
TenSV
LopHoc
MaLop
TenLop
Thuoc
(1,1)
(1,n)
5 Chuyển mối kết hợp (1,n) A B
Bổ sung vào quan hệ 1, khóa chính của quan hệ nhiều
B1:
SinhVien(MSSV, TenSV) LopHoc(MaLop, TenLop) B2: Không làm vì ko có thuộc tính đa trị B3: Không làm vì ko có thuộc tính kết họp B4: Bỏ qua
B5:
Tạo quan hệ đăng kí Nhớ trỏ khỏa chính đến khóa ngoài SinhVien(MSSV, TenSV, ThuocMaLop) LopHoc(MaLop, TenLop)
6 Đối với mối kết hợp duy nhất ( 1, 1 ) của A và B
Trang 8Sinh Viên
MSSV
TenSV
TheSV
SoThe Co
(1,1)
(1,1)
Bổ dung khóa ngoài cho cả A và B với thuộc tính liên quan
B1:
SinhVien(MSSV, TenSV) TheSV(MaThe)
B2: Không làm vì ko có thuộc tính đa trị B3: Không làm vì ko có thuộc tính kết họp B4: Bỏ qua
B5: Bỏ qua B6:
SinhVien(MSSV, TenSV, coMaThe)
TheSV(MaThe, ThuocMaSV)
7 Chuyển tập thực thể yếu B của A
Chuyển như tập thực thế , tuy nhiên :
Trang 9MaHĐ
TongTien
ChiTietHĐ
MaSP
SL
Co
Co
(1,1)
(1,1)
- Khóa chính = ( Khóa B + Khóa Chính A)
Trường hợp đặc biêt
- Sinh Vien A Đại học có thẻ Sinh Viên X
- Sinh Viên A đó học lên cao học có thẻ Cao học Y
- -> Cách giải quyết : sinh ra 1 anh A’ ( cùng 1 người A)
Anh A sinh viên dùng thẻ X
Anh A’ cao học viên dùng thẻ Y
B1:
HoaDon(MaHD, TongTien) CTHD(MaSP, SL)
B2: Không làm vì ko có thuộc tính đa trị
B3: Không làm vì ko có thuộc tính kết họp
B4: Bỏ qua B5: Bỏ qua
B6: Bỏ qua B7:
HoaDon(MaHD, TongTien) CTHD(MaHĐ , MaSP, SL)
Thêm ghi chú Ghi chú:
-Quan hê CTHD | Mã Hđ: int , MSP:long, SL: int