Page 1 of 1

การสร้างฐานข้อมูล

Posted: Fri Oct 07, 2016 5:10 pm
by yuthz001
ผมอยากสอบถามครับว่าจะต้องสร้างฟอร์มอย่างไรเพื่อจะป้อนข้อมูลใหม่โดยไม่ซ้ำข้อมูลเก่า

คือผมจะทำฐานข้อมูลลูกค้าครับ เช่น
ลูกค้า A ติดต่อครั้งแรก วันที่ 7/10/59 เรื่อง แนะนำสินค้า

ผมอยากจะบันทึกประวัติของลูกค้า A โดยไล่วันที่ไปเรื่อยๆแล้วใส่ข้อมูลที่ติดต่อใหม่เรื่อยๆ
คือ
วันที่ 7/10/59 เรื่อง แนะนำสินค้า
วันที่ 10/10/59 เรื่อง เสนอราคา
.
.
.

แต่ที่ผมทำได้ตอนนี้คือผมไม่สามารถบันทึกประวัติครั้งต่อไปของลูกค้ารายเดิมได้ ประวัติที่บันทึกใหม่จะไปซ้ำกับประวัติเก่า ควรแก้ไขอย่างไรครับ

Re: การสร้างฐานข้อมูล

Posted: Fri Oct 07, 2016 9:08 pm
by snasui
:D กำหนด Field ใดเป็น Primary key บ้างครับ

Re: การสร้างฐานข้อมูล

Posted: Fri Oct 07, 2016 9:44 pm
by yuthz001
snasui wrote::D กำหนด Field ใดเป็น Primary key บ้างครับ
ตอนแรกกำหนดรหัสลูกค้าเป็น Primary key ครับ ตอนหลังลองเปลี่ยนมากำหนดวันที่เป็น Primary key แต่ไม่ได้ครับ

Re: การสร้างฐานข้อมูล

Posted: Fri Oct 07, 2016 10:16 pm
by snasui
:D หากกำหนดรหัสลูกค้าเป็น Primary Key ย่อมมีปัญหาเกิดขึ้นเนื่องจากลูกค้าเดียวกันต้องมีรหัสเดียวกัน จะคีย์รหัสซ้ำไม่ได้ครับ หากกำหนดให้วันที่เป็น Primary Key วันที่ก็ต้องไม่ซ้ำกันไม่ว่าจะภายในลูกค้าเดียวกันหรือระหว่างลูกค้า ดังนั้นจึงควรกำหนด Primary Key ให้เป็น Field อื่น เช่น ID เป็นต้น

กรณีเช่นนี้อาจจะแยกฐานข้อมูลลูกค้ากับประวัติลูกค้าออกเป็นคนละ Table ส่วนที่เป็น Table โดยมี Master Table และ Detail Table

Master Table นั้นลูกค้าจะต้องมีรหัสเดียว ไม่ซ้ำกัน ส่วน Detail Table คือประวัติการสั่งซื้อ สามารถซ้ำกันได้ตามต้องการ โดย Table Detail นั้นสามารถกำหนด ID (รหัสแทนรายการที่) เป็น Primary Key

หากต้องการดูว่าลูกค้ารายได้ซื้อสินค่าใดในช่วงเวลาใด ค่อย Query เฉพาะ Detail หรือจะนำ Master Table มา Join กับ Detail แล้วค่อยดึงข้อมูลก็แล้วแต่ต้องการครับ