1,219,696 Thành viên
13,040 Online
+ Trả lời
Trang 1/2 1 2 cuốicuối
1 đến 10 trên 13 kết quả

Ðề tài: Khoá chính (primary key) trong Access

  1. #1
    Avatar của AndyAn
    AndyAn đang offline Thành viên Webtretho Thành viên 9 năm Bài gửi: 1765 Được cảm ơn 415 lần
    Tham gia: 15/10/2003
    Bài gửi: 1,765
    Được cảm ơn: 415 lần
    Tên bé: Andy Ân
    Ngày sinh: 15/5/2002

    Khoá chính (primary key) trong Access

    Mình mới bắt đầu học Access nên không hiểu lắm về khóa Primary key. Cho mình hỏi Primary key là để làm gì ? và khi nào thì cài khi nào thì không cần cài ? (vì mình thấy trong 1 table có cái cài , ví dụ như họ, tên, ngày sinh; nhưng code thành phố thì không cần cài) .

    Xin cám ơn.

    Xem các chủ đề mới nhất:

    Andy Ân

  2. #2
    Avatar của vo_chong_vui
    vo_chong_vui đang offline Thành viên Webtretho Thành viên 5 năm Bài gửi: 3745 Được cảm ơn 11158 lần
    Tham gia: 06/12/2007
    Bài gửi: 3,745
    Được cảm ơn: 11,158 lần
    Tên bé: Hỉn còi
    Ngày sinh: 21/11/2008
    Tên bé: Kuku xinh
    Ngày sinh: 10/05/2012

    Ðề: Khoá chính (primary key) trong Access

    Xin mạn phép trả lời trong tầm hiểu biết của mình.

    Primary Key là khóa dùng để phân biệt các bản ghi với nhau, và đảm bảo mỗi giá trị Primary Key là duy nhất. Trong ví dụ của AndyAn thì theo mình k đúng lắm vì thường người ta k dùng họ, tên, ngày sinh làm Primary Key do những thông tin này có thể bị trùng nhau.

    Thông thường trong 1 table VD có những thông tin sau: Họ, tên, ngày sinh, code thành phố, ghi chú chẳng hạn, người ta sẽ thêm thông tin mã nhân viên và mã nhân viên này sẽ được set làm Primary Key.

    Cũng có đôi khi người ta sẽ set 1 trường mới tự động AutoID chẳng hạn làm Primary Key.

  3. #3
    Avatar của khoabeo108
    khoabeo108 đang offline Thành viên Webtretho Thành viên 6 năm Bài gửi: 804 Được cảm ơn 70 lần
    Tham gia: 02/06/2007
    Bài gửi: 804
    Được cảm ơn: 70 lần

    Ðề: Khoá chính (primary key) trong Access

    Trích dẫn Nguyên văn bởi AndyAn Xem bài viết
    Mình mới bắt đầu học Access nên không hiểu lắm về khóa Primary key. Cho mình hỏi Primary key là để làm gì ? và khi nào thì cài khi nào thì không cần cài ? (vì mình thấy trong 1 table có cái cài , ví dụ như họ, tên, ngày sinh; nhưng code thành phố thì không cần cài) .

    Xin cám ơn.
    Trong tất cả các hệ quản trị cơ sở dữ liệu nói chung, thì Primary key đều được sử dụng để phân biệt các bộ trong table với nhau. Nghĩa là các bộ khác nhau, thì chắc chắn phải có Primary key khác nhau.

    VD: KHi quản lý sinh viên, thì Mã sinh viên sẽ là Primary key: Đảm bảo yêu cầu, mỗi sinh viên chỉ có duy nhất 1 mã sinh viên. Ko bao giờ có chuyện 2 sinh viên khác nhau lại giống nhau về MSSV

    Việc xác định có cài primary key hay ko thì hoàn toàn phụ thuộc vào Table mà mình thiết kế. Họ, tên, ngày sinh ko thể dùng làm Primary key, vì nó ko đảm bảo tính duy nhất
    Sống như thể ngày mai phải chết!....

  4. #4
    Avatar của mittit2
    mittit2 đang offline Thành viên Webtretho Thành viên 5 năm Bài gửi: 8390 Được cảm ơn 840 lần
    Tham gia: 10/10/2007
    Bài gửi: 8,390
    Được cảm ơn: 840 lần

    Ðề: Khoá chính (primary key) trong Access

    Trích dẫn Nguyên văn bởi AndyAn Xem bài viết
    Mình mới bắt đầu học Access nên không hiểu lắm về khóa Primary key. Cho mình hỏi Primary key là để làm gì ? và khi nào thì cài khi nào thì không cần cài ? (vì mình thấy trong 1 table có cái cài , ví dụ như họ, tên, ngày sinh; nhưng code thành phố thì không cần cài) .

    Xin cám ơn.
    Đơn giản là khóa này để phân biệt các bàn ghi với nhau để khi truy vấn dữ liệu chương trình biết để lấy thông tin
    Mỗi bảng sẽ phải có ít nhất là một trường khóa chính như vậy
    Các bảng sẽ được liên kết với nhau nhiều thông tin nhưng nó sẽ tìm và liên kết bởi trường khóa chính này
    Trong một bảng chỉ có một mã cho 1 bản ghi trong trường khóa chính, không thể trùng lặp

  5. #5
    Avatar của AndyAn
    AndyAn đang offline Thành viên Webtretho Thành viên 9 năm Bài gửi: 1765 Được cảm ơn 415 lần
    Tham gia: 15/10/2003
    Bài gửi: 1,765
    Được cảm ơn: 415 lần
    Tên bé: Andy Ân
    Ngày sinh: 15/5/2002

    Ðề: Khoá chính (primary key) trong Access

    Oh chắc tại mới bắt đầu nên mình thấy cô cho 1 bảng danh sách ngắn và đơn giản gồm vài tên , họ, code thành phố, ngày sinh . Và cô cài khóa chính cho 2 cột họ và tên mà. Đến khi 2 cột này có tên trùng nhau thì cô cài thêm 1 khóa nữa ở cột code thành phố. Cô nói là nếu cài như thế thì sau đó mình có thể chỉnh danh sách tên họ theo alphabet được. Còn cài số thứ tự thì sau khi lập danh sách xong không sửa theo alphabet được . Không biết mình hiểu đúng không?
    Mà mình cũng thấy như các bạn nói ở trên, cài ở cột số thứ tự là logic nhất nhỉ vì stt là duy nhất rồi, đâu trùng được.

    Nhưng mìnhh vẫn không hiểu sao để cho chắc ăn không cài khóa cho mỗi cột, nếu mỗi cột đều cài thì ... có sao không ? Mà thật ra trong 1 bảng danh sách, cần cài làm gì cơ chứ, nếu sau này mình gọi 1 tên ra, nếu có trùng nhau thì cũng còn ngày tháng năm sinh hay địa chỉ, khác nhau trong hành đó mà, đâu có 2 hàng (2 người) trùng nhau hết ở mỗi cột được. Vậy thì không cài cũng ... đâu có sao . Ôi mình mù mờ quá vì mình hoc bằng tiếng Đức, đọc không hiểu thấu hết. Mà mình vào các trang VN thì dùng từ chuyên ngành mình cũng rối luôn (ví dụ như chữ "trường" , không hiểu là gì).
    Andy Ân

  6. #6
    Avatar của khoabeo108
    khoabeo108 đang offline Thành viên Webtretho Thành viên 6 năm Bài gửi: 804 Được cảm ơn 70 lần
    Tham gia: 02/06/2007
    Bài gửi: 804
    Được cảm ơn: 70 lần

    Ðề: Khoá chính (primary key) trong Access

    Trích dẫn Nguyên văn bởi AndyAn Xem bài viết
    Oh chắc tại mới bắt đầu nên mình thấy cô cho 1 bảng danh sách ngắn và đơn giản gồm vài tên , họ, code thành phố, ngày sinh . Và cô cài khóa chính cho 2 cột họ và tên mà. Đến khi 2 cột này có tên trùng nhau thì cô cài thêm 1 khóa nữa ở cột code thành phố. Cô nói là nếu cài như thế thì sau đó mình có thể chỉnh danh sách tên họ theo alphabet được. Còn cài số thứ tự thì sau khi lập danh sách xong không sửa theo alphabet được . Không biết mình hiểu đúng không?
    Mà mình cũng thấy như các bạn nói ở trên, cài ở cột số thứ tự là logic nhất nhỉ vì stt là duy nhất rồi, đâu trùng được.

    Nhưng mìnhh vẫn không hiểu sao để cho chắc ăn không cài khóa cho mỗi cột, nếu mỗi cột đều cài thì ... có sao không ? Mà thật ra trong 1 bảng danh sách, cần cài làm gì cơ chứ, nếu sau này mình gọi 1 tên ra, nếu có trùng nhau thì cũng còn ngày tháng năm sinh hay địa chỉ, khác nhau trong hành đó mà, đâu có 2 hàng (2 người) trùng nhau hết ở mỗi cột được. Vậy thì không cài cũng ... đâu có sao . Ôi mình mù mờ quá vì mình hoc bằng tiếng Đức, đọc không hiểu thấu hết. Mà mình vào các trang VN thì dùng từ chuyên ngành mình cũng rối luôn (ví dụ như chữ "trường" , không hiểu là gì).

    1 phần vì chị mới học, 1 phần vì cô giáo chị dạy .... lúa quá!


    Oh chắc tại mới bắt đầu nên mình thấy cô cho 1 bảng danh sách ngắn và đơn giản gồm vài tên , họ, code thành phố, ngày sinh . Và cô cài khóa chính cho 2 cột họ và tên mà. Đến khi 2 cột này có tên trùng nhau thì cô cài thêm 1 khóa nữa ở cột code thành phố. Cô nói là nếu cài như thế thì sau đó mình có thể chỉnh danh sách tên họ theo alphabet được. Còn cài số thứ tự thì sau khi lập danh sách xong không sửa theo alphabet được . Không biết mình hiểu đúng không?
    Ko ai sử dụng Họ tên + Code thành phố làm khóa chính cả (Trừ cái cô giáo kì cục đó ), hình dung đơn giản ngoài thực tế: HCM & HN có bao nhiêu người cùng tên Phạm Đăng Khoa? Mà nguyên tắc lưu trữ là tuyệt đối ko có những bộ dữ liệu khác nhau khi khóa chính giống nhau => Có thể trong bảng dữ liệu (1 vài record) của cô giáo chị lấy ra làm ví dụ, thì khóa đó sẽ đúng, nhưng mà thực tế áp dụng thì nó sai bét
    Cũng với ví dụ đó, người ta sẽ quản lý bằng "Mã" (VD: với sinh viên thì là Mã SV, với nhâu khẩu thì là Số CMND, với nhân viên công ty thì là Mã nhân viên .... đảm bảo tính duy nhất)


    Mà mình cũng thấy như các bạn nói ở trên, cài ở cột số thứ tự là logic nhất nhỉ vì stt là duy nhất rồi, đâu trùng được.
    Số thứ tự cũng là 1 dạng biến hóa của Mã như e vừa nói ở trên thôi, nhưng ko phải đánh số thứ tự = cách thông thường (1,2,3,4....n), mà trong số thứ tự đó sẽ phải bao gồm thêm 1 thông tin gì đó:
    VD:
    Số điện thoại: 0901234567 : Nhìn vào 3 số đầu là ta biết của mạng điện thoại nào

    Số CMND: 151123456: Nhìn vào 3 số đầu là biết CMND đó thuộc tỉnh nào ....


    [quote]Nhưng mìnhh vẫn không hiểu sao để cho chắc ăn không cài khóa cho mỗi cột, nếu mỗi cột đều cài thì ... có sao không [/quote

    Chắc ăn thì chắc ăn thật, nhưng mà nó vi phạm định nghĩa của Primary key. Hơn nữa, với 1 bộ cơ sở dữ liệu lớn, thì cách truy xuất này sẽ giết chết Server đấy ạ


    Mà thật ra trong 1 bảng danh sách, cần cài làm gì cơ chứ, nếu sau này mình gọi 1 tên ra, nếu có trùng nhau thì cũng còn ngày tháng năm sinh hay địa chỉ, khác nhau trong hành đó mà, đâu có 2 hàng (2 người) trùng nhau hết ở mỗi cột được. Vậy thì không cài cũng ... đâu có sao .
    Đúng là có những trường hợp ko cần cài khóa chính như chị nói, nhưng để xử lý được các thông tin truy xuất đó lại là cả 1 vấn đề.

    Vấn đề 1:Nếu như chị nói, thì chị chỉ có thể xử lý thông tin lấy ra = tư duy của con ngườii, chứ đưa vào chương trình để nó xử lý thì bó tay.
    Vấn đề 2: khi truy xuất dữ liệu ko khóa: Vẫn lấy VD là quản lý nhân khẩu, bây giờ có 1 ng nào đó muốn xem thông tin hộ khẩu của em:
    - Nếu quản lý = khóa chính (Số CMND), thì gõ số CMND => Ok => Ra được 1 record duy nhất là em
    - Nếu ko có khóa chính: Giả sử trong khoảng hơn 80tr dân số VN, có khoảng 1000 ng cùng tên "Phạm Đăng Khoa" => Chị ngồi đó lần mò ra được đúng là em cũng bở hơi tai , chưa kể đến việc, hiện ra 1000 recode thì cái máy có khi nó cũng treo cứng
    Vấn đề 3: Truy xuất dữ liệu của Database Server, khi xử lý bảng ko khóa chính, thì nó sẽ phải search mọi hàng & mọi cột => Tài nguyên tiêu tốn là nhiều vô kể

    ==> Túm lại là phải có khóa chính & ko lấy ví dụ về khóa chính giống như cô giáo của chị
    Sống như thể ngày mai phải chết!....

  7. #7
    Avatar của khoabeo108
    khoabeo108 đang offline Thành viên Webtretho Thành viên 6 năm Bài gửi: 804 Được cảm ơn 70 lần
    Tham gia: 02/06/2007
    Bài gửi: 804
    Được cảm ơn: 70 lần

    Ðề: Khoá chính (primary key) trong Access

    Quên, nói thêm, kinh nghiệm của e là ko nên sử dụng những từ dịch tiếng Việt dịch ra từ các từ chuyên ngành (Nghe còn khó hiểu hơn là dùng chính từ đó )
    Sống như thể ngày mai phải chết!....

  8. #8
    Avatar của boutit
    boutit đang offline Thành viên Webtretho Thành viên 7 năm Bài gửi: 653 Được cảm ơn 157 lần
    Tham gia: 22/08/2005
    Bài gửi: 653
    Được cảm ơn: 157 lần
    Tên bé: Minh Châu
    Tên bé: Minh Ngọc

    Ðề: Khoá chính (primary key) trong Access

    Khóa chính có thể là :
    -1 trường (VD : Số HC, Số CMDD...)
    -Hoặc tập hợp các trường (Họ + Tên + Ngày Sinh + Địa Phương+...)
    Với điều kiện trong 1 bảng, thì khóa chính chỉ là duy nhất .

    Tóm lại với khóa chính trong 1 bảng không có 2 bộ dữ liệu khóa chính giống hệt nhau .

    Tức là có thể là (Họ + Tên) -> Bộ Khóa chính -> Không sai, chỉ là sẽ có khả năng trùng nhau, chứ không sai .
    Minh Châu :1: Minh Ngọc


  9. #9
    Avatar của khoabeo108
    khoabeo108 đang offline Thành viên Webtretho Thành viên 6 năm Bài gửi: 804 Được cảm ơn 70 lần
    Tham gia: 02/06/2007
    Bài gửi: 804
    Được cảm ơn: 70 lần

    Ðề: Khoá chính (primary key) trong Access

    Trích dẫn Nguyên văn bởi boutit Xem bài viết
    Khóa chính có thể là :
    -1 trường (VD : Số HC, Số CMDD...)
    -Hoặc tập hợp các trường (Họ + Tên + Ngày Sinh + Địa Phương+...)
    Với điều kiện trong 1 bảng, thì khóa chính chỉ là duy nhất .
    Chính xác là như thế! Tuy nhiên, đoạn này của bác lại mâu thuẫn với đoạn sau:
    Trích dẫn Nguyên văn bởi boutit
    Tức là có thể là (Họ + Tên) -> Bộ Khóa chính -> Không sai, chỉ là sẽ có khả năng trùng nhau, chứ không sai .
    [/quote]

    Trường hợp trùng nhau đó chính là đã vi phạm vào khóa chính rồi: Khóa chính giống nhau, nhưng bộ dữ liệu khác nhau => Vi phạm
    Sống như thể ngày mai phải chết!....

  10. #10
    Avatar của boutit
    boutit đang offline Thành viên Webtretho Thành viên 7 năm Bài gửi: 653 Được cảm ơn 157 lần
    Tham gia: 22/08/2005
    Bài gửi: 653
    Được cảm ơn: 157 lần
    Tên bé: Minh Châu
    Tên bé: Minh Ngọc

    Ðề: Khoá chính (primary key) trong Access

    Trích dẫn Nguyên văn bởi khoabeo108 Xem bài viết
    Chính xác là như thế! Tuy nhiên, đoạn này của bác lại mâu thuẫn với đoạn sau:
    Trường hợp trùng nhau đó chính là đã vi phạm vào khóa chính rồi: Khóa chính giống nhau, nhưng bộ dữ liệu khác nhau => Vi phạm[/QUOTE]

    Không vi phạm , có thể nó trùng nhau chỉ khi nhập dữ liệu mới xảy ra . Nếu nhập dữ liệu xảy ra lỗi (khóa chính không chấp nhận nhập trùng dữ liệu)-> Cần thay đổi bộ khóa chính -> Sẽ thêm trường [Năm Sinh] vào để mở rộng bộ khóa chính-> có thể nhập tiếp dữ liệu -> Vẫn có thể trùng -> Thay đổi tiếp bộ khóa chính bằng cách thêm trường [Địa Phương] đó cũng chỉ là 1 cách làm tạm thời .
    Giải pháp triệt để là chương trình tự tạo ra số tự nhiên tăng để làm khóa chính, luôn tăng thì sẽ không trùng , chứ nếu lấy ID (không tự động sinh ra từ chương trình) cũng chỉ nhập dữ liệu bằng tay -> Vẫn có thể trùng số ID .

    Nếu bạn đã học lập trình thì vấn đề này trong bài Cơ Sở Dữ Liệu có nói khá kỹ . Nếu đã từ làm phân tích thiết kế hệ thông CSDL thì càng va vấp nhiều hơn .
    Minh Châu :1: Minh Ngọc


+ Trả lời
Trang 1/2 1 2 cuốicuối

Bài đáng quan tâm


Quyền sử dụng của bạn

  • Bạn không thể gửi bài mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi đính kèm
  • Bạn không thể sửa bài