Sunday, December 2, 2012

2:44 AM
เมื่อเข้าใจใน concept แล้ว ก็มาทดลองสร้างฐานข้อมูลกันใหม่เลยนะครับ

table

ผมจับหน้าจอของ table จากตัวอย่าง file มาให้ดูกัน จากภาพจะเห็นว่า ผมมีถึง 5 tables ใน file เดียวเชียวแหละ

student table

และก็ในแต่ละ table ก็จะมี fields หลากหลาย fields นะ ที่เห็นนั้น เป็น fields ของ table ชื่อ student ครับ

relation

เนื่องจากมีหลาย ๆ table ใน file เดียว หากออกแบบโครงสร้างดี table ทั้งหลายเหล่านั้น ก็จะมีความสัมพันธ์กัน ดังที่เห็นในรูปข้างบนครับ จะพบว่าทั้ง 5 tables นั้นมีการเชื่อมโยงกันด้วย key field ซึ่งก็จะว่าต่อไปในภายภาคหน้าขอรับ

โดยหลักแล้ว การสร้างฐานข้อมูลหนึ่งๆ ก็จะประกอบไปด้วย 3 ส่วน ดังภาพของบนครับ ว่าแล้วเราก็ลองมาสร้างฐานข้อมูลกันดูเลย โดยฐานข้อมูลที่จะเอามาเป็นตัวอย่างนี้ ก็คือการออกใบเสนอราคา ซึ่งต้องบันทึกรายละเอียดการเสนอราคาสินค้าก็แล้วกันนะครับ เพราะจะได้เห็นถึงการเชื่อมโยงของ table หลายๆ table ด้วย ท่านจะได้เข้าใจได้ง่ายๆ ... เมื่อเข้าใจแล้ว ก็สามารถเอาไปประยุกต์สร้างเป็นโปรแกรมอื่นๆได้ครับ

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

ทางร้านจึงได้ออกแบบใบเสนอราคาคร่าวๆ ดังนี้

invoice

การออกแบบฐานข้อมูล ในแบบของผมนั้น ผมจะดูที่ผลลัพธ์ที่ต้องการก่อนเป็นหลัก จากนั้นจึงแจกแจงว่า การจะได้มาซึ่งผลลัพธ์นั้น จะต้องประกอบไปด้วยอะไรบ้าง ตรงนี้อาจจะยากนิดหนึ่ง ตรงที่ท่านต้องจินตนาการว่า มันควรจะมีอะไรบ้าง แต่หากเข้าใจแล้ว มันก็ไม่ได้ยากเย็นอะไรนะครับ

สำหรับใบเสนอราคาข้างบนนี้ ถือไว้ก่อนว่า เป็น 1 ฐานข้อมูล สิ่งที่มองเป็นอันดับแรก ก็คือ มันมี field อะไรบ้าง ในใบนี้ เริ่มแยกกันเลย ...  ที่ผมเห็นก็ประกอบไปด้วย

การหา Field ข้อมูล

1. Order number หรือ เลขที่อ้างอิงว่า ใบเสนอราคานี้มีรหัสอะไรเพื่อการติดตามได้ง่ายในภายหลัง เพราะเมื่อฐานข้อมูลเราโตขนาดมีหลายพันใบเสนอราคา แน่นอนว่า การเปิดดูที่ละใบนั้น เป็นขั้นตอนที่ยากเย็นส์แน่นอน ...

2. Name, address .... ก็คือ field ที่เป็นรานละเอียดของผู้ที่เราจะเสนอราคาให้ครับ ซึ่งตรงนี้อย่าลืมว่า ทางร้านมีข้อมูลลูกค้าแล้วจำนวนหนึ่งนะครับ

3. Order detail ก็คือรายละเอียดการนำเสนอสินค้าครับ ว่าชื่ออะไร ราคาเท่าไร รวมแล้วราคาเท่าไร ตรงนี้ถ้าท่านคุ้นเคยกับการสร้างฐานข้อมูลต่อไปในอนาคตกาลแล้ว FileMaker Pro จะใช้ function ชื่อ portal ซึ่งมันคือ function ที่ใช้ในการดึงเอาฐานข้อมูลอื่นๆ ที่สัมพันธ์กัน มาแสดงซ้อนในฐานข้อมูลหลัก ตรงนี้ท่านจะเข้าใจเมื่อได้ทำการลองสร้างดูนะครับ แต่ตอนนี้ผมบอกได้ว่า ตรงพื้นที่ที่เป็น portal นี้ มีฐานข้อมูลอยู่ 2 ฐานที่ซ้อนกันอยู่ คือ ฐานข้อมูลที่ใช้เก็บรายละเอียดว่า ใบเสนอราคารหัสนี้ ได้เสนอราคาสินค้าอะไรไปบ้าง และอีกฐานหนึ่ง ก็คือฐานข้อมูลของสินค้าที่ถูกเรียกข้อมูลให้มาแสดงครับ

4. ช่องให้ใส่จำนวนเงินเป็นตัวหนังสือ ตรงนี้หากไม่พิมพ์ลงไปเอง ก็สามารถให้โปรแกรมมันคำนวณให้ครับ

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

