บางตารางมี pk หลายฟิล มีไว้เพื่ออะไรครับ ?!?!
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 275   4
URL.หัวข้อ / URL
บางตารางมี pk หลายฟิล มีไว้เพื่ออะไรครับ ?!?!

ฟิลมี pk เพื่อไม่ให้ฟิลนั้น มีข้อมูลซ้ำกัน
แล้วถ้าตารางนั้นมี pk หลายๆ ฟิล

?!?! ไม่ค่อยเข้าใจน่ะครับ
ผู้รู้ช่วยอธิบายหน่อยครับ

ขอบคุณมากครับ

4 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R04491
หมายความว่า ถ้านำหลายๆ field นั้นมาต่อกันแล้ว ห้ามมีข้อมูล ซ้ำกัน ครับ
เช่น Field A ,B,C เป็น PK ดังนั้น
Field A B C
1 1 1
1 1 2
1 1 3

อย่างนี้ครับ
แต่เป็นอย่างนี้ไม่ได้
A B C
1 1 1
1 1 1

2 @R04512
ช่วยตอบครับ ความหมายเหมือนของคุณ Apuk ครับ

บางครั้งสร้างตารางไปไปมามาแล้วจำเป็นต้องใช้เพราะเหตุการณ์บังคับ เช่น

หมายเลขทะเบียน รหัสจังหวัด เจ้าของรถ

ยษ9999 กท สุริยะ
ยษ9999 ชม ทักษิณ
ยษ9999 รย บั๊ก
ยษ9999 อบ ชวลิต


ถ้ากำหนดให้ฟิลด์หมายเลขทะเบียนแค่ฟิลด์เดียวเป็น คีย์หลัก จะไม่สามารถป้อนข้อมูลเหล่านี้ลงไปได้หมด ป้อนได้แค่เรคคอร์ดเดียวนั่นเอง เพราะพอจะป้อนเรคคอร์ดที่สอง ก็จะไม่ยอมแล้ว เพราะจะเกิดการเช็คว่า ยษ9999 นั้นซ้ำกัน

จึงต้องกำหนดฟิลด์หมายเลขทะเบียน และ รหัสจังหวัดให้ร่วมกัน เป็นคีย์หลัก จึงจะสามารถป้อนข้อมูลเหล่านี้ลงไปได้ทั้งหมด
เพราะในเรคคอร์ดแรก ยษ9999กท กับ ในเรคคอร์ดที่สอง ยษ9999ชม ไม่ได้ซ้ำกัน


3 @R04520
อ่าครับ ขอถามอีกข้อครับ

ถ้าเป็นเช่นนี้ คือว่า ให้ฟิลใดฟิลหนึ่งซ้ำกันได้ แต่ถ้ามาเรียงต่อกัน ห้ามซ้ำกันหมดทุกๆ ฟิลใช่หรือไม่

แล้วเป็นเช่นนี้ ถ้าเราไม่ตั้ง pk เลยสักฟิล ในการทำงานกรณีแบบนี้ จะได้ผลลัพออกมาเหมือนกันหรือไม่ (เพราะว่าฟิลใดฟิลหนึ่งซ้ำได้ แต่ถ้าเรียงต่อกันห้ามซ้ำกันหมดอยุ่แล้ว)
4 @R04524
Q:
อ่าครับ ขอถามอีกข้อครับ

ถ้าเป็นเช่นนี้ คือว่า ให้ฟิลใดฟิลหนึ่งซ้ำกันได้ แต่ถ้ามาเรียงต่อกัน ห้ามซ้ำกันหมดทุกๆ ฟิลใช่หรือไม่

A:
ใช่แล้วครับ ดูตัวอย่างอีกครั้ง ว่าเข้าใจตามนี้หรือไม่

ถ้ากำหนด
หมายเลขทะเบียน เป็นคีย์หลัก

ป้อน
ยษ9999 กท สุริยะ
ลงไปแล้ว
จะป้อน
ยษ9999 ? ? อีกไม่ได้


ถ้ากำหนด
หมายเลขทะเบียน_รหัสจังหวัด ร่วมกันเป็นคีย์หลัก

ป้อน
ยษ9999กท สุริยะ
ลงไปแล้ว
จะป้อน
ยษ9999กท ? อีกไม่ได้


ถ้ากำหนด
หมายเลขทะเบียน_รหัสจังหวัด_เจ้าของรถ ร่วมกันเป็นคีย์หลัก

ป้อน
ยษ9999กทสุริยะ
ลงไปแล้ว
จะป้อน
ยษ9999กทสุริยะ อีกไม่ได้


ถ้าไม่กำหนดคีย์หลักไว้เลย

ป้อน
ยษ 9999 กท สุริยะ
ลงไปแล้ว
จะป้อน
ยษ 9999 กท สุริยะ
ยษ 9999 กท สุริยะ
ยษ 9999 กท สุริยะ
ยษ 9999 กท สุริยะ
ยษ 9999 กท สุริยะ อีกกี่เรคคอร์ดก็ได้



Q:
แล้วเป็นเช่นนี้ ถ้าเราไม่ตั้ง pk เลยสักฟิล ในการทำงานกรณีแบบนี้ จะได้ผลลัพออกมาเหมือนกันหรือไม่ (เพราะว่าฟิลใดฟิลหนึ่งซ้ำได้ แต่ถ้าเรียงต่อกันห้ามซ้ำกันหมดอยุ่แล้ว)
A:

พิจารณาดูตรงนี้อีกครั้งครับ ว่าต่างกัน

ถ้ากำหนด
หมายเลขทะเบียน_รหัสจังหวัด_เจ้าของรถ ร่วมกันเป็นคีย์หลัก

ป้อน
ยษ9999กทสุริยะ
ลงไปแล้ว
จะป้อน
ยษ9999กทสุริยะ อีกไม่ได้


ถ้าไม่กำหนดคีย์หลักไว้เลย

ป้อน
ยษ 9999 กท สุริยะ
ลงไปแล้ว
จะป้อน
ยษ 9999 กท สุริยะ
ยษ 9999 กท สุริยะ
ยษ 9999 กท สุริยะ
ยษ 9999 กท สุริยะ
ยษ 9999 กท สุริยะ อีกกี่เรคคอร์ดก็ได้



จะเห็นว่า การกำหนดคีย์หลักไม่เหมือนกัน จะทำให้ค่าที่ป้อนลงไปในตาราง ถูกตรวจสอบป้องกันไว้ไม่เหมือนกัน














@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0762s