Trong bảng nếu không có khóa chính được không vì sao

Trong bài viết này

  • Tổng quan về các khóa chính trong Access

  • Đặt khóa chính bằng các trường bạn đã có trong Access

  • Loại bỏ khóa chính

  • Thay đổi khóa chính trong Access

  • Thông tin bổ sung

Tổng quan về các khóa chính trong Access

Access sử dụng các trường khóa chính để nhanh chóng liên kết dữ liệu từ nhiều bảng và kết hợp chúng một cách có ý nghĩa. Bạn có thể thêm các trường khóa chính trong các bảng khác để tham chiếu trở lại bảng là nguồn của khóa chính. Trong các bảng khác đó, các trường được gọi là khóa ngoại. Ví dụ: trường ID Khách hàng trong bảng Khách hàng cũng có thể xuất hiện trong bảng Đơn hàng. Trong bảng Khách hàng, đó là khóa chính. Trong bảng Đơn hàng, trường này được gọi là khóa ngoại. Khóa ngoại, nói một cách dễ hiểu là khóa chính của một bảng khác. Để biết thêm thông tin, hãy xem mục Kiến thức cơ bản về thiết kế cơ sở dữ liệu.

1. Khóa chính

2. Khóa ngoại

Nếu bạn đang chuyển dữ liệu hiện có vào một cơ sở dữ liệu, bạn có thể đã có sẵn một trường mà bạn có thể dùng làm khóa chính. Thông thường, một số nhận dạng duy nhất như số ID hoặc một số sê-ri hoặc mã, sẽ được dùng làm khóa chính trong một bảng. Ví dụ, bạn có thể có bảng Khách hàng trong đó mỗi khách hàng có một số ID khách hàng duy nhất. Trường ID khách hàng là khóa chính.

Access tự động tạo một chỉ mục cho khóa chính nhằm giúp tăng tốc truy vấn và các thao tác khác. Access cũng đảm bảo rằng mọi bản ghi đều có một giá trị trong trường khóa chính và giá trị đó luôn duy nhất.

Khi bạn tạo bảng mới trong dạng xem Biểu dữ liệu, Access sẽ tự động tạo khóa chính cho bạn và gán tên trường của "ID", cũng như loại dữ liệu Số Tự động.

Làm thế nào để có một khóa chính tốt?

Một khóa chính tốt thường có những đặc điểm sau:

  • Nó nhận dạng duy nhất mỗi hàng

  • Nó không bị bỏ trống hoặc có giá trị null— nó luôn chứa một giá trị

  • Các giá trị mà nó chứa hiếm khi [hoặc không bao giờ] thay đổi

Nếu bạn không thể xác định được một khóa tốt, hãy tạo một trường Số Tự động để dùng làm khóa. Trường Số Tự động sẽ tự tạo một giá trị cho mình mỗi khi có bản ghi được lưu lần đầu. Vì vậy, trường Số Tự động sẽ đáp ứng cả ba đặc điểm của một khóa chính tốt. Để biết thêm thông tin về cách thêm trường Số Tự động, hãy xem phần Thêm trường Số Tự động dưới dạng khóa chính.

Một trường Số Tự động sẽ trở thành một khóa chính tốt.

Ví dụ về các khóa chính kém

Bất kỳ trường nào thiếu một trong những đặc điểm của một khóa chính tốt sẽ bị coi là khóa chính kém. Dưới đây là một vài ví dụ về các trường bị xem như là các khóa chính kém đối với bảng Địa chỉ liên hệ kèm theo phần giải thích lý do vì sao.

Khóa chính kém

Lý do

Tên cá nhân

Có thể không phải là duy nhất và có thể thay đổi

Số điện thoại

Dễ thay đổi.

Địa chỉ email

Dễ thay đổi.

Mã zip

Nhiều người có thể dùng chung một mã ZIP

Tổ hợp dữ liệu và con số

Phần dữ liệu có thể thay đổi, gây khó khăn cho việc quản lý. Có thể gây nhầm lẫn nếu phần dữ liệu được dùng lặp lại làm một trường riêng. Ví dụ, kết hợp thành phố và một chữ số tăng dần [ví dụ, NEWYORK0579] sẽ là một lựa chọn tồi nếu thành phố đó cũng được lưu làm một trường.

Số An sinh Xã hội [SSN]

  • Thông tin riêng tư và không được phép trong các cơ quan chính phủ và một số tổ chức.

  • Một vài người không có SSN

  • Một cá nhân có thể có nhiều số SSN

