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ẽ: Show
Dựa theo quy tắc trên, chúng ta có mô hình ER mới như sau: Step 4: lưu ý các Ràng buộc Logic về Nghiệp vụ lưu trữ dữ liệuThô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:
Từ Ràng buộc logic về Nghiệp vụ Lưu trữ của Hệ thống yêu cầu như trên, chúng ta cần thiết kế lại mô hình ER như sau: Tuy nhiên, sẽ gặp vấn đề là có thể tồn tại hai hoặc nhiều Record chứa dữ liệu giống nhau ở tất cả các trường thuộc tính > trùng lặp dữ liệu > không xác định được một đối tượng có tồn tại hay chưa, có là duy nhất trong một Table không. Vậy ta thấy rõ cần tồn tại một/ một nhóm trường thuộc tính định danh cho Table gọi làKHÓA CHÍNH (primary key):
Ngoài ra, thông qua khóa chính của Table, mà các Table khác có thể tham chiếu tới bằng Khóa ngoại (sẽ được giới thiệu chi tiết trong bài KHÓA NGOẠI TRONG SQL) Thao tác với khóa chính bằng giao diện TableTạo khóa chính từ Table có sẵn/Table mớiThao tác phần này dựa trên Database TRUONGHOC ở đầu bài Bước 1: Mở Table cần tạo khóa ở giao diện thiết kế > nhấp chuột phải >Design Bước 2: Nhập chuột phải vào mũi tên hiện hành trước column chỉ định làm khóa chính > Set Primary key Để chọn nhiều hơn một column cùng định danh cho Table bạn giữ phím Ctrl \> chọn các column làm khóa chính > chuột phải > Set Primary key. Kết quả: Sau khi tạo khóa chính thành công. Phía trước Column định danh cóbiểu tượng chìa khóa. Ở cột Allow Nulls tương ứng không có dấu tick > không cho nhận giá trị NULL ở khóa chính.
Lưu ý: Khi Table đã tồn tại khóa chính, việc tạo một khóa chính mới đồng nghĩa với ngầm gỡ khóa chính cũ đã có > đưa column về trạng thái bình thường. Một Table chỉ tồn tại duy nhất một khóa chính, mỗi khóa chính có thể được xác định từ một hay nhiều Column trong Table. Xóa khóa chính trong giao diện TableĐể xóa một khóa chính đã tạo, bạn chọn chuột phải vào biểu tượng khóa chính trước column cần xóa > Remove Primary key Sau khi xóa khóa chính, column trở về trạng thái bình thường, biểu tượng khóa chính biến mất. Ở cộtAllow Nulls vẫn không có dấu tick.
Tạo khóa chính bằng codeCác ràng buộc (constraint) thường dùng trong SQLĐể đảm bảo tính chính xác và đáng tin cậy của dữ liệu khi nhập vào Table, người ta cần có các quy tắc cho dữ liệu đó. Trong SQL gọi các quy tắc này là các ràng buộc toàn vẹn, có thể đi kèm Table hoặc column, và tùy theo mức độ của ràng buộc mà quy định giới hạn dữ liệu cho toàn Table hay chỉ ở column xác định. Sau đây là một số ràng buộc thường gặp trong SQL: Lưu ý: Cặp ràng buộc UNIQUE và DEFAULT không thể đi kèm với nhau. Ví dụ 1:
Ví dụ 2:
Kteam khuyến khích các bạn thực hành các thao tác trong hai ví dụ trên để nhận biết kết quả và hiểu bài một cách tốt nhất. Tạo khóa chính trong lúc khởi tạo TableTạo khóa chính trong quá trình khai báo columnCREATE TABLE <Tên Table> Ví dụ:
Tạo khóa chính sau khi khai báo tất cả columnCREATE TABLE <Tên Table> Ví dụ:
Kết quả: Khóa chính được thiết lập ở hai ví dụ trên Tạo khóa chính cho Table sẵn cóKhóa chính có một columnALTER TABLE <Tên Table> ADD PRIMARY KEY(column) Khóa chính có nhiều columnALTER TABLE <Tên Table> ADD PRIMARY KEY(column1,column2,…columnn) Lưu ý: Khuyến khích tạo khóa chính trước khi bạn nhập dữ liệu cho Table. Khi thiết lập khóa chính cho một hoặc nhiều column đã tồn tại sẵn, cần đảm bảo tất cả column có ràng buộc không rỗng (NOT NULL) và không đồng thời trùng lặp dữ liệu (UNIQUE) ở tất cả các column tạo thành khóa chính. Ví dụ:
Đặt tên cho khóa chính với CONSTRAINTĐể việc quản lý khóa chính được dễ dàng hơn và có hệ thống hơn trong quá trình thao tác thêm, xóa, sửa dữ liệu của khóa chính. Chúng ta sử dụng từ khóaCONSTRAINT để đặt tên cho khóa chính. Nguyên tắc đặt tên cho khóa chính: PK_<tên Table> Cú pháp:CONSTRAINT PK_<Tên Table>PRIMARY KEY (ColumnKey1, ColumnKey2,…, ColumnKeyn) Lưu ý: Khai báo các column tồn tại trong Table trước khi khai báo khóa chính có đặt tên. Ví dụ 1: Thiết lập khóa chính có đặt tên ngay trong quá trình khởi tạo Table
Ví dụ 2: Thêm khóa chính có đặt tên cho Table sẵn có
Xóa khóa chính có đặt tênCú pháp:ALTER TABLE <Tên Table> DROP CONSTRAINT <Tên Khóa chính> Ví dụ:
KếtTrong bài này, chúng ta đã biết cách KHỞI TẠO KHÓA CHÍNH trong SQL Server. Bài sau chúng ta sẽ bắt đầu tìm hiểu về cách KHỞI TẠO KHÓA NGOẠI TRONG SQL. Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của bạn để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó” Tải xuốngTài liệuNhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Tạo khóa chính trong SQL Server dưới dạng file PDF trong link bên dưới. Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com Đừng quên like và share để ủng hộ Kteam và tác giả nhé! ProjectNếu việc thực hành theo hướng dẫn không diễn ra suôn sẻ như mong muốn. Bạn cũng có thể tải xuống PROJECT THAM KHẢO ở link bên dưới! Thảo luậnNếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng. |