อยากรู้ว่า ใน 1 ตารางนั้น มี primary key ได้มากกว่า 1 ฟิลด์ ใช่มั้ยครับ แล้ว



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

01 มี.ค. 61 , 15:23:34
อ่าน 1409 ครั้ง

Ekarat Joolawan

มันจะช่วยอย่างไงครับ ทำให้มีประสิทธิภาพต่อการทำงานอย่างไง :miao:

 

01 มี.ค. 61 , 15:44:44
ตอบกลับ #1

OddyWriter

ก็เพื่อไม่ให้ข้อมูลซ้ำไงครับ (แล้วยังทำให้การสืบค้นทำได้เร็วขึ้น)
เช่น
ตาราง 1 เก็บข้อมูลผู้ป่วย (HN,Name,Address,...)
ตาราง 2 เก็บข้อมูลการแพ้ยา (HN,PharCode,...)

ตารางที่ 1 คงไม่ต้องอธิบาย
แต่ตารางที่ 2 ถ้าเรากำหนด Primary Key เพียงฟิลด์เดียวจะกำหนดฟิลด์ไหน
ถ้า HN ก็แปลว่าผู้ป่วยแพ้ยาได้เพียงชนิดเดียว ซึ่งเป็นไปได้ในบางคน แต่บางคนเกิดมาเพื่อจะแพ้ยา มีเด่นๆ กี่ตัวก็แพ้หมด แบบนี้จึงกำหนดเพียง HN ไม่ได้
ถ้า PharCode (รหัสยา) ก็หมายความว่าในบรรดายาทั้งหมดจะมีผู้แพ้ยาได้เพียงคนเดียว ซึ่งก็ไม่ได้เช่นกัน เพราะยาตัวเดียวกันมีคนแพ้เยอะมาก
ถ้าไม่กำหนดล่ะ ปัญหาก็จะเกิดเรื่องข้อมูลซ้ำซ้อน เพราะคน 1 คน แพ้ยา 1 ชนิดสามารถเกิดได้มากกว่า 1 เรคอร์ด
ดังนั้นจึงต้องกำหนดทั้ง HN,PharCode เพื่อให้ข้อมูลผู้แพ้ยา 1 ชนิดมีเพียง 1 เรคอร์ด ถ้าแพ้ยา 2 ชนิดก็ 2 เรคอร์ด

สุดท้ายการกำหนด Primary Key มักเกิดกับตารางที่มี Foreign Key (จำไม่ได้ว่าภาษาไทยเรียกอะไร) ซึ่งมักมีความสัมพันธ์แบบ 1:M
กินร้อน ช้อนตัวเอง จานใครจานมัน ออกนอกบ้านใส่หน้ากากอนามัยหรือหน้ากากผ้า
 

01 มี.ค. 61 , 17:07:01
ตอบกลับ #2

Ekarat Joolawan

ใกล้จะเข้าใจแล้วครับ ขอให้เพื่อนๆ ยกตัวอย่างอีกสัก 2-3 ตัวอย่างหน่อยสิครับ

 

01 มี.ค. 61 , 17:26:56
ตอบกลับ #3

ปิ่นณรงค์

น่าจะใช้กับกรณีกำหนด ตำแหน่งที่อยู่ของ คนได้ครับ
เช่นมี Table

จังหวัด              อำเภอ                ตำบล                 หมู่บ้าน

เพราะต้องใช้ Primary Key มากกว่า 1 ในการเชื่อมโยงข้อมูล ส่วนตัวอย่างเดี่ยวผมลองทำให้ดูครับ
:love: :grin:
 

01 มี.ค. 61 , 17:38:16
ตอบกลับ #4

ปิ่นณรงค์

นี้คือตัวอย่างการกำหนด Primary Key ครับ




การนำไปใช้เพราะในบางกรณีครับ ถ้าเราเกิดมีการลบชื่อจังหวัดออกไป อำเภอ ตำบล หมู่บ้านของจังหวัดนั้น ก็ต้องโดนลบออกไปด้วยครับ
ช่วยในจัดหมวดหมู่และการป้องกันการซ้ำกันของข้อมูลครับ

การกำหนดแบบนี้ก็จะมีความสะดวกตอนที่จะเรียกใช้ข้อมูล หรือ ออก Query ครับ

การออกแบบ Primary Key แบบนี้ ใช้การกรณีข้อมูลนั้นมีความเกี่ยวเนื่องกันและไม่ซ้ำกัน ที่ผมยกตัวอย่างนี้เพราะเมื่อเราเลือกจังหวัดแล้วนั้น ข้อมูลของ Tableอำเภอ ที่ทำ RelationShip กับ Tableจังหวัดก็จะแสดงออกมาเฉพาะที่มีในจังหวัดที่เราเลือกเท่านั้น และ ยังเกี่ยวน้องไปถึง ตำบล และ หมู่บ้าน ซึ่งจะช่วยเราในการจัดกลุ่มของข้อมูลให้เป็นระเบียบง่ายต่อการใช้งานหรือแก้ไขครับพี่
« แก้ไขครั้งสุดท้าย: 01 มี.ค. 61 , 18:33:42 โดย Newbies »
:love: :grin:
 