Khóa tổ hợp: dùng nhiều trường kết hợp làm khóa chính

Trong một số trường hợp, bạn sẽ muốn sử dụng hai trường trở lên làm khóa chính trong một bảng. Ví dụ: bảng Chi tiết Đơn hàng lưu trữ các mục dòng cho đơn hàng có thể sử dụng hai trường làm khóa chính: ID Đơn hàng và ID Sản phẩm. Một khóa chứa nhiều trường được gọi là khóa tổng hợp.

1. Khóa chính - yếu tố thiết yếu đối với cơ sở dữ liệu

1.1. Khái niệm khóa chính là gì?

Khóa chính là gì? Đây là câu hỏi nhận được khá nhiều sự quan tâm gần đây vì chắc hẳn rất nhiều người khi tiếp cận tới máy chính và muốn xử lí các cơ sở dữ liệu - database chưa biết rõ về khái niệm này.

Khái niệm khóa chính là gì?

Khóa chính là khái niệm được sử dụng chủ yếu trong các lĩnh vực liên quan tới ngành công nghệ thông tin, toán tin, khoa học dữ liệu thuộc cơ sở dữ liệu [CSDL]. Thuật ngữ này trong tiếng Anh được dịch là Primary Key, chắc hẳn nhiều bạn sử dụng máy tính mà muốn khóa dữ liệu lại đã từng thấy ký hiệu này đi kèm với chiếc chìa khóa rồi đúng không nào? Như vậy, khái niệm này có thể được định nghĩa theo một số các quan niệm như sau là:

- Khóa chính hay khóa ràng buộc chính được dùng để định danh mỗi một record trong bảng [table] duy nhất của cơ sở dữ liệu hay CSDL

- Khóa chính ngoài ra còn được sử dụng để thiết lập các mối quan hệ [1-n] hoặc có thể gọi là ràng buộc tham chiếu giữa hai bảng [table] với nhau trong cơ sở dữ liệu

Một số chú ý đưa ra cho các cơ sở dữ liệu mà có sử dụng tới khóa chính đó chính là:

- Dữ liệu của mỗi một miền [field] khóa chính phải có tính duy nhất và không được chứa các giá trị Null

- Mỗi một bảng chỉ nên có một khóa chính hay chỉ được thiết lập một Primary Key duy nhất và khóa chính có thể được tạo ra từ nhiều field khác nhau của một bảng

- Khóa chính không được phép là các miền [field] rỗng, không chứa các cơ sở dữ liệu gì hết

- Các khóa chính khi được thiết lập phải có mối quan hệ có định dạng giống nhau về một số các đặc điểm như các loại dữ liệu, kích thước,.. và khác nhau về thể loại. Đây là lưu ý bắt buộc đối với các khóa chính

- Khóa chính được quy định bởi người thiết lập trong hệ cơ sở dữ liệu hay CSDL

1.2. Chức năng của khóa chính

Chức năng chủ yếu của các khóa chính đó chính là chứa các giá trị duy nhất hay cơ sở dữ liệu duy nhất được lưu thông xuyên suốt ở nhiều bảng với nhau. Như chúng ta vẫn biết khóa chính được gọi là các trường hoặc tập hợp các trường chứa các giá trị dữ liệu trên nhiều bảng. Người thiết lập khóa chính có thể sử dụng giá trị của khóa chính để tham chiếu tới toàn bộ các giá trị trên các bản ghi vì nó được thống nhất trên một mối quan hệ định dạng. Do đó, mỗi bản ghi lại có một giá trị khác nhau.

Chức năng của khóa chính

Lưu ý cho người mới dùng đó chính là khóa chính chỉ được thiết lập duy nhất trên mỗi bảng và có nhiều bảng chứa đựng duy nhất một khóa chính. Nhiều ứng dụng yêu cầu người sử dụng máy tính phải thiết lập khóa chính nhưng Access thì lại khác, Access sẽ tự chủ động tạo cho bạn khóa chính để người dùng không bị bỡ ngỡ.

1.3. Phạm vi áp dụng chủ yếu khóa chính trong đời sống

Phạm vi chủ yếu áp dụng các khóa chính trong đời sống hiện tại đó chính là tin học mà đặc biệt là lĩnh vực sử dụng nhiều tới cơ sở dữ liệu như tin học văn phòng. Rất nhiều người mong muốn tìm cách sử dụng các khóa chính để có thể lưu thông các giá trị dữ liệu qua nhiều bảng nhằm tạo ra sự liên kết và thuận lợi cho công việc của chính mình.

Phạm vi áp dụng chủ yếu khóa chính trong đời sống