6. Auto Date ก็คือวันที่ ที่ออกใบเสนอราคาแบบอัตโนมัติครับ ทำวันไหน ก็ให้มันใส่วันนั้นลงไปเลย

จริงแล้ว ใบเสนอราคาของจริงจะมีรายละเอียดเพิ่มเติมมากกว่านี้อีกหน่อย แต่ผมเห็นว่า เท่านี้เป็นพอ ก็เท่านี้แหละ อย่าเถียงก็แล้วกัน ..

การเลือกชนิดของข้อมูล

เอ้า จากนั้น มาวิเคราะห์กันหน่อยว่า field ที่เราแจกแจงมา ควรจะได้ชนิดข้อมูลเป็นอะไร

1. Order number ก็แล้วแต่ท่านจะเลือกนะครับ  หากจะให้เป็นตัวเลขล้วน ชนิดข้อมูลของมันก็คือ Number ครับ แต่หากต้องการเอาตัวหนังสือมาผสม ก็เลือกชนิดให้เป็น Text นะครับ กรณีของผม ผมจะเลือกให้เป็น Text ครับ เพราะสามารถตั้งรหัสของใบเสนอราคาให้สื่อความหมายได้ เช่น จะให้รหัสประกอบไปด้วย .. ชื่อย่อของร้าน + เลขท้าย 2 ตัวของปี พ.ศ. + เลขเดือน + เลขที่สร้างขึ้นโดยอัตโนมัติ มันก็จะได้ตัวอย่างเป็น CNX52101 หรืออ่านได้เป็น ใบเสนอราคาของร้าน cnx ออกเมื่อปี 52 เดือน 10 ใบเสนอราคาใบที่ 1  .... เข้าใจบ่

เหตุที่ต้องใช้เลขที่สร้างขึ้นโดยอัตโนมัตินั้น เนื่องจากว่า ในฐานข้อมูลนี้ จะต้องไม่มีรหัสใบเสนอราคาที่ซ้ำกันโดยเด็ดขาด ไม่งั้น ยุ่งเลย ..

2. Name แน่นอนว่า ชื่อของลูกค้าจะต้องเป็นชนิดข้อมูล Text  แต่ตรงนี้อยากให้คิดหน่อยว่า หากดูภาพรวมแล้ว ตอนนี้เราได้ table อยู่ 3 table แล้วนะ หรือว่า 3 ฐานข้อมูลนั่นแหละ .. ก็คือ ฐานข้อมูลใบเสนอราคา ฐานข้อมูลลูกค้า และฐานข้อมูลสินค้า ดังนั้น ตรงในส่วนของการใส่ข้อมูลลูกค้านี้ เราสามารถที่จะดึงเอาข้อมูลที่ได้ทำการบันทึกไว้ในฐานข้อมูลลูกค้ามาแสดงได้ เพียงแค่เลือกชื่อลูกค้าให้ถูกก็แล้วกัน แล้วข้อมูลอื่นๆ มันจะมาเองโดยอัตโนมัติ อันนี้เดี๋ยวว่ากัน

3. Order detail  อันนี้เหมือนกันกับข้อ 2 เลย คือแบบว่า เราก็มีฐานข้อมูลของสินค้าแล้ว เพียงแค่เลือกชื่อสินค้าให้ถูก ข้อมูลอื่นๆ ก็จะมาเองเหมือนกัน ดังนั้น ชื่อสินค้า ชนิดข้อมูลของมันก็คือ Text นะ ส่วน field อื่นนั้น ว่ากันทีหลังด้วยฐานข้อมูลย่อยนะ

4. ช่องให้ใส่จำนวนเงินเป็นตัวหนังสือ ช่องนี้ Text แน่นอน เพราะต้องเป็นตัวหนังสือไง หากต้องการที่จะให้มันเปลี่ยนตัวเลขเป็นตัวหนังสือโดยอัตโนมัตินั้น ต้องเขียนสูตรคำนวณให้มันนะ

5. ช่องให้ใส่ลายเซ็นและรูปลายเซ็น สำหรับรูปลายเซ็นนั้น เราได้มาจากการให้เจ้าของร้าน คนที่ 1 คนที่ 2 ทำการเซ็นชื่อบนกระดาษให้ชัดเจน จากนั้นก็เอากระดาษไป scan แล้ว แยกลายเซ็นของแต่ละคนออกมาเป็นคนละ file ดังนั้น field ที่ใช้บรรจุรูปลายเซ็นนั้น File Maker Pro บังคับว่า ต้องเป็นชนิดข้อมูล container เท่านั้นหน่ะครับ

6. Auto Date ชื่อก็บอกว่าเป็น date ดังนั้น ชนิดข้อมูลก็ต้องเป็น date ด้วย แต่ว่าพิเศษตรงที่ เราจะให้มันใส่ข้อมูลโดยอัตโนมัติ ดังนั้น จึงต้องให้มันเป็นชนิดข้อมูลแบบ Calculation ครับ

บทความอื่นๆ