(อาจารย์เกวลี) โอเค สวัสดีค่ะ
โอเคค่ะ วันนี้
จะเป็นบทที่ 4 นะคะ
จะเป็นเกี่ยวกับ
แบบจำลองข้อมูล
หรือเวลาเราเรียกสั้น ๆ
ก็คือการวาดรูป ER นะคะ ตัว E แล้วก็ตัว R
เป็นภาษาอังกฤษ
โดยแผนภาพนะคะ ER
นะคะ หรือว่า ER Model นี่ มันจะเป็น
ล่ามเขาได้ยินเราไหมพลอย
ทำไมล่ามดูนิ่ง ๆ
ล่ามได้ยินไหมคะ
ล่ามได้ยินไหมคะ ถ้าได้ยิน
โอเคด้วยค่ะ โอเค โอเค โอเคค่ะ
ก็การวาด ER นะคะ หรือเป็นแบบจำลองข้อมูล
นะคะ มันจะเป็นแบบจำลองที่ใช้อธิบาย
โครงสร้างของฐานข้อมูล โดยที่เราจะแสดงออกมาเป็นรูปภาพ
นะคะ โดยที่โครงสร้างสำคัญที่
จะต้องใช้ในการวาดรูปของเรานะคะ ก็คือ Entity
หรือว่าตาราง กับความสัมพันธ์แต่ละ
เส้นที่เชื่อมโยงในแต่ละตาราง เราจะต้องโยง
กันให้ถูกนะคะ อย่างเช่น ตารางของอาจารย์กับตารางนักศึกษา
จะต้องมีความสัมพันธ์กัน ในฐานะการเรียนการสอน
แบบนี้นะคะ
การวาดรูปจะเป็นเหมือนรูปที่อาจารย์ยกตัวอย่างให้
ดูบนจอนะคะ การ
ที่เราจะวาดรูปได้ เราต้องรู้ด้วยว่าสัญลักษณ์แต่ละอัน ห
มายความว่าอย่างไร ทำไมเราต้องใช้วงรี ทำไมเราต้องใช้สี่เหลี่ยม
ผืนผ้า ทำไมเราต้องลากเส้นตรงนะคะ
แต่ละอันมีความหมายหมดเลย แล้ววันนี้ก็จะ
พอบรรยายเสร็จจะให้วาดเองด้วย
นะคะ
จุดเด่นของแผนภาพ ER
นะคะ มันจะทำให้เราออกแบบฐานข้อมูลได้เร็วขึ้น เพราะมันเหมือนเป็น
การจัดระเบียบความคิดของผู้ที่ออกแบบ
คล้าย ๆ กับเราสมัยมัธยมน่าจะเคยวาด Mind Map
นะคะ การวาด ER ก็เหมือนกันนะคะ
มันจะได้รู้ว่าเราต้องการจะออกแบบอะไร อะไร
ควรมีความสัมพันธ์กัน หรืออะไรที่ขาดหายไปนะคะ
เราจะได้เห็น รวมถึงลดความ
ซ้ำซ้อนของข้อมูลออกไปด้วย เช่น ในตารางนี้
มีข้อมูลนี้อยู่แล้ว ก็ไม่จำเป็นต้องใส่เพิ่มในตารางอื่นก็ได้
นะคะ หรือว่าพอเราวาดเสร็จออกมา ทำไมมี
ตารางที่คล้าย ๆ กัน 2 อัน มันลบออกได้ไหม
นะคะ การวาดรูปก็จะทำให้เราเห็นภาพได้ง่ายขึ้น
โดยคุณลักษณะของการวาดแผนภาพ ER
นะคะ ก็คือแน่นอนมันแสดงผลออกมาเป็น
ภาพนะคะ model ข้อมูล หรือรูปแบบข้อมูล
แบบไหนก็ตามนี่ มันจะมีภาษาแล้วรูปภาพที่เป็นกราฟิก
โดยเฉพาะนะคะ อาจจะมีทั้งภาพขนาด
ใหญ่ ภาพขนาดย่อย มันจะทำให้เรา
อ่านข้อมูล หรืออ่านฐานข้อมูลนั้นได้ง่าย เพราะ
เราใช้วงกลม เราใช้สี่เหลี่ยม เราใช้วงรีนะคะ เราใช้วงกลม เราใช้
เส้นโค้ง เส้นปะ ทุกอย่างมีความหมาย
หมดนะคะ มันก็แสดงให้เห็นถึงความชัดเจนของ
ความหมายข้อมูลด้วย โดยทีเราอาจจะใช้สัญลักษณ์ที่
ต่างกันเล็กน้อยนะคะ ซึ่งตัวรูปแบบของการวาด
นี่ มันก็จะมีหลาย หลายรูปแบบ หนังสือ
แต่ละเล่ม บางเล่มก็ไม่เหมือนกัน บางคนใช้รูปแบบของคนนี้
หรือหนังสืออีกเล่มหนึ่งอาจจะใช้รูปแบบที่ต่างออก ๆ ไปนะคะ
ในวาดรูป แต่เดี๋ยวตอนถึงเวลาวาดรูปเราต้องตกลงกัน
ก่อนว่า เราจะเลือกรูปแบบไหนนะคะ
ข้อสำคัญ คือ แผนภาพที่ได้มานี่ มันควร
ที่จะอ่านง่าย ๆ ไม่ซับซ้อน เส้น
ไม่ลากตัดกันไปตัดกันมา ฉันเพิ่งคิดได้ ฉันเลยอยากวาดไว้ตรงนี้
ไม่ได้นะคะ เราต้องคิดก่อนว่า เราจะวาดเส้นตรง
ข้าม จากกระดาษฝั่งหนึ่งไปอีกฝั่งหนึ่งนี่
เราต้องมาจัดระเบียบความคิดตัวเองด้วยว่า ในตารางนี่
มันมีตารางอะไรบ้าง แล้วแต่ละตารางนี่ มัน
ควรจะเชื่อมกันอย่างไรนะคะ
โดยในแผนภาพ
ที่เราวาดนะคะ รายละเอียดต้องอยู่ในระดับที่เหมาะสม
อาจจะไม่ได้ละเอียดยิบขนาดนั้น ไม่ต้องละเอียด
แบบเป๊ะ ๆ ๆ แต่ว่าเราต้องมองภาพให้ออก หรือ
อาจจะมีการเปลี่ยนแปลงแก้ไข มันจะต้องยืดหยุ่น
นะคะ รวมถึงรายละเอียดต้องเพียงพอ ไม่ใช่ว่าน้อยไป บางอันก็
เยอะไปนะคะ เอาที่พอดี โดย
ที่แต่ละอันนี่ อย่างที่บอก เราจะต้องมีการเชื่อมโยงความสัมพันธ์ของ
แต่ละตารางด้วยนะคะ แล้วก็
การวาดรูปของเรา เราจะไม่ตายตัวเลย ว่า
เราวาดเพื่อไปใช้กับโปรแกรมอะไรนะคะ
รูปที่เราวาดจะต้องเอาไปใช้ได้กับทุกโปรแกรม หรือทุก
แบบของฐานข้อมูลนะคะ แล้วก็เวลาใคร
มาอ่าน จะต้องเข้าใจง่าย ถึงแม้ว่าเขาจะ
ไม่ได้เรียนทางด้านคอมพิวเตอร์มาก่อน แต่พอ
เขาดูรูปภาพ อย่างน้อยเขาก็จะเข้าใจว่าเราจะสื่ออะไร
ในฐานข้อมูลเรามีอะไรบ้างนะคะ เขาอาจะไม่รู้หรอกว่า
วงรีมันหมายความว่าอะไร หรือสี่เหลี่ยมหมายความว่าอะไร
ทำไมต้องเป็นเส้นปะ ทำไมต้องมีเส้นโค้งด้วย เขาอาจจะไม่ต้องเข้าใจตรงนั้น
แต่เขาดูแล้วเขาก็พอเข้าใจว่าอะไร เราต้องการจะสื่อ
อะไร ในฐานข้
อมูลเรามีอะไรบ้างนะคะ อันนี้ก็คือไม่ว่าจะเป็นใคร จะต้องอ่านรูปที่เราวาดเข้าใจ
ระดับหนึ่งก็ยังดีนะคะ
ขั้นตอนในการออกแบบแผนภาพ ER
นะคะ มันก็จะมีอยู่หลายขั้นตอน แต่เราก็จะแบ่งออกมาได้เป็น 5 ขั้นตอน
ในการออกแบบ หรือการวาดด้วยนะคะ
โดยพอเราได้ภาพคร่าว ๆ มาแล้วนี่ เรา
ค่อยไปใส่รายละเอียดทีหลังก็ได้ ว่าผู้ใช้งานเขา
ควรจะดูข้อมูลได้ในระดับไหน ผู้ใช้งานแต่ละคน
การเข้าถึงข้อมูลแต่ละชั้นนี่
แต่ละขั้น แต่ละชั้นนี่ ใครเข้าได้บ้าง
หรือว่าผู้ใช้งานดูได้อย่างเดียวไหม หรืออะไร
หลังจากที่เราวาดรูปเสร็จแล้ว แล้วค่อยมาใส่รายละเอียดทีหลังก็ได้นะคะ
โดยขั้นตอนแรก
เราจะกำหนด Entity หลัก หรือตารางหลัก
นะคะ โดยในการออกแบบฐานข้อมูลนี่ เราจะต้องเอา...
รวบรวมความต้องการของผู้ใช้งาน
ก็คือ Requirement นี่ล่ะ
นะคะ มากำหนดว่าในฐานข้อมูลเราจะมี Entity หรือฐานข้อมูลอะไร
บ้าง ซึ่งขั้นตอนนี้เป็นขั้นตอนที่ค่อนข้างยาก
นะคะ ต้องเข้าใจ
ในสิ่งที่เรากำลังจะสร้าง ทั้งผู้ใช้งานแล
้วก็ผู้ออกแบบต้องเข้าใจตรงกัน เพราะ
ถ้าเรากำหนดตารางไปแล้ว แล้วอยู่ดี ๆ มาเพิ่ม
มันอาจจะต้องเชื่อมต่อความสัมพันธ์ใหม่
นะคะ โดยวิธีการ ก็คือถ้าอยากทำให้มัน
ครอบคลุมมากที่สุดก็คือ เอาข้อมูลที่มี
มาวางแล้วจัดกลุ่มของข้อมูลนะคะ
โดยรู้ว่าข้อมูลมีค่าอะไรบ้าง มีความหมายอย่างไร
แต่อะไร แต่ละอย่างนี่ เชื่อมโยงกันอย่างไร
นะคะ ถ้าข้อมูลเป็นข้อมูลชนิดเดียวกัน ให้
รวมไว้ในตารางเดียวกัน แล้วกำหนดชื่อ เช่น นักศึกษา
นะคะ อาจจะมีหลายคณะ
ก็จริง แต่ก็คือนักศึกษา เรารวมเป็นตารางเดียวได้ไหม ได้
แล้วค่อยมากำหนดลักษณะพิเศษของแต่ละคน ว่า
ในนักศึกษาหลาย ๆ พันคนนี่ เขามีความแตกต่างอะไรบ้าง
แต่เราก็เก็บข้อมูลไว้ในตารางเดียวก็พอ นะคะ โดยเราจะ
จดทุกอย่างจะต้องจดไว้ในบันทึกพจนานุกรม
ข้อมูลด้วย แล้วก็เขียนลงไปในแผนภาพที่เราจะวาดด้วย ว่า
ในตารางนี้มีข้อมูลอะไรบ้าง ที่เราต้องใช้
นะคะ
ขั้นตอนที่ 2 ก็จะต้องมากำหนด
ความสัมพันธ์ ระหว่าง Entity หรือว่า
ก็จะมีการการกำหนดชื่อ กำหนดความหมาย ความสัมพันธ์ ทิศทาง
การเชื่อมโยงของข้อมูล อัตราการเกิดความสัมพันธ์
นะคะ เช่น นักศึกษา 1 คน
สามารถลงทะเบียนเรียนได้หลายวิชานะคะ
แต่ในหลาย ๆ แต่ละวิชามีผู้สอนได้เพียง
คนเดียว อันนี้คือความสัมพันธ์ที่เกิดขึ้น
แต่อาจารย์ 1 คน ก็สามารถสอนนักศึกษาได้หลายคน
เหมือนกัน ได้หลายวิชาด้วยนะคะ
ซึ่งอาจจะเป็นยกตัวอย่างการ
กำหนดอัตราส่วนอีกอย่างหนึ่ง ก็คือเหมือนที่อาจารย์ชอบยกตัวอย่าง
บ่อย ๆ รหัสบัตรประชาชน
ไม่ควร... มันไม่เกิน 13 หลักอยู่แล้วเราก็ต้องกำหนด
ชื่อคนกำหนดไว้เลยก็ได้ไม่ควร
เกิน 20 ตัวอักษร คงไม่มีใคร
ตั้งชื่อตามหลักโหราศาสตร์
ยาวเกิน 20 ตัวหรอกนะคะ แล้วก็เราก็สามารถ
แบ่งกลุ่มได้แล้ว ว่าข้อมูลแต่ละอันมันจะต้องเชื่อมโยง
กันอย่างไร หลังจากนั้นก็มาดูว่าขนาดของความสัมพันธ์เป็นอย่างไร
1 ต่อ 1 หรือ 1 ต่อ
มากกว่า 1 อะไรพวกนี้นะคะ ภาษาอังกฤษ
ก็คือ One-to-One One-to-Many อะไรพวกนี้
นะคะ ซึ่งก็จะต้องวิเคราะห์ดี ๆ นะคะ เพราะมันจะต้อง
สามารถอ่านไปข้างหน้าแล้วก็อ่านย้อนกลับมา
โดยที่ความหมายไม่เปลี่ยนในแผนภาพของเราด้วยนะคะ
ขั้นตอนที่ 3
กำหนดคีย์หลัก กำหนดคีย์รอง
ก็คือ Primary Key กับ Second
ary key นะคะ หลังจากที่เราได้ตารางต่าง ๆ แล้วนะคะ ขั้นตอนต่อไป
ก็คือในตารางเราจะต้องเก็บข้อมูลหรือ Attribute
อะไรบ้าง เช่น ตารางนักศึกษา
ต้องเก็บข้อมูลอะไรบ้างเกี่ยวกับนักศึกษา
ถ้าพอจำได้ ก็คือตอนเราเข้ามาเรียนเรากรอกข้อมูล
เยอะมากตั้งแต่ใบสมัครเลยนะคะ
อันนั้นคือ Attribute
ที่มหาวิทยาลัยต้องการ ชื่ออะไร
นามสกุลอะไร บัตรประชาชนเลขอะไร เกิดวันที่เท่าไร
บ้านอยู่ไหน พ่อแม่ชื่ออะไร จบจากโรงเรียนอะไร เกรดเฉลี่ยเท่าไร
ปัจจุบันที่ไหน ใครเป็นคนส่งเรียน
ได้เงินเดือนเดือนละเท่าไรนะคะ
ที่... ใครเป็นผู้ปกครอง เบอร์ผู้ปกครองเบอร์อะไร
บางคนผู้ปกครองไม่ใช่พ่อหรือแม่ อาจจะเป็นคุณตา
คุณยายนะคะ ที่อยู่ปัจจุบัน
อยู่ไหน แล้วมาเรียนราชภัฏพักที่ไหน
กรอกให้หมด เกรดเฉลี่ยตั้งแต่ ม.4 ม.5 ม.6 เป็นอย่างไร
อันนี้คือสิ่งที่มหาวิทยาลัยต้องการรู้เกี่ยวกับพวกคุณ
ซึ่งก็คือ Attribute นั่นเองนะคะ
โดยหัวของแต่ละคอลัมน์ หรือ Attribute
นี่ ควรกำหนดเป็นคำสั้น ๆ ง่าย ๆ อาจจะเป็นตัวย่อก็ได้
แต่ต้องสื่อความหมายนะคะ แล้วก็
หลีกเลี่ยงการตั้งชื่อเหมือนกัน
นะคะ
อาจจะเป็นชื่อ ชื่อนี่
บางคนไม่เข้าใจ สรุปใส่ชื่อเล่นหรือชื่อจริง เพราะฉะนั้น
ต้องกำหนดไปเลยว่าคุณต้องการอะไร ชื่อจริงก็ใส่ชื่อจริง
ชื่อเล่นก็ใส่ชื่อเล่น ไม่ใช่คำว่า "ชื่อ"
เฉย ๆ แล้วเขาจะรู้ไหมว่าต้องใส่อะไร เขาอาจจะ
ใส่ชื่อเล่นก็ได้นะคะ
กำหนดคีย์ภายนอก หรือว่า Foreign Key
เป็น Key ที่เอาไว้เชื่อมโยงแต่ละตารางเข้าไว้ด้วยกัน
นะคะ อย่างเช่น นักศึกษากับอาจารย์นี่
จะเชื่อมโยงกันได้อย่างไร เชื่อมโยงโดยรหัสวิชา
เช่น รหัสวิชานี้ใครเรียนบ้าง ใคร
สอนบ้าง แค่กรอกรหัสเข้าไปก็รู้ได้เลย
อันนี้คือการเชื่อมโยงกันของอาจารย์กับนักศึกษาในวิชานั้น ๆ
นะคะ โดยที่คีย์นอก หรือ Foreign Key นี่ มันอาจจะ
เป็นคีย์หลักของตารางอื่นก็ได้
นะคะ
เดี๋ยวพอวาดรูปก็จะเข้าใจมากขึ้น
อันนี้ตอนพูดนี่ อาจจะไม่ค่อยเข้าใจเท่าไร ว่า เอ๊ะ ทำไมมันถึงเชื่อมโยงกันได้นะคะ
ขั้นที่ 5
พิจารณาขอบเขตค่าแต่ละค่า
ที่อยู่ในแต่ละข้อมูลที่เราต้องการ
นะคะ ก็คือขอบเขตของข้อมูลนั่นล่ะ
เช่น ชนิดของข้อมูล เราจะกำหนดเป็นอะไร
วันเกิดควรกำหนดเป็นอะไร
เงินเดือน มันควรเป็นจำนวนเต็มไหม คุณอยากได้ทศนิย
หรือเปล่านะคะ อย่างชื่อ ก็ควรกำหนด
เป็นรับข้อมูลเฉพาะตัวอักษรเท่านั้น กรอกเป็นตัวเลขไม่ได้
อันนี้คือสิ่งที่เราต้องกำหนดตั้งแต่
ตอนที่ออกแบบฐานข้อมูลเลยนะคะ ความยาว
เลขบัตรประชาชนก็ 13 หลัก
นะคะ เบอร์โทรศัพท์ก็ 10 หลัก
อะไรแบบนี้ นามสกุลไม่ควรเกิน 35 ตัว
อักษร เงินเดือนก็
เอาสักไม่เกิน 7 หลัก ประมาณนี้นะคะ
รูปแบบข้อมูล บางประเทศมันไม่เหมือนประเทศเรา
เขาจะเอาเดือนขึ้นก่อน ตามด้วย
วัน ตามด้วยปี คุณก็สามารถกไหนดได้เหมือนกัน
เราอยากให้แบบของเราเพื่อดูง่าย ๆ ก็เป็น วัน เดือน ปี ตามกัน
อย่างนี้ก็ได้นะคะ กับค่าที่อนุญาต
โดยเฉพาะ เช่น ทุกวันที่ 1
กับ 16 ของเดือนเป็นวันหยุด
คุณก็สามารถตั้งได้ ว่าในฐานข้อมูล คือ
ถ้าสมมติลูกค้า ต้องการจะจองคิวทำอะไรก็ตาม
ถ้าเป็นวันที่ 1 กับวันที่ 16 จะไม่อนุญาตให้จอง
แบบนี้ก็ได้นะคะ
อันนี้ก็ต้องตั้งแต่เราออกแบบเลย ว่าข้อตกลงของเรา
ควรจะเป็นอย่างไรนะคะ
อันนี้ก็อธิบายไปแล้วนะ กับอีกอันหนึ่ง สำคัญ
ความเป็นหนึ่งเดียว ก็คือ
อย่างเช่นรหัสนักศึกษาต้องกำหนดเลยว่าต้องห้ามเป็น
ค่าที่ซ้ำ ซ้ำกันไม่ได้
เราอาจจะกรอกเลขผิดไปตัวหนึ่ง ระบบอาจจะ
ต้องแจ้งเตือน ว่าคุณเลขนี้ใช้ไม่ได้มันซ้ำไปแล้ว
กับการเป็นค่า
Null ค่า Null ในที่นี้ คือ คุณไม่กรอกข้อมูลได้ไหม
บางระบบจะบอกว่าไม่ได้ ถ้าใครเคยกรอก
ข้อมูลในอินเทอร์เน็ต จะเห็นว่าบางช่องของการกรอกข้อมูลเขาจะมี
ดอกจันสีแดงกำหนดไว้อยู่
นั่นคือเป็นข้อมูลที่เขาต้องการ คุณจะเว้นว่างไม่ได้
นะคะ หรือถ้าต้องการจะเว้นว่าง
หรือไม่ตอบเขาจะเรียกอีกอย่างหนึ่งว่า "ค่า Default
ปริยาย ถ้าไม่ตอบว่าเงินเดือนเป็นเท่าไร
ค่าเริ่มต้นคือ 0 แต่เป็นค่าว่างไม่ได้
ไม่ตอบไม่ได้ เพราะฉะนั้นเราใส่ไปเลย 0 บาท
แบบนี้ก็ได้ แต่ส่วนมากทุกคนก็ต้องกรอกอยู่แล้วนะคะ
ขั้นตอนสุดท้าย
ก็มาวิเคราะห์ดูว่าแผนภาพที่เราออกแบบนี่
มันสามารถปรับปรุง แก้ไข หรือว่าขยาย
ตัวในอนาคตได้หรือเปล่า เพราะว่าการออกแบบที่ดีนี่
ต้องคำนึงถึงการเปลี่ยนแปลงด้วย
ไม่ใช่ว่าตายตัวไปตลอด เกิดสมมติว่าวันนี้คุณอาจ
เปิดร้านลูกค้าอาจจะไม่ถึง 100 คน แต่ใครจะไปรู้
อนาคตคุณอาจจะเป็นธุรกิจที่มันเติบโต มีสาขา
ไปอีกเป็นร้อยสาขา มีลูกค้าอีกเป็นหมื่นคน
แต่ฐานข้อมูลคุณ fix ไว้ว่า อย่างรหัส
ลูกค้า แค่ 1-100 มันเป็นไปไม่ได้ค่ะ
นะคะ ต้องวิเคราะห์ด้วยว่ารหัส
ลูกค้านี่ มันจะต้องเป็นการเพิ่มขึ้น
อย่างอัตโนมัติไปได้เรื่อย ๆ หรือเปล่า
หรือคุณจะเป็นคนกรอกเองนะคะ
อันนี้ก็ต้องคิดด้วยไม่ใช่ว่าระบบฉันใช้แค่
10 คนนี่ล่ะ บางที่อนาคตอาจจะไม่ใช่อย่างนั้นนะคะ
โดยการสร้างแบบจำลองข้อมูล หรือการวาดแผนภาพ
นี่ มันจะต้องวิเคราะห์ถึงข้อมู
ลต้องเก็บในระบบนะคะ อาจจะเกี่ยวกับ
ข้อมูลที่เราจำเป็นต้องเรียกใช้ โครงสร้างที่
รวมถึงถ้ามันมีการเพิ่ม ลบ แก้ไขข้อมูล
จะต้องทำที่ตารางไหน ถ้าสมมติว่า
ข้อมูลในตารางนั้นถูกลบไป มันจะไปกระทบกับข้อมูลในตาราง
อื่นหรือเปล่านะคะ เช่น วันดี
คืนดีอาจารย์ลบชื่อสาขาที่คุณเรียนออก
มันจะกระทบกับพวกคุณไหม เป็นนักศึกษา
ไม่มีสังกัด ทำได้ไหม ไม่ได้
นะคะ ก็ต้องดูด้วย เขาเรียกว่า "กฎ
การคงสภาพของข้อมูล" อยู่ดี ๆ อยากลบ
ไม่ได้ เหมือนอยากเปลี่ยนเลขบัตรประชาชน
บัตรประชาชนให้เดชมงคลได้ไหม ไม่ได้
เลขมันไม่สวย อยากได้เลข 9 ลงท้ายอะไรอย่างนี้ มันไม่ได้
แต่ชื่อเปลี่ยนได้ไหม เปลี่ยนได้ แต่
บางอย่างมันเปลี่ยนไม่ได้นะคะ เช่น
รหัสนักศึกษา เลขบัตรประชาชนอย่างนี้ เราต้องวิเคราะห์ด้วย ไม่ใช่ว่า
ออกแบบไป แล้วใครอยากเปลี่ยนเลขบัตรประชาชนตอนไหนก็ได้
แบบนี้เป็นต้น
โดยการเขียนแผนภาพ ER นี่ มันก็จะอธิบาย
ภาพรวมทั้งหมดนะคะ อย่างที่บอกตอนต้น ก็คือ
มันต้องเข้าใจง่ายนะคะ อาจจะไม่ต้องรู้
ว่าข้อมูลที่เรากำลังจะเก็บนี่ เก็บที่ไหน เก็บอย่างไร
ไม่จำเป็น แค่วาดออกมาให้ดูก่อนว่า ในฐานข้อมูลต้องม
ีนะคะ ในแต่ละตารางมีความสัมพันธ์กัน
อย่างไร ข้อมูลมันจะซ้ำซ้อนกันไหมนะคะ
แล้วก็เขียนให้ออกมา
ดูง่ายที่สุด อย่างที่อาจารย์บอกตคอนแรก แผนภาพ
การวาดรูปนี่ มันมีหลาย...
เขาเรียกว่าอะไรล่ะ หลายมาตรฐานแล้วกัน
หนังสือแต่ละเล่มก็เลือกมาใช้ไม่เหมือนกัน
นะคะ มีทั้งแบบ Chain Mode
l แบบ Craw foot
จะคล้าย ๆ กับรอยเท้าของนก
รอยเท้าอีกา เขาก็เรียกเป็นรูปแบบ
รูปแบบหนึ่งนะคะ แต่ที่เราจะใช้กันบ่อย ๆ
นะคะ จะเป็นแบบของ Chain Model
ตัวช่องสีเหลือง เราจะเลือกตัวใช้แบบนี้ เพราะว่ามันเขียนง่าย
มันอ่านง่ายที่สุดนะคะ
แต่ถ้าคุณไปเจอหนังสือเล่มอื่น
เข้าใช้แบบอื่น ผิดไหม ไม่ผิด อยู่ที่เขาจะเลือกใช้แบบไหนแค่นั้นเองนะคะ
สัญลักษณ์
ที่ต้องใช้ในการวาดรูปนะคะ สัญลักษณ์
สี่เหลี่ยมผืนผ้ามันจะหมายถึงชื่อตาราง
นะคะ แบบสี่เหลี่ยมข้าวหลามตัด
มันจะบอกถึงความสัมพันธ์ของตาราง
แต่ละตารางนะคะ แล้วคอลัมน์ใน
แต่ละตารางล่ะนะคะ เราก็จะใส่เป็นรูปวงรี
ถ้า
คอลัมน์นั้น ๆ เป็นคีย์หลักที่ห้ามซ้ำ
กัน ในรูปวงรีจะต้องขีดเส้นใต้ด้วย
ส่วนด้านข้าง
อันนี้จะไม่ค่อยพบเห็นบ่อย แต่เจอในข้อสอบ
แน่ ๆ นะคะ อันแรกเป็นสี่เหลี่ยมผืนผ้า
ซ้อนกัน 2 อัน มันหมายถึงตารางนั้นน่ะ
เป็นตารางอ่อนแอ หรือ Weak Entity จะต้องพึ่งค่าตารางอื่น
เพื่อให้ตารางของมันมีความหมายนะคะ
กับ
ต่อมาสี่เหลี่ยมข้าวหลามตัดซ้อนกัน 2 อัน ก็เช่นกันเดียวกันค่ะ
เขาจะเรียกว่า "ความสัมพันธ์แบบอ่อนแอ" มันจะต้องไปดึงค่า
หรือความสัมพันธ์อื่น ๆ มาทำให้ตัวมันมีความหมาย
ขึ้นมานะคะ
วงรีซ้อนกัน 2 วง ก็คือในตารางนี้
นี่ ในคอลัมน์นี้หรือในข้อมูลนั้น ๆ นี่ มันอาจจะ
มีข้อมูลได้มากกว่า 1 ข้อมูล เช่น คุณอาจจะมีเบอร์โทรศัพท์
3 เบอร์
หรือว่ามีชื่อเล่น
พ่อเรียกชื่อหนึ่ง แม่เรียกชื่อหนึ่งก็บอกได้
มีสัตว์เลี้ยงมากกว่า 2 ตัว แต่ละตัวมีชื่อว่าอะไร
บ้าง อย่างนี้ก็ได้นะคะ กับ
วงรีที่เป็นเส้นประ มันหมายถึงว่าค่าข้อมูล
ในนี้นี่ จะได้มาจากการคำนวณของข้อมูล
อื่น ๆ ที่พบบ่อยที่สุด ก็คือ
อายุ
ายุจะได้มาจากการคำนวณวันเกิด ใช่ไหมคะ
ะนั้น ไอ้เส้นวงรีปะ ๆ พวกนี้
อายุของเราได้มาจากการกรอกวัน เดือน ปีเกิด นั่นเอง
นะคะ ให้มันคำนวณให้
อัติโนมัติ ผู้ใช้งานไม่ต้องบอกเองว่าอา
ยุเท่าไร ให้ระบบคำนวณให้เลย อายุ 18 ปี 11 เดือน
10 วัน อะไรก็ว่าไปนะคะ
อันนี้คือสัญลักษณ์ที่เราใช้บ่อย รูปเดียวกันกับรูปเมื่อกี้
นะคะ
อันนี้จะอธิบายโดยละเอียด Entity หรือว่าชื่อของตาราง
นะคะ ก็จะเป็นส่วนในการเก็บข้อมูล รายการ
แต่ละรายการที่ระบบจัดการฐานข้อมูล หรือเรากำลัง
จะสร้างระบบขึ้นมานะคะ เช่น
สัญลักษณ์นะคะ Entity จะเป็นสี่เหลี่ยมผืนผ้า มี
ชื่อตารางหรือชื่อ Entity อยู่ข้างในนะคะ เรา
จะต้องวาดแบบนี้ทุกครั้ง
นะคะ โดย ตัวอย่าง
เช่น ตารางบุคคล บุคคลคืออะไรบ้าง
เป็นตารางพนักงาน ตารางผู้ป่วย ตารางบุคลากร ตาราง
นักศึกษา ตารางลูกค้า อาจจะเป็นข้อมูลเกี่ยวกับ
สถานที่ ก็จะเป็นตารางเก็บจังหวัด เก็บข้อมูลจังหวัด
เก็บข้อมูลอำเภอนะคะ ตารางที่เกี่ยวกับวัตถุ อาจจะเป็น
รถยนต์ อาคาร เครื่องจักร สินค้าก็ได้
หรืออาจจะเป็นเหตุการณ์ต่าง ๆ ที่เกิดขึ้น เช่น การซื้อ การขาย
การรักษาโรค การซื้อการขาย
สัญลักษณ์ อย่างที่บอก เป็นสี่เหลี่ยมผืนผ้า มีชื่อ Entity
หรือว่าชื่อตารางอยู่ข้างในนะคะ
ประเภทของ Entity ก็มีอยู่ 2 ประเภท
นะคะ แต่ส่วนใหญ่ที่เราใช้กัน นี่ จะเป็น Entity ทั่วไป
นะคะ เป็น Regular
ก็ คือ เป็นตารางที่ข้อมูลในนั้นสามารถแยกข้อมูลแต่ละแถว
ออกได้นะคะ กับอีกอันหนึ่ง คือ Entity
อ่อนแอ มันจำเป็นจะต้องใช้ข้อมูลอื่น
มาช่วยทำให้ข้อมูลในแถวนั้น ๆ มีคุณค่า หรือมีความหมายขึ้นมา
นะคะ อันนี้เป็นตัวอย่าง
Entity ทั่วไป หรือตาราง
ทั่วไปนะคะ จะสังเกตได้ว่า
อย่างข้างบนนี่ อาจารย์เขียนไว้ว่า Entity Student
ก็คือตาราง
ตารางหนึ่ง ที่มีข้อมูลเกี่ยวกับนักเรียนอยู่
แต่สิ่งที่เราจะเอามาวาดแผนภาพ มันไม่ใช่กรอบสี่เหลี่ยมนี้นะคะ
เราจะเอามาแต่ชื่อ
เช่น ตาราง Student ก็คือ Entity Student
เก็บข้อมูลอะไรบ้าง ก็คือตัวนี้ เราจะวาด
แค่นี้ค่ะ เอาสี่เหลี่ยมข้างล่างมาวาด แล้วก็บอกด้วยว่า
ชื่อตารางอะไรนะคะ
อ่อนแอนะคะ อันนี้ก็คือเป็นข้อมูลเกี่ยกับ
การลงเวลาทำงาน เวลาออกจากงาน
อันนี้เป็นตัวอย่างของ Entity
ตารางนี้นะคะ Time stamp ก็คือการลง
ข้อมูลที่เข้าทำงาน แล้วก็เวลากลับบ้าน
เพราะฉะนั้น 2 ตัวนี้จะต้องเชื่อมโยงกันอยู่แล้ว
ถ้าขาดอันใดอันหนึ่งไป
เวลา ตารางนี้จะไม่มีความหมายเลย
ก็คือมีแต่เวลามาทำงาน แล้วกลับบ้านตอนไหน ไม่รู้
อย่างนี้ไม่ได้นะคะ
ก็คือมาทำงาน ก็ต้องมีเวลากลับบ้าน
ตารางนี้จะไม่มีความหมายเลย
ไม่อย่างนั้นจะรู้ได้อย่างไร ว่าคุณมาทำงานกี่โมงนะคะ อันนี้เป็นตัวอย่าง
ของตารางที่ถ้าขาด
หรือมีแต่เวลากลับบ้าน
ๆ นี่ ไม่สมบูรณ์ มีปัญหานั่นเองนะคะ
อย่างเช่น อันนี้เป็นตัวอย่าง
ข้อมูลใดข้อมูลหนึ่งไป
ตารางนักเรียนกับตารางรายวิชานะคะ
มีนักศึกษา 2 คน มี 2 วิชา อันนี้เป็นตาราง
ทั่วไป แต่ตารางการลงทะเบียน
นักศึกษา มีปีการศึกษา แต่ไม่รู้เลย
เขาลงทะเบียนวิชาอะไร ได้ไหม ไม่ได้
สมมติว่ามีแต่รหัส
เรียนอะไรบ้าง หรือนะคะ
รู้รายวิชา รู้ปีการศึกษา
ไม่อย่างนั้นจะรู้ได้อย่างไรว่า เทอมนี้
นะคะ เพราะฉะนั้น ในตารางการลงทะเบียน
ถ้าขาดข้อมูลใดข้อมูลหนึ่งไป ตารางนั้น
แต่ไม่รู้เลยว่าใครลงทะเบียนเรียน ได้ไหม ก็ไม่ได้อีก
นตารางนี่ ก็ไปดึงข้อมูลมาจากคนอื่นทั้งนั้น อันนี้คือตารางอ่อนแอ
นะคะ ก็คือไม่มีความหมายในตัวเอง จะต้อง
มีข้อมูลจากตารางอื่นมาช่วยนั่นเอง
จะเป็นตารางที่ไม่สมบูรณ์
ก็คือพูดง่าย ๆ ก็คือคอลัมน์ในแต่ละตารางน่ะค่ะ ว่า
ในตารางนั้นมีคอลัมน์อะไรบ้าง ก็คือหัว
ของคอลัมน์นะคะ
นะคะ
นะคะ นี่แบบนี้ เพราะฉะนั้น
นะคะ
Attribute นะคะ
พนักงาน ชื่อ นามสกุล มีเพศ มีเงินเดือน
นะคะ สัญลักษณ์จะเป็นแบบนี้
นี่นะคะ ข้อมูลพนักงาน อันนี้ก็คือ
อย่างข้อมูลพนักงานต้องมีอะไรบ้าง ก็ต้องมีฐานข้อมูล
หัวตาราง คอลัมน์ คอลัมน์
คอลัมน์ ซึ่งใน Attribute นี่ก็แบ่ง
Entity ใช่ไหมคะ
นี่แหละ แต่อาจจะมีสิ่งที่เปลี่ยนกันนิดหนึ่ง
นะคะ โดย Atribute นี่ ประเภทที่ 1 คือ
ไปอีกเป็น 6 ประเภทนะค
นะคะ ช่น เพศ คุณก็ตอบได้แค่เพศเดียว
คุณเป็นเพศอะไรคุณก็ตอบตัวนั้น
เงินเดือนเดือนที่ 1 เงินเดือนเดือนที่ 2 เงินเดือนเดือนที่ 3 ไม่ใช่
เราตอบค่าเดียว เงินเดือนปัจจุบันเราเท่าไรนะคะ
เลขบัตรประชาชนตอบได้ค่าเดียว รหัสนักศึกษา
ตอบได้ค่าเดียว คุรไม่จำเป็นต้องบอกว่า
หรือเป็นข้อมูลโดยทั่วไปนะคะ ต่างจาก Attribute
ประเภทที่ 2 คือ Attribute ที่สามารถแบ่งย่อยได้
เช่น ชื่อ นามสกุล เราแยกกันกรอกได้ไหม
ตอบได้ค่าเดียว
นะคะ ต่อมาเป็น Key
Attribute นะคะ ก็เป็นค่าเอกลักษณ์
ไพด้ แบ่งเป้นชื่อ คอลัมน์ 1 นามสกุลคอลัมน์ 1 ก็ได้
นี้ จะต้องไม่ซ้ำกัน โดยลักษณะเฉพาะของ
คีย์นะคะ มันจะมีการขีดเส้นใต้
เพื่อแสดงว่ามันเป็น
จะต้องไม่ซ้ำกันในตารางนั้น ๆ
เหมือนเวลาเราเรียนวิชาใด ๆ ก็ตาม ถ้าอันไหนมีการ
ขีดเส้นใต้ มันเป็นการเน้นใช่ไหมคะ ในวิชาอื่น ๆ ใน
การวาดรูปก็เหมือนกัน วาดรูปในฐานข้อมูลก็เหมือนกัน
ค่าที่ซ้ำกันไม่ได้
กับมันนะคะ กับ
ข้อมูลนะคะ
ค่านั้นน่ะ เป็นจุดเน้นที่เราจะต้องให้ความสำคัญ
เพศ คุณจะเป็นเพศไหน คุณระบุมา อาจจะไม่มี
แค่ชายหรือหญิง ตอนนี้คุณเป็นเพศอะไร
ก็ระบุมานะคะ หรือค่าที่มีได้หลายค่า
ที่มีเพียงค่าเดียวเท่านั้น
แต่ละที่ก็จะมีรหัสพื้นที่ไม่เหมือนกัน
อย่างเช่น
ขอนแก่นก็ 043 อุดรธานีก็ 042 ใช่ไหมคะ
มันก็ต้องระบุด้วย
อย่างนี้นะคะ ถ้าค่าไหนมีได้หลายค่า
กรุงเทพฯ
ของข้อมูลที่ได้จากการคำนวณเราจะใช้วงรีที่เป็นเส้นปะ
เช่น อายุที่ได้มาจากวันเกิด
นะคะ หรือว่าวันเข้าทำงาน
อย่าลืมเป็นวงรี 2 เส้น กับค่า
อย่างนี้ก็ได้นะคะ ค่าที่ได้มาจากการคำนวณนั่นแหละ
อันนี้เป็นตัวอย่าง
จนถึงปัจจุบัน
อันไหนเป็น Attribute Attribute
คือวงรี ตัวนี้ ตัวนี้ ตัวนี้ แล้วใน
Simple Attribute แยกให้ออกนะคะ
นะคะ ก็คือชื่อตารางนั่นเองนะคะ ตัวอย่างของ Attribut e
ที่แยกย่อยไปได้ เช่น ชื่อ นามสกุล
อาจารย์ก็แยกออกมาเป็น FirstName LastName
สี่เหลี่ยมคืออะไร
บรรทัดเดียวเลยก็ได้ หรือคุณอยากจะ
ออกแบบให้มัน บ้านเลขที่บรรทัดหนึ่ง ถนนบรรทัดหนึ่ง
ตำบลบรรทัดหนึ่ง อำเภอ จังหวัด แยกออกเลยก็ได้
ที่อยู่ บางคนอาจจะกรอก
ไม่ เหมือนกัน แต่ถามว่า
เราลบอันนี้ออกได้ไหม ก็ได้นะคะ เพราะว่ามันจะได้
อย่างนี้ก็ได้นะคะ คีย์ Attribute
ค่าที่ห้ามซ้ำกัน
ไม่เปลืองเนื้อที่อย่างนี้ก็ได้ แล้วคุณก็กรอกไปเลยชื่ออันหนึ่ง
รหัสนักเรียน อันนี้มันย่อมาจาก
student id นะคะ student
ก็คือตารางนักเรียนอะไรที่ห้ามซ้ำกัน
ทำไมถึงรู้ว่าเป็น Student_ID
เพราะคำย่อแบบนี้ หรือชื่อทุกอย่าง
_id
ถามว่าอันนี้มันง่ายมันเข้าใจง่าย
นี้
ว่ามันมาจากอะไร แต่ถ้าเป็นคนที่ไม่มีความรู้พื้นฐานเลย เขาจะรู้ไหม
ถ้าเอาทุกอย่างมารวมกัน
ใน 1 ตาราง สามารถมี Attribute
หรือมีรูปแบบข้อมูลได้ทุกรูปแบบก็ได้
อะไร อันนี้เดี๋ยวอีกเรื่องหนึ่ง
Attribute ที่สามารถแบ่งย่อยได้ มีทั้ง Attribute ที่
นะคะ มีทั้งคีย์หลัก
วัน เดือน ปีเกิด เบอร์โทรศัพท์
เป็น Multi Value ก็คือมีได้หลายค่า
ได้มาจากการคำนวณ
Attribute แต่เดี๋ยวเราอาจจะยังไม่เข้าใจ
เดี๋ยววาดรูปก็น่าจะเข้าใจได้มากขึ้น
อันนี้คือตัวอย่างนะคะ ตัวอย่างของ
มันเป็นความสัมพันธ์ของตาราง 2 ตารางขึ้นไป
นะคะ โดยความสัมพันธ์นี่ อาจจะมีข้อมูล
นะคะ ต่อมา ความสัมพันธ์นะคะ
นะคะ เช่น
ตารางพนักงาน อันนี้พนักงานนะคะ
พนักงาน Work in แปลว่า
ที่ใช้ร่วมกัน
โดยความสัมพันธ์ตัวนี้นี่
จะต้องสามารถอ่านไปข้างหน้า อ่านกลับย้อนหลังก็ได้
อย่างเช่น ตัวอย่าง ก็คือพนักงานทำงานอยู่
ทำงานอยู่าในแผนกอะไร ก้คือ Dipartma=ent
ใครทำงานอยู่บ้าง มันจะต้องเข้าใจได้แบบนี้นะคะ
หรือการสั่งสินค้า
อยู่ในใบสั่งสินค้าตัวไหน
ในแผนกอะไร
ใบสั่งซื้ออะไรก็ต้องดูได้ สินค้าอย่างเช่น
power bank อาจจะอยู่ได้ภายในหลายใบสั่งซื้อ
สินค้าก็ได้ เพราะสินค้าเรามีหลายตัวนะคะ
นะคะ
ความสัมพันธ์แบบ 1 ต่อ 1
จะต้องเป็นความสัมพันธ์
ที่สมาชิกคนเดียว มีความสัมพันธ์ไปอีก
ไม่ใช่ว่าขายให้แค่คนเดียว ขายในได้หลายคนนะคะ
เช่น เจ้าของรถเป็นเจ้าของรถยนต์ได้ 1 คัน
นะคะ อันนี้สมมติ ๆ นะคะ
สมาชิกหนึ่ง
1 คัน ใช่ไหม
คน 1 คน
จะต้องมีเจ้าของคนเดียวนะ ตัวอย่าง แต่
ถ้าเปลี่ยนเป็นความสัมพันธ์แบบ 1 และมากกว่า 1 ล่ะ
ใครเคยเห็นในทะเบียนรถยนต์ ใบทะเบียนรถยนต์
ได้หลายคันใช่ไหม อยู่บ้าน
บางคนอาจจะมีรถยนต์มากกว่า 1 คัน อาจจะมีรถ
นะคะ เช่น คน 1 คน
พ่อเป้นเจ้าของรถหมดเลย ก็ได้
แต่ในบรรดารถทุกคัน จะต้องมี
เจ้าของคนเดียว
อันนี้คือสิ่งที่เราต้องคิดด้วย
เก๋ง มีรถกระบะ
ๆ จะต้องมีเจ้าของได้คนเดียว
กับความสัมพันธ์ที่
มากกว่า 1
นะคะ คน ๆ หนึ่ง มีรถได้หลายคนก็จริง แต่่รถคนนั้น
ลูกค้า 1 คน สมมติเวลาเราไปซื้อของ
เราจะต้องซื้อกับแคชเชียร์คนนี้ใช่ไหม เวลาจ่ายเงิน
แต่แคชเชียร์คนนี้ก็สามารถ
เช่นลุกค้าหลายคน
รับลูกค้าได้หลายคนเหมือนกัน
เหมือนเวลาเราไปเดินห้าง ซื้อ
ของใน Super วัน ๆ หนึ่งเขามีลูกค้า
นะคะ ไม่จำเป็นต้องจ่ายเฉพาะคนนี้เท่านั้น
มีหลายคนเหมือนกัน เพราะฉะนั้นวันนี้เราอาจจะเจอพนักงานคนหนึ่ง พรุ่งนี้
หลายคนไหม
็เจอลูกค้าหลายคน อันนี้เป็นความสัมพันธ์ที่มากกว่า 1
ภาษาอังกฤษเรียกว่า "Many-to-Many
" อันนี้เป็นตัวอย่าง
อาจจะเจอคนใหม่ก็ได้ เขาก็ไม่ได้เจอเราคนเดียว
ที่เชื่อมความสัมพันธ์จะเป็นเส้นตรง มีตัวเลข
กำกับเห็นไหมคะ จะมีตัวเลขกำกับด้วย
เพราะฉะนั้น เวลาเราลากเส้นเชื่อมความสัมพันธ์ใด ๆ ก็ตาม
นะคะ อันนี้เป็นความสำคัญแบบ 1 ต่อ 1
ตัวแทนขายสินค้าดูแลลูกค้าได้ 1 คน จริงไหม
จะต้องมีตัวเลข หรือตัวอักษรกำกับทุกครั้ง
ตัวแทน 1 คน อาจจะดูแลลูกค้าได้หลายคนก็ได้
ถ้าเป้นลูกค้าหลายคน เราจะแทนด้วยตัว M หรือตัว N
ก็ได้นะคะ M หรือ N ก็ได้
ถูกต้องหรือยัง ตัวแทน 1 คน ดูแลลูกค้าได้
แต่ต้องใส่ ถ้าว่า
หลาย ๆ คนก็ได้รับการดูแลจากตัวแทน 1 คน ก็ถูก
นะคะ แบบนี้เป็นต้น มีการ
ใส่คีย์หลัก มีการ
หลายคน ถูก
ต้องใส่ ต้องระบุนะคะ
แต่ถ้าเป็นความสัมพันธ์ที่มากกว่า 1 ทั้ง 2 ด้าน
ขีดเส้น
เราจะใส่เป็น M M แบบนี้ไม่ได้ ไม่ได้นะคะ
ไม่ได้ เป็น N กับ N แบบนี้ได้ไหม
ก็ไม่ได้ ต้องเป็น M กับ N
กันระหว่างเส้น 2 เส้นนี้นะคะ อันนี้เป็นตัวอย่าง
เดี๋ยวพอวาดง่าย ๆ ก่อน
อันนี้ ออกสอบ ง่ายมาก อาจารย์
อาจจะมีรูปภาพให้ แล้ว
ให้พวกคุณเปลี่ยนเป็นตาราง ง่ายมากเลย
น่าจะเข้าใจง่ายขึ้น
สี่เหลี่ยมมันคือชื่อตารางใช่ไหมคะ คุณก็เอา
กรอบสี่เหลี่ยมออกแล้วก็เขียนชื่อตาราง
นะคะ
เสร็จแล้ว
หรือถ้าอาจารย์ให้วาดรูป
ทำอย่างไร จากตารางข้างล่าง ชื่อตรางใช่ไหมคะ
วงรี คือ Attribute ก็เป็นคอลัมน์ของตาราง
แต่ละคอลัมน์ก็เอามาใส่ในวงรี โยงเส้น
เสร็จ แค่นั้นเอง
อันนี้ออกสอบด้วยนะ
ชื่อตาราง
อย่างนี้ แต่หลักการมีประมาณนี่ล่ะนะคะ
กับถ้าสมมติ ว่ามันมีข้อมูลที่
นะคะ
ตอนก่อนหน้านี้ ที่อาจารย์ตัดตรงนี้ออก
ใช่ไหม เวลาเราเอามาเขียนในรูปแบบ
มันสามารถแบ่งแยกออกได้นะคะ
Attribute ที่อยู่ขอบนอกสุดเท่านั้น
นะคะ เราจะเอาเฉพาะข้างนอกสุดมาเขียน
ลงเป็นตาราง
ของตาราง อันนี้เราจะไม่ใส่
นะคะ
กับถ้าตารางไหนมีข้อมูล
ที่สามารถมีได้หลายค่า เห็นไหม วงรี
อันนี้เป็น ดูดี ๆ นะ
แยกมาเป็นอีก 1 ตาราง
แต่คีย์หลักจะเอามาจากตารางเดิม
นะคะ
ซ้อนกัน 2 วง
เชื่อมโยงกัน โดยค่าคีย์หลักเชื่อมกัน อันนี้เป็นข้อสังเกต
ก่อนนะ อันนี้ยังเป็นกฎที่ต้องใช้อยู่
นะคะ
เพื่อให้เ 2 ตารางนี้ มัน
กับอันไหนที่เป็นค่า
เราต้องดูด้วย ว่ามันมีความสัมพันธ์กับตารางไหน
ของตารางที่มันมีความสัมพันธ์ด้วยมาใส่ด้วย
นะคะ
ถึงบอกว่าตารางด้านขวามือเป็นตารางอ่อนแอ
เพราะในตารางนี้
อย่างเช่น... เดี๋ยวลบอันนี้ออกก่อน ทำไม
วันที่ แต่ถามว่าเป็นของใคร
ใครล่ะมาทำงาน 7 โมง กลับ
มีเวลาทำงาน มีเวลากลับบ้าน
ทุ่ม ไม่รู้
เพราะฉะนั้น ต้องไปดูด้วยว่า
พนักงานรหัสคนไหนที่เขามา
แสกนนิ้วทำงาน หรือตอกบัตรทำงาน
โมงเย็น
รหัสพนักงานด้วยเลยล่ะ มันก็เป็นการซ้ำซ้อน
กันไงค่ะ ในเมื่อเรามีรหัสพนักงานอยู่แล้ว เราก็เรียกใช้ได้เลย
แต่ถามว่าในตารางนี้ทำไมเราไม่ให้กรอก
ถ้าอันไหนซ้ำซ้อนกันเราจะไม่ใช้ เราจะดึงข้อมูลมันมาใช้เลย
อันนี้คือข้อดีของการออกแบบฐานข้อมูล
นะคะ อันนี้คือตัวอย่างอย่างหนึ่ง
เราไม่จำเป็นต้องมาเพิ่มตรงนี้ก็ได้
ถ้าเมื่อกี้นี้ ในรูปนี้อาจารย์ไม่ได้ใส่ความสัมพันธ์ใช่ไหมคะ
ยังไม่มีเส้นเชื่อมโยงไปตารางอื่นใช่ไหม
แต่ถ้ามันมีเส้นเชื่อมโยงไปตารางอื่นล่ะ
กับการเปลี่ยนให้เป็นตาราง
เราจะต้องเอาค
ีย์หลัก ไอ้ที่ขีดเส้นใต้นี่
ของตารางด้านข้าง ที่เรามีความสัมพันธ์ด้วย มาใส่
นะคะ อันนี้เป็นความสัมพันธ์แบบ 1 ต่อ 1
ได้เปรียบอย่างหนึ่ง คือ ในตารางแรก
อาจจะเอารหัสลูกค้ามาเป็นคีย์เพื่อเชื่อมต่อกัน
ก็ได้ หรืออาจจะเอารหัสตัวแทน
ในตารางเรา
อันนี้เป็นความพิเศษเฉพาะตารางแบบ 1 ต่อ 1
แต่จะต้องเอาคีย์หลักของตารางที่เรามีความสัมพันธ์
ด้วย อาจจะเป็น เลือกมาตารางไหนก็ได้ แต่ต้องมี
นะคะ
นั่นเอง เฉพาะความสัมพันธ์แบบ 1 ต่อ 1
นะคะ แต่ถ้าเป็น
ความสัมพันธ์แบบ 1 ต่อ กลุ่ม
นะคะ ต้องมี
มาใส่ในตารางที่มีความสัมพันธ์แบบกลุ่ม
เท่านั้น
อันนี้เป็นลักษณะเฉพาะ
จะต้องเอาคีย์หลักของฝั่ง
แต่ถ้า
เป็นความสัมพันธ์แบบกลุ่มต่อกลุ่มล่ะ
เห็นไหมคะ เป็น M กับ N
นะคะ ลักษณะเฉพาะ
แต่เราจะสร้างตารางใหม่ขึ้นมา
โดยใช้คีย์หลักของทั้ง 2 ตาราง
ที่มีควาสัมพันธ์กันมาสร้างเป็นตารางใ
เราจะไม่เอาตาราง...
หม่เลย
กับ กลุ่ม ต่อ กลุ่ม การเอามาสร้างเป็นตาราง
ลักษณะเฉพาะมี 3 แบบ แบบแรก คือ เอาลักษณ
3 อย่างนี้ให้ดีนะคะ
ฝั่งที่่เป็นความสัมพันธ์ที่เป็น 1 เท่านั้น
ฝั่งไหนก็ได้
ตารางใหม่เลยนะคะ อันนี้คือ
ลักษณะเฉพาะของการเปลี่ยนรูปภาพให้เป็นตาราง
นะคะ เดี๋ยวจะมีให้ทำด้วย บางคน
จะจำไม่ได้
เราจะมาลองวาดรูปกัน
ให้... น่าจะเคยไปร้านหนังสือกัน
หรืออาจจะเคยเห็นหนังสืออยู่แล้วนะ
การออกแบบนะคะ อันนี้พูดไปแล้ว
จะมีอะไรบ้าง แน่นอนข้อมูล
หนังสือแต่ละเล่ม ก็จะมี
รหัสหนังสือนะ
นะคะ
รหัสสำนักพิมพ์ อันนี้คือข้อมูลที่อาจารย์ให้ก่อนนะ เดี๋ยวเรามาวาด
รูปกัน ในข้อมูลของคนแต่ง
มีชื่อหนังสือ
นะคะ มีชื่อผู้แต่งหนังสือ
ในข้อมูลสำนักพิมพ์ก็จะมีรหัสสำนักพิมพ์
มีชื่อสำนักพิมพ์มีที่อยู่ มีเบอร์โทรศัพท์
นะคะ
หนังสือมีอะไรบ้าง
ในระบบร้านหนังสือ ก็คือ
ข้อมูลที่อาจารย์ให้เมื่อกี้ มันจะมีข้อมูลหนังสือ
นะคะ มีข้อมูลคนแต่ง มีข้อมูล
ขั้นตอนแรก ศึกษาก่อน
พลอย โอเค ขั้นตอน
ต่อมา กำหนด
Entity เดี๋ยวจะให้ทำเอง ก็คือ
สำนักพิมพ์
มีกี่ Entity หรือกี่ตาราง ทำสิ ใช้สัญลักษณ์
ให้ถูกด้วยนะคะ เดี๋ยวอาจารย์จะเดินดู ทำเลย
ในข้อมูลที่อาจารย์ให้
ข้อมูลตัวหนังสือสีดำ ๆ นี่ ดำ ๆ เข้ม ๆ
นี่ เราควรมีกี่ตาราง
วาดรูป นี่ วาดรูป
นี่ จากข้อมูลนี้
วาดแบบนี้ ให้วาดรูป ให้เอาข้อมูลน่ะ มาวาด
เป็นรูปแบบนี้ แต่อย่างแรกเลย ดูก่อนว่า
ข้อมูลที่อาจารย์ให้นี่ มันควร
แบบนี้ จะให้วาดแบบนี้
สัญลักษณ์ของตาราง หรือ Entity
จะมีกี่ตาราง
มันควรจะมีสี่เหลี่ยมผืนผ้ากี่อัน แล้วในสี่เหลี่ยม
ผืนผ้าจะต้องเขียนว่าอะไร ลอง
ทำดู
ก็คือ สี่เหลี่ยมผืนผ้า
สรุปแล้วมีกี่ตาราง
อันนี้ยังไม่ยาก
ตัวหนังสือสีดำเข้มไว้ เราจะได้ 3
ตาราง ในกรอบสี่เหลี่ยม
มีตารางผู้แต่ง มีตารางหนังสือ มี
อันนี้ง่ายมาก
นะคะ จากโจทย์ที่อาจารย์กำหนดให้นะ
ที่อาจารย์เน้นให้ อันนี้
จะให้ทำเอง
ตารางสำนักพิมพ์
มันจะต้องกำหนดความสัมพัน
ธ์นี่ ๆ ความสัมพันธ์ ก็คือ เส้นที่โยง 3 อันนี้
เราจะโยงเส้นมันอย่างไร
หลังจาก เราได้ตารางหรือ Entity แล้วนะคะ
อย่างไร สิ่งที่มันควรจะเป็น
ก็คือหนังสือแต่ละเล่มจะถูกพิมพ์จากสำนักพิมพ์
ใดสำนักพิมพ์หนึ่งเท่านั้น
ใช่ไหม
โดยความสัมพันธ์ของแต่ละอัน มันควรจะเป็น
พิมพ์ เขาก็สามารถพิมพ์หนังสือได้หลายเล่มนะ
อันนี้คือเงื่อนไข ๆ
หนังสือแต่ละเล่ม
แต่ว่าใน 1 สำนัก
คนเดียวเท่านั้น
แต่ในโลกของความเป็นจริงนี่ หนังสือนี่ มันอาจจะมี
แต่ละเล่มกำหนดว่าจะต้องมีคนแต่ง
อาจารย์ให้ อาจารย์ให้หนังสือ 1 เล่ม มีคนแต่งแค่คนเดียวเท่านั้น
อันนี้คือโจทย์ที่อาจารย์กำหนดนะคะ แต่ว่า
ผู้แต่งหนังสือแต่ละคน
คนแต่งช่วยกันก็ได้นะ
อันนี้คือข้อกำหนดที่อาจารย์กำหนดให้นะคะ
เขาก็สามารถแต่งหนังสือได้หลายเล่มเหมือนกัน
ให้ความสัมพันธ์แต่ละอันอย่างไร
ก็คือการวาดนี่ ๆ วาดแบบนี้
แล้วเราจะ
ความสัมพันธ์มันจะเป็นแบบนี้
นี่
จากโจทย์ตัวนี้นะคะ จากโจทย์ตัวนี้
อันนี้คือความสัมพันธ์
ลองวาดดูสิ
ไอ้ 3 อันนี้ มันจะต้องสัมพันธ์กันอย่างไร
ลองวาดดู
ว่าอย่างไร ลองใส่ดู
เดี๋ยวให้เวลา 5 นาที
จะต้องออกมาเป็นแบบนี้นะค
หรือเปล่า 5 นาทีเดี๋ยวดูกัน
ลองดูสิว่า
สิ นะคะ เดี๋ยวลบอันนี้ก่อน
ให้ตัวอย่าง 1
เดี๋ยวเอาตัวอย่างให้ดูเลย ที่เหลือจะได้ลองทำดู
ผู้แต่ง 1 คน ในโจทย์ที่อาจารย์บอก
แต่งหนังสือ 1 เล่มใช่ไหมคะ แต่หนังสือ... นี่
ก็มีผู้แต่งได้แค่คนเดียว แต่เขาแต่งได้หลายเล่มใช่ไหม
อันก่อน ให้วาดแบบนี้ค่ะ
แต่งหนังสือได้หลายเล่ม แต่ถ้าเราอ่านย้อนกลับ
หนังสือหลาย ๆ เล่มนี่ มีผู้แต่ง
แค่ 1 คน
ความสัมพันธ์ ก็คือผู้แต่ง 1 คน สามารถ
ที่เหลือ ลองวาดดูสิ
ให้มันได้เหมือนของอาจารย์นี่ ที่เหลือมันควรจะเป็นอย่างไร
ลองดูสิ เริ่มให้แล้ว 1 อัน
ที่เหลือลองทำดูก่อน
หนังสือหลาย ๆ เล่ม
จะต้องถูกพิมพ์จาก 1 สำนักพิมพ์เท่านั้น
ใช่ไหม อันนี้ตามโจทย์ที่อาจารย์กำหนด
ที่เหลือ
มารวมกันในความสัมพันธ์นะคะ
มันอาจจะเขียนได้เป็นแบบนี้นะคะ
ผู้แต่ง 1 คน แต่งหนังสือได้หลายเล่ม
นะคะ
ถูกจัดพิมพ์จาก 1 สำนักพิมพ์เท่านั้น
อันนี้คือรูปความสัมพันธ์ที่เกิดขึ้น
นะคะ อันนี้ยังง่ายอยู่
อันนี้ยังง่าย อันนี้พอเราอ่าน
ถ้าเป็นคนที่ไม่มีความรู้ด้านคอมพิวเตอร์มาอ่าน
พอเห็นภาพขึ้นบ้างไหม
มันเลยจะทำให้เราเข้าใจมากขึ้น จะระเบียบ
ความคิดของเราได้ว่า สิ่งที่มันควรจะเป็นในฐานข้อมูลมันควรจะเป็นอย่างไร
นะคะ
เขาก็จะเข้าใจนะคะ
อันนี้ยิ่งง่าย พอเราได้ความสัมพันธ์ เราได้ Entity แล้ว
เราต้องมาเขียนว่าใน
ต่อมา
แล้วอะไรจะเป็นคีย์หลัก ก็คือค่า
ที่ห้ามซ้ำกันที่เราขีดเส้นน่ะค่ะ เอามา
จากตรงไหน มาจาก
แต่ละตาราง มันควรจะมีข้อมูลอะไร
ง ก็คือชื่อ Entity แล้วข้อมูลมีอะไรบ้าง
มันก็แค่เอาข้อมูลที่อาจารย์กำหนดให้นี่ค่ะ
ไปใส่ในรูปวงรี
ตรงนี้
ในแต่ละข้อมูล อะไรจะเป็นคีย์หลัก ก็คือค่า
ที่ห้ามซ้ำกัน ลองวาดดู
อาจารย์เอาให้หมดแล้ว
ใช่ไหม คือ Attribute
อันยาก ก็คือเราจะขีดข้อมูลเส้นใต้ตัวไหน
อันนี้ บอกไปแล้ว ทำเอง
3 อันนี้ จะต้องมีข้อมูลอะไรบ้าง กำหนดอยู่
กับของอาจารย์ไหม ลองทำดู
แค่เอาข้อมูลที่อาจารย์กำหนดให้ในสไลด์ก่อนหน้านี้ค่ะ
ลองดูสิ
เหมือนกันไหม
5 นาที เหมือนเดิม
มาใส่ แค่นั้นเอง
มันต้องแบบนี้ อีก 2 อันที่เหลือทำเอง
เอาตัวอย่างให้ดูก่อน
ได้ตารางหนังสือแล้ว
เดี่ยววันนี้ไม่เสร็จ ให้ 1 ตัวอย่างก่อน
อีกสิ อีก 2 อันที่เหลือให้รูปมันออกมาเป็นแบบนี้ ต้องทำอย่างไร
ยกตัวอย่างให้ก่อน
เดี๋ยวไม่เข้าใจ
เหลือตารางสำนักพิมพ์กับตารางผู้แต่ง
ก็คือเราขีดเส้นใต้ รหัสหนังสือน่ะ
ห้ามซ้ำกัน อีก 2 อันที่เหลือ
เห็นไหมว่าอาจารย์กำหนดคีย์ด้วย
ด้วย ทำไมต้องมี
ต้องมีเพราะว่าเราจะได้รู้ว่าหนังสือเล่มนี้
สำนักพิมพ์ไหนเอามาขาย
อันไหนต้องห้ามซ้ำกัน
คือคีย์นอก
ซึ่งเอาไว้เชื่อมโยงไปดู ว่าสำนักพิมพ์
ใช่ไหม
จำเป็นต้องเอาข้อมูลมาทั้งหมด เอามาแค่รหัสก็พอ ในการเชื่อมโยงกัน
2 ตารางนะ ลองวาด
ดูสิ อีก 2 อันที่เหลือ ในผู้แต่ง
ชื่ออะไร อยู่ที่ไหน เบอร์โทรศัพท์เบอร์อะไร
ต้องมีอะไร ในสำนักพิมพ์ต้องมีอะไร
เหมือนกันหรือเปล่า อันนี้ง่ายมากเลย
ก็เอาข้อมูลที่อาจารย์ให้มาวาดแค่นั้นเอง
ใช่ไหม
สำนักพิมพ์
ผู้แต่งได้หรือยัง
เพราะอาจารย์ให้ข้อมูลไปหมดแล้ว
พอเราวาดเสร็จ
ได้องค์ประกอบทุกอย่าง
ก็เป็นแบบนี้
มันเลยเป็นแบบนี้ใช่ไหม
จากข้อมูลที่อาจารย์ให้ทั้งหมด พอมาวาดรูป
เหมือนกันเลย แค่เอาข้อมูล
รูปที่สมบูรณ์
เราก็เอามาวาดเป็นรูป
แล้วมันจะได้เช็กได้ ว่าเราขาดข้อมูลตรงไหนหรือเปล่า
นะคะ ข้อมูลมันยังสามารถเติมตรงไหน
ที่ได้น่ะค่ะ จากตัวหนังสือ
ไหม ในตัวของ... สมมติว่าเขามาจ้างให้เราออกแบบ
ข้อมูลเข้าใจตรงกันหรือเปล่านะคะ
หรือเขาอยากให้เอาข้อมูลอะไรเข้ามาอีก
ได้อีก
การออกแบบฐานข้อมูลจริง ๆ ที่
ใช้กันในชีวิตประจำวัน ถามว่าแค่นี้พอไหม ไม่พอ
นะคะ อันนี้เป็นแค่ตัวอย่างที่อยากให้คุณทำ
ฐานข้อมูลจริง ๆ มันจะเป็นอย่างไร
ร้านหนังสือร้านหนึ่งมันไม่ได้มีแค่เท่าเมื่อกี้
นี้ เมื่อกี้มันน้อยมาก
แต่ถ้าเราทำงานจริง ๆ ข้อมูลมันจะ
มันจะเป็นแบบนี้เลย เห้นไหมคะว่า
เพราะฉะนั้น วันนี้มี
สิ่งที่ให้นักศึกษาไปทำ อาจารย์
กำหนดข้อมูลให้แล้วด้วย
เยอะขนาดนี้เลยนะคะ ข้อมูลจะเยอะขนาดนี้เลย
อาจารย์ยกตัวอย่าง แต่คราวนี้จะเป็นการขายคอมพิวเตอร์ แต่ข้อกำหนด
นะคะ โดยข้อกำหนด คือ
ให้วาดรูปเหมือนเมื่อกี้นี้ค่ะ
สามารถซื้อสินค้าได้หลายชิ้น
นะคะ แล้วก็ 1 ใบเสร็จรับเงิน
ก็มีสินค้าได้หลายชิ้นเหมือนกัน มีชิ้นเดียวได้ไหม
ลูกค้ามีได้หลายคน
นะคะ ในแต่ละใบเสร็จ
จะต้องมีแคชเชียร์หรือพนังานขายแค่คนเดียวเท่านั้น
ได้
ซื้อของในห้าง คนคิดเงินให้เราก็มีคนเดียวใช่ไหม
แล้วก็ต้องมีการแยกประเภทสินค้าด้วย
อันนี้คือเรื่องทั่วไปเลยนะคะ
มันก็จะแยกกัน เครื่องครัวอยู่ทีหนึ่ง ของกิน
นะคะ เช่น
อันนี้คือการแยก คอมพิวเตอร์ก็เหมือนกันนะคะ
โดยที่อาจารย์กำหนดให้แล้ว
นะคะ
อยู่ที่หนึ่ง ใช่ไหม
มี 5 ตารางนะคะ 5 ตาราง
ก็จะเป็นตารางลูกค้า ตารางพนักงาน
ขาย ตารางรายละเอียดของสินค้า
ว่ามันควรจะมีตารางอะไรบ้าง
อาจารย์กำหนดให้แล้วนะคะ
ว่าควรจะมีข้อมูลอะไรบ้าง
ให้เราไปวาดรูปมา
ตารางประเภทสินค้า ตารางใบเสร็จ
เมื้อกี้นี้นะคะ ลองวาดดูสิ ว่ารูปที่ได้จะเป็นอย่างไร
นะ อันนี้เป็นการบ้าน
ทำเอง
แล้ว ถ้าใครจะนั่งวาดรูปต่อก็ได้ แต่ต้
องส่งนะคะ ต้องส่ง วันนี้ก็
ประมาณนี้ มาครบทุกคน เดี๋ยว
สำหรับวันนี้ไม่มีอะไร
วาดรูปไม่เคยปวดหัวเท่านี้มาก่อนเลย วันนี้ลองดู
ที่แน่ ๆ มีกี่ตารางนี่ 5 ตาราง ไปวาดมาสิ
ให้ไปปวดหัววาดรูปต่อนะ
ลองกำหนดเองสิว่ามันต้องมี
ว่าในตารางมันควรมีอะไรบ้าง
นแหละ วาดมา ใส่ความสัมพันธ์ให้ครบด้วย อันไหนเป็นค่าที่ห้ามซ้ำกันอย่าลืม
ขีดเส้นให้อาจารย์ด้วยนะคะ วันนี้ก็
อะไร แล้วทำส่งอาจารย์
ถอดความด้วยนะคะ โอเคค่ะ
เจอกันสัปดาห์หน้าค่ะ
ประมาณนี้ค่ะ ขอบคุณมากค่ะ ขอบคุณล่ามด้วย ขอบคุณ