BÀI TẬP CHUẨN HÓA CƠ SỞ DỮ LIỆU CÓ LỜI GIẢI

     

Mục đích của bài toán chuẩn hóa NF cửa hàng dữ liệu

Giảm thiểu dư vượt dữ liệuLoại bỏ những bất hay khi cập nhật cơ sở dữ liệu

Các kiểu chuẩn chỉnh hóa đại lý dữ liệu

Có 3 dạng chuẩn hóa cơ phiên bản đó là:

– First Normal khung (1NF): dạng chuẩn chỉnh 1NF

– Second Normal form (2NF): dạng chuẩn chỉnh 2NF

– Third Nomal form (3NF): dạng chuẩn 3NF

Các dạng chuẩn chỉnh được bố trí theo máy tự từ thấp cho cao. Để chuẩn hóa 2NF thì các đại lý dữ liệu của công ty phải đạt chuẩn 1NF, tựa như nếu đạt chuẩn chỉnh 3NF thì cần đạt chuẩn 1NF cùng 2NF.Bạn đang xem: bài bác tập chuẩn chỉnh hóa cơ sở dữ liệu có lời giải

Dạng chuẩn 1NF

Cho 1 bảng như bên dưới:


*

Bảng gồm 3 khóa thiết yếu là customer_id, order_id và product_id.

Bạn đang xem: Bài tập chuẩn hóa cơ sở dữ liệu có lời giải

Bảng dữ liệu này vi phạm cả đk của chuẩn chỉnh 1NF vì: address chứa các giá trị trùng lặp, chưa dừng lại ở đó nữa, giá chỉ trị address trong từng hàng không hẳn là solo trị (chỉ có một giá trị), cấp dưỡng đó, trực thuộc tính total_amount hoàn toàn rất có thể tính toán được bằng cách quantity * unit_price, không độc nhất thiết phải đưa vào bảng, tạo ra dư quá dữ liệu. Qua thừa nhận xét trên, ta rất có thể hình dung ra 3 điều kiện cần bắt buộc tuân theo đó là:

Các thuộc tính của bảng phải là nguyên tốGiá trị của các thuộc tính trên những hàng yêu cầu là đối kháng trị, không chứa nhóm lặpKhông gồm một trực thuộc tính nào có mức giá trị hoàn toàn có thể tính toán được xuất phát điểm từ một thuộc tính khác

Từ đó, ta có thể thiết kế lại bảng dữ liệu trên như sau:

Tách những thuộc tính lặp trong bảng như: customer_name, phone ra thành một bảng new là customersTách address thành một bảng riêng có khóa là customer_id để biết địa chỉ cửa hàng đó thuộc về customer nào.Loại quăng quật thuộc tính total_amount.

Kết đúng như sau:


*

Dạng chuẩn 2NF

Quy tắc chuẩn hóa từ chuẩn chỉnh 1NF thành 2NF:

Bước 1: thải trừ các ở trong tính ko khóa phụ thuộc vào vào một bộ phận khóa thiết yếu và bóc tách ra thành một bảng riêng, khóa chính của bảng là thành phần của khóa mà lại chúng dựa vào vào.

Bảng dữ liệu mới nhưng ta kiến thiết vẫn chưa đạt chuẩn 2NF là vì: một số thuộc tính

như description , unit_price phụ trực thuộc vào 1 phần của khóa là product_id chứ không cần phụ thuộc vào cả vào tập khóa (customer_id, order_id, product_id), xuất xắc thuộc tính customer_name và phone cũng chỉ dựa vào vào customer_id, ở trong tính order_date phụ trực thuộc vào customer_id và order_id, nằm trong tính quantity phụ ở trong vào order_id và product_id.

Xem thêm: Giải Bài Tập Vật Lý 10 Bài 5 : Chuyển Động Tròn Đều, Giải Vật Lí 10 Bài 5: Chuyển Động Tròn Đều

Vậy yêu cầu để đạt chuẩn 2NF thì ta đang thiết sau đó bảng dữ liệu chuẩn chỉnh 1NF như sau:

Tách các thuộc tính (product_id, description, unit_price) thành một bảng riêng rẽ là products.Các thuộc tính (customer_id, order_id, order_date) làm cho thành một bảng, mình đặt tên là orders.Còn lại những thuộc tính (order_id, product_id, quantity) làm cho thành một bảng trung gian giữa products và orders, mình đặt là order_products.

Chỉ cần vâng lệnh 2 chuẩn chỉnh mà ta đã được đại lý dữ liệu chuẩn chỉnh hóa như sau:


*

Dạng chuẩn chỉnh 3NF

Điều kiện:

Phải đạt chuẩn 2NFMọi ở trong tính ko khóa phụ thuộc bắc ước vào thuộc tính khóa (nghĩa là toàn bộ các trực thuộc tính không khóa bắt buộc được suy ra trực tiếp từ nằm trong tính khóa)

Quy tắc chuẩn hóa từ 2NF thành 3NF:

Bước 1: vứt bỏ các ở trong tính nhờ vào bắc cầu thoát khỏi quan hệ và tách bóc chúng thành quan hệ tình dục riêng gồm khóa chính là thuộc tính bắc cầu.

Xem thêm: Tiếng Anh Lớp 5 Trang 43 - Hướng Dẫn Học Tiếng Anh Lớp 5

Bước 2: những thuộc tính sót lại lập thành một quan hệ gồm khóa chính là khóa ban đầu.

Để ý thấy cơ sở tài liệu mà ta xây dựng ở chuẩn 2NF đã và đang đạt chuẩn chỉnh 3NF. Thế cho nên mình đã lấy một ví dụ không giống để các bạn tham khảo như sau:

Ví dụ bảng sau vi phạm chuẩn chỉnh 3NF:


*

Ta thấy thuộc tính country_name phụ trực thuộc vào country_id, mà country_id lại dựa vào vào khóa chính là id. Bởi vậy ta nên tách bóc bảng trên thành 2 bảng sau:


*

Author: Nguyễn Vũ Thành Tiến

Đăng ký nhận bộ tài liệu kỹ năng dành riêng cho lập trình viên (video khuyên bảo + slide) trên đây