Tuy nhiên, việc sử dụng và hiểu được khái niệm, cách dùng của khóa chính không hề đơn giản, đặc biệt là với người mới sử dụng thì sẽ cần học hỏi nhiều mới có thể biết được cách vận dụng khóa chính trong lĩnh vực tin học và ứng dụng trong đời sống hằng ngày.

1.4. Cách thiết lập khóa chính cho người mới dùng

Để có thể tạo khóa chính nhằm phục vụ cho công việc của bản thân cũng như bạn bè, đội nhóm và cho công ty, các bạn, đặc biệt là những người mới dùng có thể chọn lựa cách thiết lập khóa chính dưới đây:

-Để tạo khóa chính ngay trong khi tạo bảng [table] ta có thể dùng các câu lệnh SQL Create table:

[MaSV varchar [8] NOT NULL, Holot varchar[20], Ten varchar[8], NgaySinh Date, MaLop varchar[8] NOT NULL, Lienhe varchar[11] NOT NULL, PRIMARY KEY [MaSV]

- Trong trường hợp khóa chính được thiết lập từ nhiều miền khác nhau và ta cần đặt tạo mối ràng buộc cho các khóa chính thì cần phải dùng câu lệnh sau:

[MaSV varchar [8] NOT NULL, Holot varchar[20], Ten varchar[8], NgaySinh DATE, MaLop varchar[8] NOT NULL, Lienhe varchar[11] NOT NULL, CONSTRAINT Ma PRIMARY KEY [MaSV, MaLop]

- Để xóa khóa chính ở các bảng [table] chúng ta cần thực hiện các câu lệnh sau:

ALTER TABLE HSSV DROP PRIMARY KEY;

Hoặc ALTER TABLE HSSV DROP CONSTRAINT Ma

Các câu lệnh được nêu ra trên đây rất có hữu ích cho các bạn mới tiếp cận tới việc sử dụng khóa chính trong ứng dụng và các lĩnh vực liên quan tới tin học!

Khác biệt giữa khóa chính và khóa ngoại trong SQL

  • Báo cáo
  • Thêm vào series của tôi

Các khoá chính và khóa ngoại là hai loại ràng buộc có thể được sử dụng để thực thi toàn vẹn dữ liệu trong các bảng SQL Server và đây là những đối tượng cơ sở dữ liệu quan trọng.

Trong SQL Server, có hai khóa - khóa chính và khoá ngoại dường như giống nhau, nhưng thực tế cả hai đều khác nhau về các tính năng và hành vi. Các khoá chính và khóa ngoại là hai loại ràng buộc có thể được sử dụng để thực thi toàn vẹn dữ liệu trong các bảng SQL Server và đây là những đối tượng cơ sở dữ liệu quan trọng.

Trong bài này, tôi muốn chia sẻ sự khác biệt chính giữa khóa chính và khoá ngoại.

1. Khóa chính là gì

  • Khóa chính [hay ràng buộc khóa chính] được sử dụng để định danh duy nhất mỗi record trong table của cơ sở dữ liệu.

  • Ngoài ra, nó còn dùng để thiết lập quan hệ 1-n [hay ràng buộc tham chiếu] giữa hai table trong cơ sở dữ liệu.

  • Dữ liệu [value] của field khóa chính phải có tính duy nhất. Và không chứa các giá trị Null.

  • Mỗi table nên chỉ có một khóa chính, khóa chính có thể tạo ra từ nhiều field của table.

2. Khóa ngoại là gì

  • Khóa ngoại của một table được xem như con trỏ trỏ tới khóa chính của table khác.

  • Nếu trường MaSV của table DiemSV được sử dụng để tạo ràng buộc tham chiếu đến table HSSV, thông qua khóa chính là MaSV thì MaSV của table DiemSV được gọi là khóa ngoại của bảng này. Đây cũng chính là lý do mà ta nói, khóa ngoại được xem như con trỏ trởi tới khóa chính.

  • Để hiểu rõ hơn về ý nghĩa sử dụng của khóa chính, khóa ngoại chúng ta hãy xét ví dụ sau: Giả sử cơ sở dữ liệu QLDiemSV có hai table: HSSV và DiemSV như sau:

  • Table HSSV gồm 6 field, trong đó MaSV được chọn làm khóa chính của table này.

  • Table DiemSV gồm 6 field, trong đó STT là khóa chính và MaSV được chọn làm khóa ngoại của table này.

  • Như vậy, hai table HSSV và DiemSV quan hệ dữ liệu với nhau thông qua field MaSV của mỗi table [đây là quan hệ 1 – n]. Hay nói cách khác, ràng buộc tham chiếu đã được tạo giữa hai table [từ table DiemSV đến table HSSV].

  • Với ràng buộc này thì, việc người sử dụng vô tình hay cố ý phá hủy các liên kết sẽ bị ngăn chặn. Và, người sử dụng cũng không thể nhập vào cột khóa ngoại một giá trị mà giá trị đó không xuất hiện ở cột khóa chính mà khóa này trỏ tới [không thể nhập điểm cho một sinh viên, vào table DiemSV, mà mã của họ không xuất hiện ở cột MaSV ở table HSSV].

3. Thiết lập khóa chính

  • Để tạo khóa chính ngay trong khi tạo table ta có thể sử dụng câu lệnh SQL Create Table như sau:

    [ MaSV varchar [8] NOT NULL, Holot varchar[20], Ten varchar[8], NgaySinh Date, MaLop varchar[8] NOT NULL, Lienhe varchar[11] NOT NULL, PRIMARY KEY [MaSV] ];
  • Câu lệnh này dùng để tạo table HSSV, đồng thời chỉ định field MaSV làm khóa chính cho nó.

  • Trong trường hợp khóa chính được thành lập từ nhiều field và ta cần đặt tên cho ràng buộc khóa này thì có thể sử dụng câu lệnh Create Table như sau:

    [ MaSV varchar [8] NOT NULL, Holot varchar[20], Ten varchar[8], NgaySinh DATE, MaLop varchar[8] NOT NULL, Lienhe varchar[11] NOT NULL, CONSTRAINT Ma PRIMARY KEY [MaSV, MaLop] ];
  • Vậy khóa chính table này được thành lập từ hai field: MaSV và MaLop và tên của ràng buộc này là Ma.

3.1 Tạo khóa chính cho table đã tạo

  • Sử dụng câu lệnh sau:

    ALTER TABLE HSSV ADD PRIMARY KEY [MaSV]

  • Hoặc:

    ALTER TABLE HSSV ADD CONSTRAINT Ma PRIMARY KEY [MaSV, MaLop]

  • Rõ ràng, trong trường hợp này các field MaSV, MaLop phải đã được khai báo ràng buộc NOT NULL [trng khi tạo table].

3.2 Xóa khóa chính

  • Sử dụng câu lệnh sau:

    ALTER TABLE HSSV DROP PRIMARY KEY;

  • Hoặc:

    ALTER TABLE HSSV DROP CONSTRAINT Ma

4. Thiết lập khóa ngoại

  • Để tạo khóa ngoại ngay trong khi tạo table ta có thể sử dụng câu lệnh SQL Create Table như sau:

    [ STT INT NOT NULL AUTO_INCREMENT, MaSV varchar[8] NOT NULL, MonHoc varchar[6] NOT NULL, HKI, HKII, ĐTB_Nam INT, PRIMARY KEY [STT], FOREIGN KEY [MaSV] REFERENCES HSSV[MaSV] ]
  • Câu lệnh này: Tạo table DiemSV gồm 6 field, trong đó khóa chính là field STT và field khóa ngoại là MaSV. Table này tạo ràng buộc tham chiếu đến table HSSV thông qua field MaSV.

  • Dạng khác:

    [ STT INT NOT NULL AUTO_INCREMENT, MaSV varchar[8] NOT NULL, MonHoc varchar[6] NOT NULL, HKI, HKII, ĐTB_Nam INT, PRIMARY KEY [STT], CONSTRAINT Ma FOREIGN KEY [MaSV] REFERENCES HSSV[MaSV] ]
  • Khi cần đặt tên cho ràng buộc khóa ngoại và khóa ngoại được hình thành từ nhiều field thì ta phải sử dụng câu lệnh Create Table theo dạng này.

4.1 Tạo khóa ngoại cho table đã tạo

  • Ví dụ:

    REFERENCES HSSV[MaSV]
  • Hoặc:

    FOREIGN KEY [MaSV] REFERENCES HSSV[MaSV]
  • Câu lệnh này được sử dụng trong trường hợp cần đặt tên cho ràng buộc khóa ngoại và khóa ngoại được hình thành từ nhiều field.

4.2 Xóa khóa ngoại

  • Ví dụ:

    ALTER TABLE DiemSV DROP FOREIGN KEY Ma

  • Câu lệnh MySQL ALTER được sử dụng rất phổ biến trong các trường hợp thay đổi tên của table, tên của field hoặc thêm/xóa các field trong một table nào đó. Vì vậy, chúng ta sẽ trở lại câu lệnh này ở các bài sau.

5. Bảng so sánh

Khóa chính Khóa ngoại
Khóa chính xác định duy nhất một bản ghi trong bảng. Khóa ngoại là một trường trong bảng và là khóa chính trong một bảng khác.
Khóa chính không chấp nhận các giá trị rỗng. Khóa ngoại có thể chấp nhận nhiều giá trị rỗng.
Theo mặc định, khoá chính là chỉ mục được nhóm và dữ liệu trong bảng cơ sở dữ liệu được tổ chức theo thứ tự của dãy chỉ mục nhóm. Khóa ngoại không tự động tạo ra một chỉ mục, nhóm hoặc không nhóm. Bạn có thể tự tạo một chỉ mục trên khoá ngoại.
Chúng ta chỉ có thể có một khóa chính trong một bảng. Chúng ta có thể có nhiều khoá ngoại trong một bảng.

6. Tổng kết

  • Chúng ta chỉ sử dụng các cách trên để tạo khóa chính trong MySQL và không chỉ có ở MySQL mà ở SQL Server cũng có cú pháp tương tự vì chúng đều sử dụng ngôn ngữ T-SQL.

  • Thông thường khi làm việc với các ứng dụng web thì ta ít khi sử dụng khóa ngoại bởi vì sẽ rất chậm, vì vậy người ta sẽ cố gắng thiết kế CSDL làm sao tối ưu để không tồn tại khóa ngoại.


Khóa chính là gì? Thông tin khóa chính dành cho người mới tiếp xúc máy tính

Khóa chính là gì? Những thao tác cơ bản của khóa chính trong cơ sở dữ liệu SQL là gì? Phân biệt khóa chính và khóa ngoại trong SQL như thế nào? Hãy cùng 123job.vn đi giải đáp thắc mắc này nhé.

Đối với tin học văn phòng và các bạn làm về công nghệ thông tin thì đã quá quen thuộc với cụm từ khóa chính trong cơ sở dữ liệu máy tính. Nhưng đa số chúng ta vẫn chưa hiểu hết được về cụm từ này cũng như chức năng của nólà gì? Vậy khóa chính là gì? Những thao tác cơ bản của nólà gì? Phân biệt khóa chính và khóa ngoại trong SQL Server như thế nào? Hãy cùng 123job.vn đi giải đáp thắc mắc này nhé.

1. Khóachínhlà gì

Sửa lỗi Table Database thiếu khóa chính [Primary Key] trên WordPress

Bài viết hôm nay mình sẽ hướng dẫn bạn kiểm tra và sửa lỗi Table Database thiếu khóa chính [Primary Key] trong Database với WP-CLI

Khóa chính là gì? Phân biệt khóa chính và khóa ngoại trong SQL

Câu hỏi của rất nhiều bạn được đặt ra trong những ngày gần đây đó chính là khóa chính là gì ? Làm sao để phân biệt khóa chính và khóa ngoại trong cơ sở tài liệu máy tính ?

Tôi có thể có nhiều khóa chính trong một bảng không?

Trịnh Quỳnh Liên · Trịnh Quỳnh Liên 09:56 20/10/2008

11 phút trước

Tôi có thể có nhiều khóa chính trong một bảng không?

341 hữu ích 0 bình luận 663k xem chia sẻ

Khóa ngoại có thể tham chiếu đến khóa chính trong cùng một bảng không?

Trần Thành Phương · Trần Thành Phương 05:20 08/09/2013

3 giờ trước

Tôi chỉ nghĩ rằng câu trả lời là sai vì khóa ngoại không có thuộc uniquenesstính.

Nhưng một số ý kiến ​​cho rằng có thể xảy ra trường hợp tự tham gia vào bàn chơi. Tôi là người mới SQL. Nếu nó đúng, xin vui lòng giải thích làm thế nào và tại sao?

Employee table | e_id | e_name | e_sala | d_id | |---- |------- |----- |--------| | 1 | Tom | 50K | A | | 2 | Billy | 15K | A | | 3 | Bucky | 15K | B | department table | d_id | d_name | |---- |------- | | A | XXX | | B | YYY |

Bây giờ, d_id là khóa ngoại nên nó có thể là khóa chính như thế nào. Và giải thích điều gì đó về join. Công dụng của nó là gì?

74 hữu ích 1 bình luận 124k xem chia sẻ

Video liên quan

Bài Viết Liên Quan

Toplist mới

Bài mới nhất

Chủ Đề