Tạo Bảng (table) Theo Quan Hệ Nhiều - Sử Dụng HeidiSQL | Nền Tảng
Có thể bạn quan tâm
-
Vuexy
- Đăng nhập
-
Files
-
Two new item submitted
Marketing Manager '17kb -
52 JPG file Generated
FontEnd Developer '11kb -
25 PDF File Uploaded
Digital Marketing Manager '150kb -
Anna_Strong.doc
Web Designer '256kb -
Members
-
John Doe
UI designer -
Michal Clark
FontEnd Developer -
Milena Gibson
Digital Marketing Manager -
Anna Strong
Web Designer
- No results found.
-
NỀN TẢNG
Tạo bảng (table) theo quan hệ Nhiều - Nhiều (N-N) - Sử dụng HeidiSQL
Chương 3-Bài 5. Tạo bảng (table) theo quan hệ Nhiều - Nhiều (N-N) - Sử dụng HeidiSQL Tác giả: Dương Nguyễn Phú Cường #8619 Ngày đăng: Hồi xưa đó Lượt xem: 4588 Xem định dạng INCác bước thiết kế Quan hệ Nhiều - Nhiều (N-N)
Step 1: Vẽ mô hình thực thể ER và xem xét Quan hệ giữa 2 table giang_vien và lop_hoc
Ta có Quan hệ thực tế giữa Giảng viên và Lớp học như sau:- 1 Giảng viên thì có thể cùng lúc tham gia Giảng dạy cho 1 hoặc nhiều Lớp học.
- 1 Lớp học thì có thể có 1 hoặc nhiều Giảng viên giảng dạy.
Step 2: đặt tên cho Mối quan hệ Nhiều - Nhiều (N-N)
Trong thực tế, để xác định hay ghi nhận Quá trình Công tác / hoặc Phân công Giảng dạy cho Giảng viên (cũng có thể gọi là sắp Thời khóa biểu) cho Giảng viên. Cán bộ phòng Đào tạo thường sẽ có 1 quyển sổ được đặt tên là bảng "Phân công Công tác/Giảng dạy" để ghi nhận lại Giảng viên nào? tham gia Giảng dạy Lớp học nào?Step 3: tiến hành tạo bảng (table) trung gian và chuyển mối liên hệ từ Nhiều - Nhiều (N-N) thành Một-Nhiều (1-N)
Theo quy tắc thiết kế Cơ sở dữ liệu, khi có Quan hệ Nhiều - Nhiều (N-N) xuất hiện, Cơ sở dữ liệu sẽ:- Sinh thêm Bảng (table) Trung gian.
- Bảng (table) Trung gian sẽ có tên là tên của Mối quan hệ Nhiều - Nhiều (N-N). Thường đặt tên là Quá trình / Tham gia / Phân công, ...
- Trong bảng (table) Trung gian sẽ có đầy đủ khóa ngoại (Foreign key - FK) liên kết đến table Master.
- Trong bảng (table) Trung gian sẽ có thêm các cột dùng để lưu trữ thông tin bổ sung/làm rõ nghĩa Mối quan hệ Nhiều - Nhiều (N-N). Tuy nhiên, các cột này không bắt buộc (tùy vào thiết kế của bạn)
Step 4: lưu ý các Ràng buộc Logic về Nghiệp vụ lưu trữ dữ liệu
Thông thường, trong bất kỳ Hệ thống nào, cũng có tồn tại các quy tắc Ràng buộc về mặt lưu trữ. Theo ví dụ trên, ta có ràng buộc logic về Nghiệp vụ lưu trữ dữ liệu như sau:- Phải đảm bảo rằng Một Giảng viên không được dạy cùng 1 Lớp học (tức là dữ liệu ghi nhận trong table phan_cong_cong_tac không được trùng nhau).
- Hay nói cách khác Một Lớp học không thể cùng lúc có nhiều Giảng viên giảng dạy được (trong 1 tiết học cụ thể, không thể có nhiều hơn 1 Giảng viên cùng đứng trên lớp?!)
Cách giải quyết 1:
- Tiến hành tạo ràng buộc Khóa chính (Primary key - PK) bao gồm 2 cột (gv_id, lop_id)
Cách giải quyết 2:
- Tạo thêm 1 cột ID làm khóa chính (Primary key - PK), kiểu số nguyên, tự tăng trong table phan_cong_cong_tac
- Tạo khóa Duy nhất (Unique) bao gồm 2 cột (gv_id, lop_id) để đảm bảo rằng không thể có cặp dữ liệu (gv_id và lop_id) trùng lặp nhau.
Mở rộng thêm bảng (table) mon_hoc
Ta có mối quan hệ thực tế giữa 3 thực thể Giảng viên, Lớp học và Môn học như sau:- 1 Giảng viên thì có thể cùng lúc tham gia Giảng dạy cho 1 hoặc nhiều Lớp học.
- 1 Lớp học thì có thể có 1 hoặc nhiều Giảng viên giảng dạy.
- 1 Lớp học thì có thể học 1 hoặc nhiều Môn học khác nhau (như Toán, Lý, Hóa, Lập trình Web, Thiết kế CSDL, ...)
- 1 Môn học có thể được dạy ở 1 hoặc nhiều Lớp học khác nhau
- ...
Bài tập: thiết kế CSDL có thể lưu trữ và trả lời được các câu hỏi Nghiệp vụ như sau:
- Có thể biết và ghi nhận 1 Giảng viên nào? Đang dạy Môn học nào? Cho Lớp nào?
- Có thể thống kê số lượng các Lớp mà 1 Giảng viên đang phụ trách giảng dạy là bao nhiêu?
- Môn học nào đang được dạy ở các Lớp nhiều nhất?
- Lớp nào đang được nhiều Giảng viên giảng dạy nhất?
- ...
Một số ví dụ Quan hệ Nhiều - Nhiều (N-N) thực tế:
- 1 Sản phẩm có thể cùng lúc thuộc 1 hoặc nhiều Chuyên mục <-> Một Chuyên mục có thể có 1 hoặc nhiều Sản phẩm.
- 1 Nhân viên có thể cùng lúc Chấm công nhiều loại hình (Hành chính, Ngoài giờ, Ngày nghỉ, Lễ/Tết, ...) <-> Một loại hình Chấm công có thể có nhiều Nhân viên.
- Một mẫu Kết quả Xét nghiệm có thể có 1 hoặc nhiều Tiêu chí <-> Một tiêu chí có thể có 1 hoặc nhiều Mẫu Kết quả Xét nghiệm.
- Một phòng Khách sạn có thể có 1 hoặc nhiều Khách thuê <-> Một Khách thuê có thể thuê 1 hoặc nhiều phòng
- ...
Mục lục
Chương trình học
- Giới thiệu, cài đặt môi trường thực hành 1
- Database Online dành cho học tập và thực hành các ví dụ #8691
- Tổng quan, khái niệm về database 2
- Tổng quan, khái niệm về database và các thành phần trong database RDMS #8565
- Các kiểu dữ liệu trong MySQL #8575
- Các lệnh tạo cấu trúc (schema database) 7
- Mô hình thực thể ER của cơ sở dữ liệu (database) NetaShop #2448
- Tạo cơ sở dữ liệu (database) NetaShop - Sử dụng HeidiSQL #8587
- Tạo bảng (table) Danh mục phẳng - Sử dụng HeidiSQL #8582
- Tạo bảng (table) Danh mục có liên kết khóa ngoại (có quan hệ) - Sử dụng HeidiSQL #8597
- Tạo bảng (table) theo quan hệ Nhiều - Nhiều (N-N) - Sử dụng HeidiSQL #8619
- Tạo bảng (table) có Quan hệ Tự thân (self foreign key) - Sử dụng HeidiSQL #8664
- Cơ sở dữ liệu mẫu salomon #11820
- Các lệnh cập nhật dữ liệu (Insert - Update - Delete) 3
- Câu lệnh Thêm dữ liệu (INSERT) #2663
- Câu lệnh Cập nhật dữ liệu (UPDATE) #2665
- Câu lệnh Xóa dữ liệu (DELETE) #2664
- Các lệnh truy vấn dữ liệu (query data) 6
- Câu lệnh Truy vấn dữ liệu SELECT Đơn giản #2666
- Câu lệnh Truy vấn dữ liệu SELECT với bộ lọc dữ liệu WHERE #2668
- Câu lệnh Truy vấn dữ liệu SELECT với sắp xếp dữ liệu ORDER BY #2669
- Câu lệnh Truy vấn dữ liệu SELECT với mệnh đề giới hạn dữ liệu LIMIT OFFSET #8693
- Tìm hiểu cơ chế phân trang (Pagination) và cách viết câu lệnh truy vấn dữ liệu SELECT áp dụng cơ chế phân trang (Pagination) với LIMIT OFFSET #12249
- Bài tập Truy vấn CSDL #2457
- Các lệnh truy vấn dữ liệu (query data) - Nâng cao 5
- Các loại Kết nối LEFT JOIN, FULL JOIN, RIGHT JOIN #2670
- Kết nối các bảng dữ liệu INNER JOIN #2667
- Kết nối các bảng dữ liệu LEFT JOIN #11753
- Kết nối các bảng dữ liệu RIGHT JOIN #11752
- Kết nối các bảng dữ liệu FULL OUTER JOIN #11754
- Bài tập Tổng hợp 1
- Truy vấn dữ liệu cho Nghiệp vụ Bán hàng #2671
- Phân tích, thiết kế Hệ thống 8
- Các mối quan hệ giữa các Thực thể (Entity) #8596
- Bài tập thiết kế Cơ sơ dữ liệu quản lý Nhân viên và Phòng ban #8600
- Bài tập thiết kế Cơ sở dữ liệu Quản lý Giảng viên và Sinh viên #8601
- Bài tập thiết kế Cơ sở dữ liệu Quản lý Chấm công Tiền lương #8620
- Bài tập thiết kế Cơ sở dữ liệu Quản lý Nhân sự #8629
- Bài tập thiết kế Cơ sở dữ liệu Quản lý Bán hàng Thương mại điện tử (Có quản lý Nhập, Xuất, Kho hàng) #9352
- Kho sách, nguồn tài liệu tham khảo Cơ sở dữ liệu MySQL #9001
- Plugin tự động sinh tài liệu mô tả cấu trúc của các bảng cho MySQL Workbench #9356
- Quản trị người dùng và cấp quyền trong MySQL 1
- Tìm hiểu về các loại quyền có trong MySQL #10455
- Tham khảo 2
- Thiết kế Cơ sở dữ liệu Bán hàng TMĐT có quản lý Kho hàng, Nhập xuất, Tồn kho, Phân quyền, Khuyến mãi, Tin tức #12053
- Sinh số ngẫu nhiên RANDOM NUMBER trong MySQL #12292
Chương trình học
Bao gồm Module, Chương, Bài học, Bài tập, Kiểm tra...Chương trình học
- Giới thiệu, cài đặt môi trường thực hành 1
- Database Online dành cho học tập và thực hành các ví dụ #8691
- Tổng quan, khái niệm về database 2
- Tổng quan, khái niệm về database và các thành phần trong database RDMS #8565
- Các kiểu dữ liệu trong MySQL #8575
- Các lệnh tạo cấu trúc (schema database) 7
- Mô hình thực thể ER của cơ sở dữ liệu (database) NetaShop #2448
- Tạo cơ sở dữ liệu (database) NetaShop - Sử dụng HeidiSQL #8587
- Tạo bảng (table) Danh mục phẳng - Sử dụng HeidiSQL #8582
- Tạo bảng (table) Danh mục có liên kết khóa ngoại (có quan hệ) - Sử dụng HeidiSQL #8597
- Tạo bảng (table) theo quan hệ Nhiều - Nhiều (N-N) - Sử dụng HeidiSQL #8619
- Tạo bảng (table) có Quan hệ Tự thân (self foreign key) - Sử dụng HeidiSQL #8664
- Cơ sở dữ liệu mẫu salomon #11820
- Các lệnh cập nhật dữ liệu (Insert - Update - Delete) 3
- Câu lệnh Thêm dữ liệu (INSERT) #2663
- Câu lệnh Cập nhật dữ liệu (UPDATE) #2665
- Câu lệnh Xóa dữ liệu (DELETE) #2664
- Các lệnh truy vấn dữ liệu (query data) 6
- Câu lệnh Truy vấn dữ liệu SELECT Đơn giản #2666
- Câu lệnh Truy vấn dữ liệu SELECT với bộ lọc dữ liệu WHERE #2668
- Câu lệnh Truy vấn dữ liệu SELECT với sắp xếp dữ liệu ORDER BY #2669
- Câu lệnh Truy vấn dữ liệu SELECT với mệnh đề giới hạn dữ liệu LIMIT OFFSET #8693
- Tìm hiểu cơ chế phân trang (Pagination) và cách viết câu lệnh truy vấn dữ liệu SELECT áp dụng cơ chế phân trang (Pagination) với LIMIT OFFSET #12249
- Bài tập Truy vấn CSDL #2457
- Các lệnh truy vấn dữ liệu (query data) - Nâng cao 5
- Các loại Kết nối LEFT JOIN, FULL JOIN, RIGHT JOIN #2670
- Kết nối các bảng dữ liệu INNER JOIN #2667
- Kết nối các bảng dữ liệu LEFT JOIN #11753
- Kết nối các bảng dữ liệu RIGHT JOIN #11752
- Kết nối các bảng dữ liệu FULL OUTER JOIN #11754
- Bài tập Tổng hợp 1
- Truy vấn dữ liệu cho Nghiệp vụ Bán hàng #2671
- Phân tích, thiết kế Hệ thống 8
- Các mối quan hệ giữa các Thực thể (Entity) #8596
- Bài tập thiết kế Cơ sơ dữ liệu quản lý Nhân viên và Phòng ban #8600
- Bài tập thiết kế Cơ sở dữ liệu Quản lý Giảng viên và Sinh viên #8601
- Bài tập thiết kế Cơ sở dữ liệu Quản lý Chấm công Tiền lương #8620
- Bài tập thiết kế Cơ sở dữ liệu Quản lý Nhân sự #8629
- Bài tập thiết kế Cơ sở dữ liệu Quản lý Bán hàng Thương mại điện tử (Có quản lý Nhập, Xuất, Kho hàng) #9352
- Kho sách, nguồn tài liệu tham khảo Cơ sở dữ liệu MySQL #9001
- Plugin tự động sinh tài liệu mô tả cấu trúc của các bảng cho MySQL Workbench #9356
- Quản trị người dùng và cấp quyền trong MySQL 1
- Tìm hiểu về các loại quyền có trong MySQL #10455
- Tham khảo 2
- Thiết kế Cơ sở dữ liệu Bán hàng TMĐT có quản lý Kho hàng, Nhập xuất, Tồn kho, Phân quyền, Khuyến mãi, Tin tức #12053
- Sinh số ngẫu nhiên RANDOM NUMBER trong MySQL #12292
Menu Tiện ích
- Trang chủ Chia sẻ Facebook Liên hệ Hỏi đáp/Chat trợ giúp
Menu Hướng dẫn Học tập
- Nhắc nhở
- Các bước cần thực hiện
❤🧡💛💚💙💜 Học là phải THỰC HÀNH ❤🧡💛💚💙💜
Thực hiện các bước tuần tự theo nội dung Bài học nhé!
Từ khóa » Cách Tạo Bảng Trong Database
-
Tạo Bảng Với CREATE TABLE Kiểu Dữ Liệu Cột Trong SQL
-
Hướng Dẫn Tạo Bảng Trong SQL Server Cực đơn Giản - YouTube
-
CREATE TABLE - Lệnh Tạo Bảng - SQL & Database
-
Khởi Tạo, Xóa, Sửa Table Trong SQL Server | How Kteam
-
CREATE TABLE - Tạo Bảng Trong SQL Server - GreenSQL
-
Bài 4: Khởi Tạo, Xóa, Sửa Table Trong SQL Server
-
Create Table Trong SQL - Học Sql Cơ Bản đến Nâng Cao - VietTuts
-
Cách Tạo Và Quản Lý Bảng Trong SQL
-
Tạo Bảng Mới Dựa Trên Kết Quả Câu Lệnh Truy Vấn CREATE TABLE ...
-
Lệnh Tạo Bảng (Create Table) Trong MySQL - Freetuts
-
TRUY VẤN SQL: CREATE TABLE - NIIT - ICT Hà Nội
-
Tạo Database Và Tạo Table Trong MySQL Với PHP - Góc Học IT
-
Các Thao Tác Cơ Bản Với Database Trong Microsoft SQL Server
-
Lệnh Tạo Bảng (CREATE TABLE) Trong MySQL Server - Quách Quỳnh