01 มี.ค. 61 , 18:47:35
ตอบกลับ #5

สันติสุข

  • แฟนพันธุ์แท้ไท.Access
  • *
  • กระทู้: 466
  • พลังขอบคุณ: 418

  • ขึ้น 15 ค่ำเดือน 8 แสดงปฐมเทศนา

    • ดูรายละเอียด

ฐานข้อมูลแบบ Relational Database ทุกๆยี่ห้อ ทุกเทเบิลต้องมี PK (Primary Key) เพื่อระบุเรคอร์ดไหนคือเรคอร์ดไหน (ถ้าไม่มี ระบบจัดการภายในจะสร้างขึ้นมาเพื่อใช้งานเอง แต่***อาจจะ***ไม่มีบันทึกเป็นฟิลด์ให้ผู้ใช้เห็น)  PK จะมีความหมายหรือไม่มีก็ได้ เช่น อาจใช้เลข 1,2,3,... เป็น PK ก็ได้ แต่ในทางปฏิบัติแล้วเราจะสร้าง PK จากหนึ่งฟิลด์หรือหลายฟิลด์รวมกันโดยที่ค่ารวมของมันจะต้องไม่ซ้ำกันเลย เช่น เลขบัตรประชาชนสำหรับเทเบิลบุคคล หรือใช้เลขที่บ้าน/อาคาร+เลขที่ห้อง+ซอย+ถนน+แขวง/ตำบล+เขต/อำเภอ+จังหวัดสำหรับเทเบิลบ้านอาคารที่อยู่

PK เป็น Index (ดัชนี) ประเภทหนึ่ง และเป็น Unique Index ด้วย (Index ที่ค่าจะไม่มีการซ้ำกันเลยในเทเบิลนั้นๆ) ระบบจัดการฐานข้อมูลจะมีการโยงว่าเรคอร์ดที่มีค่าดัชนีมากกว่า น้อยกว่า เท่ากัน นั้นอยู่ที่ไหน ดังนั้นประโยชน์ของ Index (ไม่ว่าจะ Unique หรือไม่) อีกอย่างก็คือทำให้ระบบสามารถค้นหาเรคอร์ดที่ต้องการได้อย่างรวดเร็วครับ ในทางทฤษฏีแล้ว การค้นหา 1 เรคอร์ดจาก 1 ล้านเรคอร์ดด้วย Unique Index ระบบจะพบเรคอร์ดที่ต้องการภายในการวนหาไม่เกิน 20 ครั้งเท่านั้น
« แก้ไขครั้งสุดท้าย: 01 มี.ค. 61 , 21:21:42 โดย สันติสุข »
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 
โพสต์นี้ได้รับคำขอบคุณจาก: ปิ่นณรงค์

01 มี.ค. 61 , 20:51:05
ตอบกลับ #6

pizza_p

มันมีที่ใช้ของมันครับ เฉพาะบางสถานการณ์ครับ ลองอ่านอันนี้ดูครับ
http://weblogs.sqlteam.com/jeffs/archive/2007/08/23/composite_primary_keys.aspx link

ตารางสามารถมี primary key ได้เพียง 1 primary key
แต่ primary key สามารถประกอบไปด้วยฟิลด์หลายฟิลด์ได้
« แก้ไขครั้งสุดท้าย: 01 มี.ค. 61 , 20:57:42 โดย pizza_p »

 

01 มี.ค. 61 , 23:52:03
ตอบกลับ #7

TTT

ผมขอช่วยเสริมนิดนะครับ คือผมขอยกตัวอย่างไฟล์ Northwind ของ Microsoft


คือโดยปกติเรากำหนด pk ฟิลด์เดียวในตาราง เราก็จะหมายถึงฟิลด์นั้นในทุกเรคคอร์ดเราจะไม่ให้มีการซ้ำกันของข้อมูล ส่วนการทำ pk หลายฟิลด์มักจะใช้กับกรณีที่เราต้องการให้ข้อมูลในฟิลด์ทุกฟิลด์สามารถซ้ำกันได้ แต่เมื่อฟิลด์ทั้งหลายที่เรากำหนดเป็น pk รวมกันแล้วจะไม่สามารถซ้ำกันได้ ถ้าจะพูดให้สั้นๆว่าเหมือนกับการที่เรานำ Composite key คีย์ร่วมทั้งหมดมาทำให้เป็นคีย์หลัก Primary key เพื่อบ่งบอกว่าถ้าฟิลด์ทั้งหมดที่กำหนดเป็น pk รวมกันจะมีได้แค่เรคคอร์ดเดียวในตาราง
ไม่รู้จะอ่านแล้ว งง หรือไม่นะครับ
« แก้ไขครั้งสุดท้าย: 02 มี.ค. 61 , 00:32:54 โดย TTT »
ฐานข้อมูลเป็นเรื่องใกล้ตัว ใครๆก็ทำฐานข้อมูลเองได้นะครับhttp://www.youtube.com/c/AccessCreator link
 


บอร์ดเรียนรู้ Access สำหรับคนไทย