(อาจารย์เกวลี) โอเค สวัสดีค่ะ
โอเคค่ะ วันนี้
จะเป็นบทที่ 4 นะคะ
จะเป็นเกี่ยวกับ
แบบจำลองข้อมูล
หรือเวลาเราเรียกสั้น ๆ
ก็คือการวาดรูป ER นะคะ ตัว E แล้วก็ตัว R เป็น
ภาษาอังกฤษ
โดยแผนภาพนะคะ ER
นะคะ หรือว่า ER Model นี่ มันจะเป็น
... ล่ามเขาได้ยินเราไหมพลอย
ทำไม ล่ามดูนิ่ง ๆ
ล่ามได้ยินไหมคะ
ล่ามได้ยินไหมคะ ถ้าได้ยิน
โอเคด้วยค่ะ โอเค โอเค
ก็การวาด ER นะคะ หรือเป็นแบบจำลองข้อมูล
นะคะ มันจะเป็นแบบจำลองที่ใช้อธิบาย
โครงสร้างของฐานข้อมูล โดยที่เราจะแสดงออกมาเป็นรูปภาพ
นะคะ โดยที่โครงสร้างสำคัญที่
จะต้องใช้ในการวาดรูปของเรานะคะ ก็คือ Entity
หรือว่าตาราง กับความสัมพันธ์ ก็คือแต่ละ
เส้นที่เชื่อมโยงในแต่ละตาราง เราจะต้องโยง
กันให้ถูกนะคะ อย่างเช่นตารางของอาจารย์กับนักศ
ึกษา เราต้องมีความสัมพันธ์กัน ในฐานะการเรียนการสอน
แบบนี้นะคะ
การวาดรูปจะเป็นเหมือนรูปที่อาจารย์ยกตัวอย่างให้ดู
บนจอนะคะ การ
ที่เราจะวาดรูปได้เราต้องรู้ด้วยว่าสัญลักษณ์แต่ละอันห
มายความว่าอย่างไร ทำไมเราต้องใช้วงรี ทำไมเราต้องใช้สี่เหลี่ยม
ผืนผ้า ทำไมเราต้องลากเส้นตรงนะคะ
แต่ละอันมีความหมายหมดเลย แล้ววันนี้ก็จะ
พอบรรยายเสร็จ จะให้วาดเองด้วย
นะคะ
จุดเด่นของแผนภาพ ER
นะคะ มันจะทำให้เราออกแบบฐานข้อมูลได้เร็วขึ้น เพราะว่ามันเหมือนเป็น
การจัดระเบียบความคิดของผู้ที่ต้องการออกแบบ
คล้าย ๆ กับเราสมัยมัธยมน่าจะเคยวาด Mind Map
นะคะ การวาด ER ก็เหมือนกันนะคะ
มันจะได้รู้ว่าเราต้องการจะออกแบบอะไร อะไร
ควรมีความสัมพันธ์กัน หรืออะไรที่ขาดหายไปนะคะ
เราจะได้เห็น รวมถึงลดความ
ซ้ำซ้อนของข้อมูลออกไปด้วย เช่น ในตารางนี้
ข้อมูลนี้อยู่แล้ว ก็ไม่จำเป็นต้องใส่เพิ่มในตารางอื่นก็ได้
นะคะ หรือว่าพอเราวาดเสร็จออกมา ทำไมมี
ตารางที่คล้าย ๆ กัน 2 อัน มันลบออกได้ไหม
นะคะ การวาดรูปก็จะทำให้เราเห็นภาพได้ง่ายขึ้น
โดยคุณลักษณะของการวาดแผนภาพ ER
นะคะ ก็คือแน่นอน มันแสดงผลออกมาเป็น
ภาพนะคะ โมเดลข้อมูลหรือรูปแบบข้อมูล
แบบไหนก็ตามนี่ มันจะมีภาษา หรือรูปภาพที่เป็นกราฟิก
โดยเฉพาะนะคะ อาจจะมีทั้งภาพขนาด
ใหญ่ ภาพขนาดย่อย มันจะทำให้เรา
อ่านข้อมูล หรืออ่านฐานข้อมูลนั้นได้ง่าย เพราะเราใช้วง
เราใช้สี่เหลี่ยม เราใช้วงรีนะคะ เราใช้เส้นตรง เราใช้
เส้นโค้ง เส้นประ ทุกอย่างมีความหมาย
หมดนะคะ มันก็แสดงให้เห็นถึงความชัดเจนของ
ข้อมูลด้วย โดยทีเราอาจจะใช้สัญลักษณ์ที่
ต่างกันเล็กน้อยนะคะ ซึ่งตัวรูปแบบของการวาด
นี่ มันก็จะมีหลาย หลายรูปแบบ หนังสือ
แต่ละเล่ม บางเล่มก็ไม่เหมือนกัน บางคนใช้รูปแบบของคนนี้
หรือหนังสืออีกเล่มหนึ่งอาจจะใช้รูปแบบที่ต่างออกไป
วาดรูป แต่เดี๋ยวตอนถึงเวลาวาดรูปเราต้องตกลงกัน
ก่อนว่า เราจะเลือกรูปแบบไหนนะคะ
ข้อสำคัญ คือ แผนภาพที่ได้มานี่ มันควร
ที่จะอ่านง่าย ๆ ไม่ซับซ้อน เส้น
ไม่ลากตัดกันไปตัดกันมา ฉันเพิ่งคิดได้ฉันเลยอยากวาดตรงนี้
ไม่ได้นะคะ เราต้องคิดก่อน ว่าเราจะวาดเส้นตรง
จากกระดาษฝั่งหนึ่งไปอีกฝั่งหนึ่งนี่
เราต้องมาจัดระเบียบความคิดตัวเองด้วยว่า ในตารางนี่
มันมีตารางอะไรบ้าง แล้วแต่ละตารางนี่มัน
ควรจะเชื่อมกันอย่างไรนะคะ
โดยในแผนภาพ
ที่เราวาดนะคะ รายละเอียดต้องอยู่ในระดับที่เหมาะสม
อาจจะไม่ได้ละเอียดยิบขนาดนั้น ไม่ได้ละเอียด
แบบเป๊ะ ๆ ๆ แต่ว่าเราต้องมองภาพให้ออก หรือ
อาจจะมีการเปลี่ยนแปลงแก้ไข มันจะต้องยืดหยุ่น
นะคะ รวมถึงรายละเอียดต้องเพียงพอ ไม่ใช่ว่าน้อยไป บางอันก็
เยอะไปนะคะ เอาที่พอดี โดย
แต่ละอันนี่ อย่างที่บอกเราจะต้องมีการเชื่อมโยงความสัมพันธ์ของ
แต่ละตารางด้วยนะคะ แล้วก็
การวาดรูปของเรา เราจะไม่ตายตัวเลยว่า
เราวาดเพื่อไปใช้กับโปรแกรมอะไรนะคะ
รูปที่เราวาดจะต้องเอาไปใช้ได้กับทุกโปรแกรม หรือทุก
รูปแบบของการเขียนฐานข้อมูลนะคะ แล้วก็เวลาใคร
มาอ่าน จะต้องเข้าใจง่าย ถึงแม้ว่าเขาจะ
ไม่ได้เรียนทางด้านคอมพิวเตอร์มาก่อน แต่พอ
ดูรูปภาพ อย่างน้อยเขาก็จะเข้าใจว่าเราจะสื่ออะไร
ในฐานข้อมูลเรามีอะไรบ้างนะคะ เขาอาจะไม่รู้หรอกว่า
วงรีมันหมายความว่าอะไร หรือสี่เหลี่ยมหมายความว่าอย่างไร
ทำไมต้องเป็นเส้นปะ ทำไมต้องมีเส้นโค้งด้วย เขาไม่ต้องเข้าใจตรงนั้น
แต่เขาดูแล้วเขาก็พอเข้าใจว่าเราต้องการจะสื่อ
นำเสนออะไร สื่ออะไร ในฐานข้
อมูล ฃอันนี้ก็คือไม่ว่าจะเป็นใครต้องอ่านรูปที่เราวาดเข้าใจ
ระดับหนึ่งก็ยังดีนะคะ
ขั้นตอนในการออกแบบแผนภาพ 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 กับ Secondary Key
นะคะ หลังจากที่เราได้ตารางต่าง ๆ แล้วนะคะ ขั้นตอนต่อไป
ก็คือในตารางเราจะต้องเก็บข้อมูล หรือ Attribute
อะไรบ้าง เช่น ตารางนักศึกษา
ต้องเก็บข้อมูลอะไรบ้างเกี่ยวกับนักศึกษา
ถ้าพอจำได้ ก็คือตอนเราเข้ามาเรียน เรากรอกข้อมูล
เยอะมาก ตั้งแต่ใบสมัครเลยนะคะ
อันนั้นคือ Attribute
ที่มหาวิทยาลัยต้องการ ชื่ออะไร
นามสกุลอะไร บัตรประชาชนเลขอะไร เกิดวันที่เท่าไร อายุเท่าไร
บ้านอยู่ไหน พ่อแม่ชื่ออะไร จบจากโรงเรียนอะไร เกรดเฉลี่ยเท่าไร
ปัจจุบันที่ไหน ใครเป็นคนส่งเรียน
ได้เงินเดือนเดือนละเท่าไรนะคะ
ใครเป็นผู้ปกครอง เบอร์ผู้ปกครองเบอร์อะไร
บางคนผู้ปกครองไม่ใช่พ่อหรือแม่ อาจจะเป็นคุณตา
คุณยายนะคะ ที่อยู่ปัจจุบัน
อยู่ไหน แล้วมาเรียนราชภัฏฯ พักที่ไหน
กรอกให้หมด เกรดเฉลี่ยตั้งแต่ ม.4 ม.5 ม.6 เป็นอย่างไร
อันนี้คือสิ่งที่มหาวิทยาลัยต้องการรู้เกี่ยวกับพวกคุณ
ซึ่งก็คือ Attribute นั่นเองนะคะ
โดยหัวของแต่ละคอลัมน์ หรือ Attribute
นี่ ควรกำหนดเป็นคำสั้น ๆ ง่าย ๆ อาจจะเป็นตัวย่อก็ได้
แต่ต้องสื่อความหมายนะคะ แล้วก็
หลีกเลี่ยงการตั้งชื่อเหมือนกัน
นะคะ
อาจจะเป็นชื่อ... ชื่อนี่
บางคนไม่เข้าใจ สรุปใส่ชื่อเล่นหรือชื่อจริง เพราะฉะนั้น
ต้องกำหนดไว้เลยว่าคุณต้องการอะไร ชื่อจริงก็ชื่อจริง
ชื่อเล่นก็ใส่ชื่อเล่น ไม่ใช่คำว่า "ชื่อ"
เฉย ๆ แล้วเขาจะรู้ไหมว่าต้องใส่อะไร เขาอาจจะ
ใส่ชื่อเล่นก็ได้นะคะ
กำหนดคีย์ภายนอก หรือว่า Foreign Key
เป็นคีย์ที่เอาไว้เชื่อมโยงแต่ละตารางเข้าไว้ด้วยกัน
นะคะ อย่างเช่น นักศึกษากับอาจารย์นี่
จะเชื่อมโยงกันได้อย่างไร เชื่อมโยงโดยรหัสวิชา
เช่น รหัสวิชานี้ใครเรียนบ้าง ใคร
สอนบ้าง แค่กรอกรหัสเข้าไปก็รู้ได้เลย
อันนี้คือการเชื่อมโยงกันของอาจารย์กับนักศึกษาในวิชานั้น ๆ
นะคะ โดยที่คีย์นอกหรือ Foreign Key นี่ มันอาจจะ
เป็นคีย์หลักของตารางอื่นก็ได้
นะคะ
เดี๋ยวพอวาดรูปก็จะเข้าใจมากขึ้น
อันนี้ตอนพูดนี่อาจจะไม่ค่อยเข้าใจเท่าไร ว่า เอ๊ะ ทำไมมันถึงเชื่อมโยงกันได้นะคะ
ขั้นที่ 5
พิจารณาขอบเขตค่าแต่ละค่า
ที่อยู่ในแต่ละข้อมูลที่เราต้องการ
นะคะ ก็คือขอบเขตของข้อมูลนั่นล
่ะ เช่น ชนิดของข้อมูล เราจะกำหนดเป็นอะไร
วันเกิดควรกำหนดเป็นอะไร
เงินเดือน มันควรเป็นจำนวนเต็มไหม คุณต้องการทศนิย
ศหรือเปล่านะคะ อย่างชื่อก็ควรกำหนด
เป็นรับข้อมูลเฉพาะตัวอักษรเท่านั้น กรอกเป็นตัวเลขไม่ได้
อันนี้คือสิ่งที่เราต้องกำหนดตั้งแต่
ตอนที่ออกแบบฐานข้อมูลเลยนะคะ ความยาว
เลขบัตรประชาชนก็ 13 หลัก
นะคะ เบอร์โทรศัพท์ก็ 10 หลัก
อะไรแบบนี้ นามสกุลไม่ควรเกิน 35 ตัว
อักษร เงินเดือนก็
เอาสักไม่เกิน 7 หลัก ประมาณนี้นะคะ
รูปแบบข้อมูล บางประเทศมันไม่เหมือนประเทศเรา
เขาจะเอาเดือนขึ้นก่อน ตามด้วย
วัน ตามด้วยปี คุณก็สามารถกไหนดได้เหมือนกัน
แบบของเราเพื่อดูง่าย ๆ ก็เป็น วัน เดือน ปี ตามกัน
อย่างนี้ก็ได้นะคะ กับค่าที่อนุญาต
โดยเฉพาะ เช่น ทุกวันที่ 1
กับ 16 ของเดือนเป็นวันหยุด
คุณก็สามารถตั้งได้ว่าในฐานข้อมูล คือ
สมมติลูกค้าต้องการจะจองคิวทำอะไรก็ตาม
ถ้าเป็นวันที่ 1 กับวันที่ 16 จะไม่อนุญาตให้จอง
แบบนี้ก็ได้นะคะ
อันนี้ก็ต้องตั้งแต่เราออกแบบเลย ว่าข้อตกลงของเรา
ควรจะเป็นอย่างไรนะคะ
อันนี้ก็อธิบายไปแล้วนะ กับอีกอัน 1 สำคัญ
ความเป็นหนึ่งเดียว ก็คือ
อย่างเช่น รหัสนักศึกษาต้องกำหนดเลยว่าห้ามเป็น
ค่าที่ซ้ำ ซ้ำกันไม่ได้
เราอาจจะกรอกเลขผิดไปตัวหนึ่ง ระบบต้องแจ้ง
ว่าคุณเลขนี้ใช้ไม่ได้มันซ้ำไปแล้ว
กับการเป็นค่า
Null ค่า Null ในที่นี้คือ คุณไม่กรอกข้อมูลได้ไหม
บางระบบจะบอกว่าไม่ได้ ถ้าใครเคยกรอก
จะเห็นว่าบางช่องของการกรอกข้อมูลเขาจะมี
ดอกจันสีแดงกำหนดไว้อยู่
เป็นข้อมูลที่เขาต้องการ คุณจะเว้นว่างไม่ได้
นะคะ หรือถ้าต้องการจะเว้นว่าง
หรือไม่ตอบ เขาจะเรียกอีกอย่างหนึ่งว่า "ค่า Default
" หรือ "ค่าปริยาย" ถ้าไม่ตอบว่าเงินเดือนเป็นเท่าไร
ค่าเริ่มต้นคือ 0 แต่เป็นค่าว่างไม่ได้
ไม่ตอบไม่ได้ เพราะฉะนั้น เราใส่ไปเลย 0 บาท
แบบนี้ก็ได้ แต่ส่วนมากทุกคนก็ต้องกรอกอยู่แล้วนะคะ
ขั้นตอนสุดท้าย
ก็มาวิเคราะห์ดูว่าแผนภาพที่เราออกแบบนี่
มันสามารถปรับปรุงแก้ไข หรือว่าขยาย
ตัวในอนาคตได้หรือเปล่า เพราะว่าการออกแบบที่ดีนี่
ต้องคำนึงถึงการเปลี่ยนแปลงด้วย
ไม่ใช่ว่าตายตัวไปตลอด เกิดสมมติว่าวันนี้คุณอาจ
เปิดร้าน ลูกค้าอาจจะไม่ถึง 100 คน แต่ใครจะรู้
ในอนาคตคุณอาจจะเป็นธุรกิจที่มันเติบโตมีสาขา
ไปอีกเป็นร้อยสาขา มีลูกค้าอีกเป็นหมื่นคน
แต่ฐานข้อมูลคุณ fix ไว้ว่า อย่างรหัส
ลูกค้าแค่ 1-100 มันเป็นไปไม่ได้ค่ะ
นะคะ ต้องวิเคราะห์ด้วยว่ารหัส
ลูกค้านี่ มันจะต้องเป็นการเพิ่มขึ้น
อย่างอัตโนมัติไปได้เรื่อย ๆ หรือเปล่า
หรือคุรจะเป็นคนกรอกเองนะคะ
อันนี้ก็ต้องคิดด้วย ไม่ใช่ว่าระบบฉันใช้แค่
10 คนนี่ล่ะ บางที่ในอนาคตมันอาจจะไม่ใช่อย่างนั้นนะคะ
โดยการสร้างแบบจำลองข้อมูล หรือการวาดแผนภาพ
นี่ มันจะต้องวิเคราะห์ของข้อมู
ลที่ต้องเก็บในระบบนะคะ อาจจะเกี่ยวกับ
ข้อมูลที่เราจำเป็นต้องเรียกใช้ โครงสร้างที่
มี รวมถึงมีการเพิ่ม ลบ แก้ไขข้อมูล
จะต้องทำที่ตารางไหน ถ้าสมมติว่า
ข้อมูลในตารางนั้นถูกลบไป มันจะไปกระทบกับข้อมูลในตาราง
อื่นหรือเปล่านะคะ เช่น วันดี
คืนดีอาจารย์ลบชื่อสาขาที่คุณเรียนออก
มันจะกระทบกับพวกคุณไหม เป็นนักศึกษา
ไม่มีสังกัด ทำได้ไหม ไม่ได้
นะคะ ก็ต้องดูด้วย เขาเรียกว่ากฎ
การคงสภาพของข้อมูล อยู่ดี ๆ อยากลบ
ไม่ได้ เหมือนอยากเปลี่ยนเลขบัตรประชาชน
บัตรประชาชนให้เดชมงคลได้ไหม ไม่ได้
เลขมันไม่สวย อยากได้เลข 9 ลงท้ายอะไรอย่างนี้ เปลี่ยนไม่ได้
นะคะ แต่ชื่อเปลี่ยนได้ไหม เปลี่ยนได้ แต่
บางอย่างมันเปลี่ยนไม่ได้นะคะ เช่น
เลขบัตรประชาชนอย่างนี้ เราต้องวิเคราะห์ด้วย ไม่ใช่ว่า
ออกแบบไปแล้วใครอยากเปลี่ยนเลขบัตรประชาชนตอนไหนก็ได้
แบบนี้เป็นต้น
โดยการเขียนแผนภาพ ER นี่ มันก็จะอธิบาย
ภาพรวมทั้งหมดนะคะ อย่างที่บอกตอนต้น ก็คือ
มันต้องเข้าใจง่ายนะคะ อาจจะไม่ต้องรู้
ว่าข้อมูลที่เรากำลังจะเก็บนี่ เก็บที่ไหน เก็บอย่างไร
ไม่จำเป็น แค่วาดออกมาให้ดูก่อนว่าในฐานข้อมูลเราต้องม
ีอะไรบ้างนะคะ ในแต่ละตารางมีความสัมพันธ์กัน
อย่างไร ข้อมูลมันจะซ้ำซ้อนกันไหม
นะคะแล้วก็เขียนออกมา
ให้ออกมาดูง่ายที่สุด อย่างที่อาจารย์บอกตคอนแรก แผนภาพ
การวาดรูปนี่มันมีหลาย...
เขาเรียกว่าอะไรล่ะ หลายมาตรฐานก็แล้วกัน
แต่ละเล่มก็เลือกมาใช้ไม่เหมือนกัน
นะคะ มีทั้งแบบ Chian Mode
l แบบ Craw foot
ความสัมพันธ์นี่จะคล้าย ๆ กับรอยเท้าของนก
รอยเท้าอีกา เขาก็เรียกเป็นรูปแบบ
รูปแบบหนึ่งนะคะ แต่ที่เราจะใช้กันบ่อย ๆ
นะคะ จะเป็นแบบของเชนโมเดล ตัวช่องสีเหลือง
เราจะเลือกตัวใช้แบบนี้ เพราะว่ามันเขียนง่าย
มันอ่านง่ายที่สุดนะคะ
แต่ถ้าคุณไปเจอหนังสือเล่มอื่น
เขาใช้แบบอื่น ผิดไหม ไม่ผิด อยู่ที่เขาจะเลือกใช้แบบไหนแค่นั้นเองนะคะ
สัญลักษณ์
ที่ต้องใช้ในการวาดรูปนะคะ สัญลักษณ์
สี่เหลี่ยมผืนผ้ามันจะหมายถึงชื่อตาราง
นะคะ แบบสี่เหลี่ยมข้าวหลามตัด
มันจะบอกถึงความสัมพันธ์ของตาราง
แต่ละตารางนะคะ แล้วคอลัมน์ใน
แต่ละตารางล่ะนะคะ เราก็จะใส่เป็นรูปวงรี
ถ้า
คอลัมน์นั้น ๆ เป็นคีย์หลักที่ห้ามซ้ำ
กัน ในรูปวงรีจะต้องขีดเส้นใต้ด้วย
ส่วนด้านข้าง
อันนี้จะไม่ค่อยพบเห็นบ่อย แต่จะเจอในข้อสอบ
แน่ ๆ นะคะ อันแรกเป็นสี่เหลี่ยมผืนผ้า
ซ้อนกัน 2 อัน มันหมายถึงตารางนั้นน่ะ
เป็นตารางอ่อนแอ หรือ Weak Entity จะต้องพึ่งพิงค่าตารางอื่น
เพื่อให้ตารางของมันมีความหมายนะคะ
กับ
ต่อมา สี่เหลี่ยมข้าวหลามตัดซ้อนกัน 2 อัน ก็เช่นกันค่ะ
เขาจะเรียกว่า "ความสัมพันธ์แบบอ่อนแอ" มันจะต้องไปดึงค่า
หรือความสัมพันธ์อื่น ๆ มาทำให้ตัวมันมีความหมาย
ขึ้นมานะคะ
วงรีซ้อนกัน 2 วง ก็คือในตารางนี้น่ะ
ไอ้ในคอลัมน์นี้ หรือในข้อมูลนั้น ๆ นี่ มันอาจจะ
มีข้อมูลได้มากกว่า 1 ข้อมูล เช่น คุณอาจจะมีเบอร์โทรศัพท์
3 เบอร์
หรือว่ามีชื่อเล่น
พ่อเรียกชื่อหนึ่ง แม่เรียกชื่อหนึ่งก็บอกได้
มีสัตว์เลี้ยงมากกว่า 2 ตัว แต่ละตัวมีชื่อว่าอะไร
บ้าง อย่างนี้ก็ได้นะคะ กับ
วงรีที่เป็นเส้นประ มันหมายถึงว่า ค่าข้อมูล
ในนี้นี่ จะได้มาจากการคำนวณของข้อมูล
อื่น ๆ ที่พบบ่อยที่สุด ก็คือ
อายุ
ไอ้เส้นวงรีประ ๆ พวกนี้
เหมือนก็คือจะบอกว่าอายุของเราได้มาจากการกรอกวัน เดือน ปีเกิด นั่นเอง
นะคะ ให้มันคำนวณให้
ยุเท่าไร ให้ระบบคำนวณให้เลย อายุ 18 ปี 11 เดือน
10 วัน อะไรก็ว่าไปนะคะ
อัตโนมัติ
นะคะ
อันนี้จะอธิบายโดยละเอียด Entity หรือว่าชื่อของตาราง
อันนี้คือสัญลักษณ์ที่เราใช้บ่อย
แต่ละรายการที่ระบบจัดการฐานข้อมูล หรือเรากำลัง
จะสร้างระบบขึ้นมานะคะ เช่น
นะคะ
ชื่อตารางหรือชื่อ Entity อยู่ข้างในนะคะ เรา
จะต้องวาดแบบนี้ทุกครั้ง
สัญลักษณ์นะคะ Entity จะเป็นสี่เหลี่ยมผืนผ้า
เช่น ตารางบุคคล บุคคลคืออะไรบ้าง
นะคะ
บุคลากร ตารางนักศึกษา ตารางลูกค้า อาจจะเป็นข้อมูลเกี่ยวกับ
นะคะ ตารางที่เกี่ยวกับวัตถุ อาจจะเป็น
รถยนต์ อาคาร เครื่องจักร สินค้าก็ได้
สถานที่
นะคะ หรืออาจจะเป็นเหตุการณ์ต่าง ๆ ที่เกิดขึ้น
สัญลักษณ์อย่างที่บอก เป็นสี่เหลี่ยมผืนผ้า มีชื่อตาราง หรือ Entity
อยู่ข้างในนะคะ
ประเภทของ Entity ก็มีอยู่ 2 ประเภท
การรักษาโรค
นะคะ เป็น regular
ก็คือเป็นตารางที่ข้อมูลในนั้นสามารถแยกข้อมูลแต่ละแถว
นะคะ
อ่อนแอ มันจำเป็นจะต้องใช้ข้อมูลอื่น
มาช่วยทำให้ข้อมูลในแถวนั้น ๆ มีคุณค่าหรือมีความหมายขึ้นมา
ออกได้นะคะ
Entity ทั่วไป หรือตาราง
ทั่วไปนะคะ จะสังเกตได้ว่า
นะคะ
ก็คือตาราง
อย่างข้างบนนี่
ที่เราจะเอามาวาดแผนภาพ มันไม่ใช่กรอบสี่เหลี่ยมนี้นะคะ
เราจะเอามาแต่ชื่อ
เช่น ตาราง Student ก็คือ Entity Student
ตารางหนึ่ง
แค่นี้ค่ะ เอาสี่เหลี่ยมข้างล่างมาวาด แล้วก็บอกด้วยว่า
ชื่อตารางอะไรนะคะ
อันนี้เป็นตัวอย่างของ Entity
การลงเวลาทำงาน เวลาออกจากงาน
ตารางอ่อนแอ
ตารางนี้นะคะ Time stamp ก็คือลง
เวลา ตรางนี้จะไม่มีความหมายเลย ถ้าขาด
ข้อมูลที่เข้าทำงาน แล้วก็เวลากลับบ้าน
ถ้าขาดอันใดอันหนึ่งไป
ตารางนี้จะไม่มีความหมายเลย
เพราะฉะนั้น 2 ตัวนี้จะต้องเชื่อมโยงกัน อยู่แล้ว
อย่างนี้ไม่ได้นะคะ
ก็คือมาทำงาน ก็ต้องมีเวลากลับบ้าน
ก็คือมีแต่เวลามาทำงาน แล้วกลับบ้านตอนไหน
ไม่อย่างนั้นจะรู้ได้อย่างไรว่าคุณมาทำงานกี่โมงนะคะ อันนี้เป็นตัวอย่าง
ของตารางที่ถ้าขาด
ข้อมูลใดข้อมูลหนึ่งไปจะทำให้ข้อมูลในตารางนั้น
หรือมีแต่เวลากลับบ้าน ไม่มีเวลาทำงาน
อย่างเช่น อันนี้เป็นตัวอย่าง
ถ้าเป็นตารางทั่วไป
ๆ นี่ ไม่สมบูรณ์
มีนักศึกษา 2 คน มี 2 วิชา อันนี้เป็นตาราง
ทั่วไป แต่ตารางการลงทะเบียน
สมมติว่ามีแต่รหัส
ตารางนักเรียน กับตารางรายวิชานะคะ
ว่าเขาลงทะเบียนวิชาอะไร ได้ไหม ไม่ได้
ไม่อย่างนั้นจะรู้ได้อย่างไรว่าเทอมนี้
นักศึกษา มีปีการศึกษา
รู้รายวิชา รู้ปีการศึกษา
แต่ไม่รู้เลยว่าใครลงทะเบียนเรียน ได้ไหม ก็ไม่ได้อีก
นะคะ เพราะฉะนั้น ในตารางการลงทะเบียน
หรือนะคะ
ถ้าขาดข้อมูลใดข้อมูลหนึ่งไปตารางนั้น
ก็ไปดึงข้อมูลมาจากคนอื่นทั้งนั้น อันนี้คือตารางอ่อนแอ
นะคะ ก็คือไม่มีความหมายในตัวเอง จะต้อง
มีข้อมูลจากตารางอื่นมาช่วยนั่นเอง
จะเป็นตารางที่ไม่สมบูรณ์
ก็คือพูดง่าย ๆ ก็คือคอลัมน์ในแต่ละตารางนั่นล่ะค่ะ ว่า
ในตารางนั้นมีคอลัมน์อะไรบ้าง ก็คือหัว
ของคอลัมน์นะคะ
นะคะ
นะคะ นี่แบบนี้ เพราะฉะนั้น
Attrib นะคะ สัญลักของ Attrib เป้นง
นะคะ
พนักงาน ชื่อ นามสกุล มีเพศ มีเงินเดือน
นะคะ สัญลักษณ์จะเป็นแบบนี้
อย่างข้อมูลพนักงานต้องมีอะไรบ้าง ก็ต้องมีฐานข้อมูล
Entity ใช่ไหมคะ ของตาราง
อันนี้ก็จะเป็นคอลัมน์ คอลัมน์
นะคะ ข้อมูลพนักงาน
ไปอีกเป็น 6 ประเภทนะคะ ก็ใช้เป็นวงรีเหมือนกัน
นี่ล่ะ แต่อาจจะมีสิ่งที่เปลี่ยนไปนิดหนึ่ง
คอลัมน์ ซึ่งใน Attribute นี่ มัน
Attribute ที่ไม่สามารถแบ่งย่อยได้อีกแล้ว
นะคะ โดย Atribute นี่
คุณเป็นเพศอะไรคุณก็ตอบเพศนั้น
ตอบได้ค่าเดียว คุณไม่จำเป็นต้องบอกว่า
เงินเดือนเดือนที่ 1 เงินเดือนเดือนที่ 2 เงินเดือนเดือนที่ 3 ไม่ใช่
เช่น เพศ
เลขบัตรประชาชนตอบได้ค่าเดียว รหัสนักศึกษา
เงินเดือนปัจจุบันเราเท่าไรนะคะ
ตอบได้ค่าเดียว
หรือเป็นข้อมูลโดยทั่วไปนะคะ
ประเภทที่ 2
เช่น ชื่อนามสกุล เราแยกกันกรอกได้ไหม
นะคะ ต่อมาเป็น Key
Attribute นะคะ ก็เป็นค่าเอกลักษณ์
ไพด้ แบ่งเป้นชื่อ คอลัมน์ 1 นามสกุลคอลัมน์ 1 ก็ได้
นี้จะต้องไม่ซ้ำกัน โดยลักษณะเฉพาะของ
คีย์นะคะ มันจะมีการขีดเส้นใต้
เพื่อแสดงว่ามันเป็น
จะต้องไม่ซ้ำกัน
เหมือนเวลาเราเรียนวิชาใด ๆ ก็ตาม ถ้าอันไหนมีการ
ขีดเส้นใต้ มันเป็นการเน้นใช่ไหมคะ ในวิชาอื่น ๆ ใน
การวาดรูปก็เหมือนกัน วาดรูปในฐานข้อมูลก็เหมือนกัน
ค่าที่ซ้ำกันไม่ได้
กับมันนะคะ กับ
ข้อมูลนะคะ
ค่านั้นน่ะ
คุณจะเป็นเพศไหน คุณระบุมา อาจจะไม่มี
แค่ชขายหรือหญิง ตอนนี้คุรเป็นเพศอะไร
ก็ระบุมานะคะ หรือค่าที่มีได้หลายค่า
ที่มีเพียงค่าเดียวเท่านั้น
แต่ละที่ ก็จะมีรหัสพื้นที่ไม่เหมือนกัน
อย่างเช่น เบอร์บ้าน ถ้า
ขอนแก่นก็ 043 อุดรฯ ก็ 042 ใช่ไหมคะ
มันก็ต้องระบุด้วย
อย่างนี้นะคะ ถ้าค่าไหนมีได้หลายค่า
กรุงเทพก็เป็น 02 สกลยครก็เป้ฯ 04
ของข้อมูลที่ได้จากการคำนวณ เราจะใช้วงรีที่เป็นเส้นประ
เช่น อายุที่ได้มาจากวันเกิด
นะคะ หรือว่าวันเข้าทำงาน
อย่าลืมเป็นวงรี 2 เส้น กับค่า
อย่างนี้ก็ได้นะคะ ค่าที่ได้มาจากการคำนวณนั่นล่ะ
อันนี้เป็นตัวอย่าง
Simple Attribute แยกให้ออกนะคะ
จนถึงปัจจุบัน
คือวงรี ตัวนี้ ตัวนี้ ตัวนี้ แล้วใน
สี่เหลี่ยมคืออะไร สี่เหลี่ยมคือ Entity
อันไหนเป็น Attribute
ที่แยกย่อยไปได้ เช่น ชื่อ นามสกุล
อาจารย์ก็แยกออกมาเป็น FirstName LastName ก็คือชื่อกับนามสกุลก็ได้
ก็คือชื่อตารางนั่นเอง
บรรทัดเดียวเลยก็ได้ หรือคุณอาจจะ
ออกแบบให้มันบ้านเลขที่บรรทัดหนึ่ง ถนนบรรทัดหนึ่ง
ที่อยู่
ตำบลบรรทัดหนึ่ง
ไม่ เหมือนกัน แต่ถามว่า
เราลบอันนี้ออกได้ไหม ก็ได้นะคะ เพราะว่ามันจะได้
นะคะ ถามว่าใช้สัญลักษณะแตกต่างกันไหม
อย่างนี้ก็ได้นะคะ คีย์ Attribute
ค่าที่ห้ามซ้ำกัน
ก็คือตารางนักเรียนอะไรที่ห้ามซ้ำกัน ก็คือ
ไม่เปลืองเนื้อที่อย่างนี้ก็ได้ แล้วคุณก็กรอกไปเลยชื่ออันหนึ่ง
รหัสนักเรียน
student id นะคะ student
id ท
เพราะคำย่อแบบนี้ หรือชื่อทุกอย่าง
นี้ จะต้องจดไว้ในพจนานุกรมข้อมูลด้วย
ID ทำไมถึงรู้ว่าเป็น Student ID
มันมาจากอะไร แต่ถ้าเป็นคนที่ไม่มีความรู้พื้นฐานเลย เขาจะรู้ไหม คือ
SID คืออะไร อันนี้เดี๋ยวอีกเรื่องหนึ่ง เป็นอีกเรื่องหนึ่ง
ถ้าเอาทุกอย่างมารวมกัน
ถามว่าอันนี้มันง่ายค่ะ
หรือมีรูปแบบข้อมูลได้ทุกรูปแบบก็ได้
นะคะ มีทั้งคีย์หลัก มีทั้ง
Attribute ที่สามารถแบ่งย่อยได้ มีทั้ง Attribute ที่
ใน 1 ตาราง สามารถมี Attribute
วัน เดือน ปีเกิด เบอร์โทรศัพท์
เป็น Multi Value มีได้หลายค่า
ได้มาจากการคำนวณ
Attribute แต่เดี๋ยวเราอาจจะยังไม่เข้าใจ เดี๋ยว
วาดรูปก็น่าจะเข้าใจได้มากขึ้น
อันนี้คือตัวอย่างนะคะ ตัวอย่างของ
มันเป็นความสัมพันธ์ของตาราง 2 ตารางขึ้นไป
นะคะ โดยความสัมพันธ์นี่ อาจจะมีข้อมูล
ต่อมา ความสัมพันธ์นะคะ
นะคะ เช่น
ตารางพนักงาน อันนี้พนักงานนะคะ
พนักงาน Work in แปลว่า
ที่ใช้ร่วมกัน
โดยความสัมพันธ์ตัวนี้นี่
จะต้องสามารถอ่านไปข้างหน้า อ่านย้อนหลังก็ได้
ในแผนกอะไร หรือในแผนกนั้น ๆ มี
ใครทำงานอยู่บ้าง มันจะต้องเข้าใจได้แบบนี้นะคะ
หรือการสั่งสินค้า
อย่างเช่น ตัวอย่าง
นะคะ สินค้าชนิดนั้น ๆ อยู่ใน
ใบสั่งซื้ออะไร ก็ต้องดูได้ สินค้า อย่างเช่น
อยู่ในใบสั่งสินค้าตัวไหน
ก็ได้ เพราะสินค้าเรามีหลายตัวนะคะ
ไม่ใช่ว่าขายให้แค่คนเดียว ขายให้ได้หลายคนนะคะ
ความสัมพันธ์แบบ 1 ต่อ 1
P
ที่มีสมาชิกคนเดียว มีความสัมพันธ์ไปอีก
สมาชิกหนึ่ง ของอีกตารางหนึ่งเท่านั้นนะคะ
เช่น เจ้าของรถเป็นเจ้าของรถยนต์ได้ 1 คัน
จะต้องเป็นความสัมพันธ์
คน 1 คน เป็นเจ้าของรถยนต์ได้
หนึ่งคัน ใช่ไหม
นะคะ
นะ ตัวอย่าง แต่
ถ้าเปลี่ยนเป็นความสัมพันธ์แบบ 1 และมากกว่า 1 ล่ะ
นะคะ เช่นคนหนึ่งคน มีรถยนต์
ใครเคยเห็นในทะเบียนรถยนต์
บางคนอาจจะมีรถยนต์มากกว่า 1 คัน อาจจะมีรถ
เก๋ง มีรถกระบะ มีรถ 6 ล้อ
ได้หลายคัน
แต่ในบรรดารถทุกคนจะต้องมี
เจ้าของคนเดียว
นะคะ คนคนหนึ่งมีรถได้หลายคนก็จริง แต่รถคนนั้น
มีเจ้าของได้คนเดียว
อันนี้คือสิ่งที่เราต้องคิดด้วย
มากกว่า 1
เช่น ลูกค้าหลายคน
ลูกค้า 1 คน สมมติเราไปซื้อของ
แต่แคชเชียร์คนนี้ก็สามารถ
ต้องซื้อกับ แคชเชียร์คนนี้เวลาจ่ายเงิน
ร์นะคะ ไม่จำเป็นต้องจ่ายเฉพาะคนนี้เท่านั้น
เหมือนเวลาเราไปเดินห้าง ซื้อ
รับลูกค้าได้หลายคนเหมือนกัน
หลายคนไหม มีหลายคน คนคิดเงินก็มีหลายคนไหม
เหมือนกัน เพราะฉะนั้น วันนี้เราอาจจะเจอพนักงานคนหนึ่ง พรุ่งนี้
ของใน Super วันวันหนึ่ง
อันนี้เป็นความสัมพันธ์ที่มากกว่า 1
ภาษาอังกฤษเรียกว่า Many-to-Many
อาจจะเจอคนใหม่ก็ได้ เขาก็ไม่ได้เจอเราคนเดียว
ความสัมพันธ์แบบ 1 ต่อ 1 จะเห็นได้ว่า เส้น
ที่เชื่อมความสัมพันธ์จะเป็นเส้นตรง มีเลข
กกำกับ เห็นไหมคะ จะมีตัวเลขกำกับด้วย
นะคะ
จะต้องมีตัวเลข หรือตัวอักษรกำกับทุกครั้ง
นะคะ อันนี้เป็นความสำคัญแบบ 1 ต่อ 1
เพราะฉะนั้น
อาจจะไม่จริงเสมอไป
ตัวแทน 1 คน อาจจะดูแลลูกค้าได้หลายคนก็ได้
ขายสินค้า ดูแลลูกค้าได้ 1 คน จริงไหม
ก็ได้นะคะ M หรือ N ก็ได้นะคะ
M หรือ N ก็ได้ แต่ต้องใส่ ถามว่า
ถูกต้องหรือยัง ตัวแทน 1 คน ดูแลลูกค้าได้
ถ้าเป็นลูกค้าหลายคน
หลาย ๆ คนก็ได้รับการดูแลจากตัวแทน 1 คน ก็ถูก
นะคะ แบบนี้เป็นต้น มีการ
ใส่คีย์หลัก มีการ
หลายคน ถูก
ต้องใส่ ต้องระบุนะคะ
แต่ถ้าเป็นความสัมพันธ์ที่มากกว่า 1 ทั้ง 2 ด้าน
จะต้องใส่เป็น M กับ N เท่านั้น
ขีดเส้น
ไม่ได้ เป็น N กับ N แบบนี้ได้ไหม
ก็ไม่ได้ ต้องเป็น M กับ N
เพื่อให้สื่อความหมายได้ถูกว่ามันเป็นความสัมพันธ์
เราจะใส่เป็น M M แบบนี้ไม่ได้นะคะ
เดี๋ยวพอวาดง่าย ๆ ก่อน
น่าจะเข้าใจง่ายขึ้น กับ
ที่เชื่อม
อาจจะมีรูปภาพให้ แล้ว
ให้พวกคุณเปลี่ยนเป็นตาราง ง่ายมากเลย
อันนี้ออกสอบง่ายมาก
สี่เหลี่ยม มันคือชื่อตารางใช่ไหมคะ คุณก็เอา
กรอบสี่เหลี่ยมออก แล้วก็เขียนชื่อตาราง
นะคะ
เสร็จแล้ว
หรือถ้าอาจารย์ให้วาดรูป
ทำอย่างไร จากตารางข้างล่าง ชื่อตรางใช่ไหมคะ
วงรี คือ Attribute ก็เป็นคอลัมน์ของตาราง
แต่ละคอลัมน์ ก็เอามาใส่ในวงรี โยงเส้น
เสร็จ แค่นั้นเอง
ชื่อตารางก็เอามาใส่กรอบสี่เหลี่ยม คอลัมน์
นะคะ อาจจะไม่ง่าย
อย่างนี้ แต่หลักการมีประมาณนี่ล่ะ
มันสามารถแบ่งแยกออกได้นะคะ จะเห็นว่า
ตอนก่อนหน้านี้ที่อาจารย์ตัดตรงนี้ออก
นะคะ กับถ้าสมมติว่า
ของตาราง อันนี้เราจะไม่ใส่ เราจะดูเฉพาะ
Attribute ที่อยู่ขอบนอกสุดเท่านั้น
ใช่ไหม
ลงเป็นตาราง
อันนี้เป็น ดูดี ๆ นะ ข้อกำหนดแต่ละอัน
นะคะ
ที่สามารถมีได้หลายค่า เห็นไหมวงรี
ซ้อนกัน 2 วง เราจะเอาข้อมูลนั้น
กับถ้าตารางไหนมีข้อมูล
แต่คีย์หลักจะเอามาจากตารางเดิม
นะคะ
แยกมาเป็นอีก
เชื่อมกัน อันนี้เป็นข้อสังเกต
ก่อนนะ อันนี้ยังเป็นกฎที่ต้องใช้อยู่
นะคะ
เพื่อให้เ 2 ตารางนี้ มัน
หรือความสัมพันธ์แบบอ่อนแอ
เราต้องดูด้วยว่ามันมีความสัมพันธ์กับตารางไหน
นะคะ เราจะเอาคีย์หลัก
กับอันไหนที่เป็นค่า ที่เป็น Weak Entity
อย่างเช่น... เดี๋ยวลบอันนี้ออกก่อน ทำไม
ถึงบอกว่าตารางด้านขวามือเป็นตารางอ่อนแอ
ของตารางที่มั
มีเวลาทำงาน มีเวลากลับบ้าน มี
วันที่ แต่ถามว่าเป็นของใคร
เพราะในตารางนี้
ใครน่ะมาทำงาน 7 โมง กลับ
น. ไม่รู้
เพราะฉะนั้นต้องไปดูด้วยว่า
พนักงานรหัสคนไหนที่เขามา
16.00 น.
นะคะ แต่ถามว่าในตารางนี้ทำไมเราไม่ให้กรอก
รหัสพนักงานด้วยเลยล่ะ มันก็เป็นการซ้ำซ้อน
กันไงคะ ในเมื่อเรามีรหัสพนักงานอยู่แล้ว เราก็เรียกใช้ได้เลย
แสกนนิ้วทำงาน หรือตอกบัตรทำงาน
ถ้าอันไหนซ้ำซ้อนกันเราจะไม่ใช้ เราจะดึงข้อมูลมันมาใช้เลย
เราไม่จำเป็นต้องมาเพิ่มตรงนี้ก็ได้ นี่เป็นการออกแบบที่ดี
นะคะ อันนี้คือตัวอย่างอย่างหนึ่ง
กับการเปลี่ยนให้เป็นตาราง
ถ้าเมื่อกี้นี้ในรูปนี้อาจารย์ไม่ได้ใส่ความสัมพันธ์ใช่ไหมคะ
อันนี้คือข้อดีของการออกแบบฐานข้อมูล
แต่ถ้ามันมีเส้นเชื่อมโยงไปตารางอื่นล่ะ
นะคะ อันนี้เป็นความสัมพันธ์แบบ 1 ต่อ 1
ยังไม่มีเส้นเชื่อมโยงไปตารางอื่นใช่ไหม
คีย์หลักไอ้ที่ขีดเส้นใต้นี่
ของตารางด้านข้าง ที่เรามีความสัมพันธ์ด้วย มาใส่
เราจะต้องเอา
ได้เปรียบอย่างหนึ่ง คือ ในตารางแรก
อาจจะเอารหัสลูกค้ามาเป็นคีย์เพื่อเชื่อมต่อกัน
ก็ได้ หรืออาจจะเอารหัสตัวแทน
ในตารางเรา
อันนี้เป็นความพิเศษเฉพาะ ของตารางแบบ 1 ต่อ 1
แต่จะต้องเอาคีย์หลักของตารางที่เรามีความสัมพันธ์
นะคะ
นะคะ ต้องมี มันสามารถยืดหยุ่นได้
ด้วย
แต่ถ้าเป็น
ความสัมพันธ์แบบ 1 ต่อ กลุ่ม
นั่นเอง
มาใส่ในตารางที่มีความสัมพันธ์แบบกลุ่ม
เท่านั้น
อันนี้เป็นลักษณะเฉพาะ
จะต้องเอาคีย์หลักของฝั่งที่มีความสัมพันธ์แบบ 1 ต่อ 1
แต่ถ้า
เป็นความสัมพันธ์ แบบกลุ่มต่อกลุ่มล่ะ
เห็นไหมคะ เป็น M กับ N
นะคะ ลักษณะเฉพาะ
แต่เราจะสร้างตารางใหม่ขึ้นมา
โดยใช้คีย์หลักของทั้ง 2 ตาราง
ที่มีความสัมพันธ์กัน มาสร้างเป็นตารางใ
เราจะไม่เอาตาราง... เอ้ย ไม่เอาค่าคีย์หลักมาใส่ในตาราง
3 อย่างนี้ให้ดีนะคะ 1 ต่อ 1 1 ต่อกลุ่ม
กับกลุ่มต่อกลุ่ม การเอามาสร้างเป็นตาราง
หม่เลย
ะฝั่งไหนก็ได้ แบบที่ 2 ก็คือเอาเฉพาะคีย์หลักของ
ความสัมพันธ์ที่เป็น 1 เท่านั้น
ลักษณะเฉพาะมี 3 แบบ แบบแรก คือ
ตารางใหม่เลยนะคะ อันนี้คือ
ลักษณะเฉพาะของการเปลี่ยนรูปภาพให้เป็นตาราง
นะคะ เดี๋ยวจะมีให้ทำด้วย บางคน
เอาคีย์หลักของทั้ง 2 ความสัมพันธ์มาสร้าง
การออกแบบนะคะ อันนี้พูดไปแล้ว
เราจะมาลองวาดรูปกัน
ให้... น่าจะเคยไปร้านหนังสือกัน
จะจำไม่ได้
นะคะ ในหนังสือ 1 เล่ม
จะมีอะไรบ้าง แน่นอน ข้อมูล
หรืออาจจะเคยเห็นหนังสืออยู่แล้วนะ
รหัสหนังสือนะ
มีชื่อหนังสือ มีรหัสผู้แต่ง
หนังสือแต่ละเล่ม
รูปกัน ในข้อมูลในผู้แต่ง
หนังสือมีอะไรบ้าง ก็จะมีรหัสของผู้แต่งคนนั้น
นะคะ มีชื่อผู้แต่งหนังสือ
รหัสสำนักพิมพ์ อันนี้คือข้อมูลที่อาจารย์ให้ก่อนนะ
มีชื่อสำนักพิมพ์ มีที่อยู่ มีเบอร์โทรศัพท์
นะคะ
ขั้นตอนแรก ศึกษาก่อน
ในข้อมูลสำนักพิมพ์ ก็จะมีรหัสสำนักพิมพ์
ข้อมูลที่อาจารย์ให้เมื่อกี้ มันจะมีข้อมูลหนังสือ
มีข้อมูลคนแต่ง มีข้อมูล
ในระบบร้านหนังสือ ก็คือ
พลอย โอเค ขั้นตอน
ต่อมา กำหนด
สำนักพิมพ์
ในข้อมูลที่อาจารย์ให้อันนี้ มันจะต้อง
มีกี่ Entity หรือกี่ตาราง ทำสิ ใช้สัญลักษณ์
ให้ถูกด้วยนะคะ เดี๋ยวอาจารย์จะเดินดู ทำเลย
Entity เดี๋ยวจะให้ทำเอง
ข้อมูลตัวหนังสือสีดำ ๆ นี่ ดำ ๆ เข้ม ๆ
นี่ เราควรมีกี่ตาราง
วาดรูปนี่ วาดรูป
นี่ จากข้อมูลนี้
วาดแบบนี้ ให้วาดรูป ให้เอาข้อมูลน่ะมาวาด
รูปแบบนี้ แต่อย่างแรกเลย ดูก่อนว่า
แบบนี้
จะมีกี่ตาราง ดูสิว่ามันต้องมีกี่ตาราง
สัญลักษณ์ของตารางหรือ Entity
ข้อมูลที่อาจารย์ให้นี่มันควร
มันควรจะมีสี่เหลี่ยมผืนผ้ากี่อัน แล้วในสี่เหลี่ยม
ผืนผ้าจะต้องเขียนว่าอะไร ลอง
ทำดู
ก็คือสี่เหลี่ยมผืนผ้า
สรุปแล้วมีกี่ตาราง
อันนี้ยังไม่ยาก
ตัวหนังสือสีดำเข้มไว้ เราจะได้ 3
อันนี้ง่ายมาก
มีตารางผู้แต่ง มีตารางหนังสือ มี
ตารางสำนักพิมพ์ ก็คือ 3 Entity นั่นเอง
นะคะ จากโจทย์ที่อาจารย์กำหนดให้นะ
ตาราง ในกรอบสี่เหลี่ยม
จะให้ทำเอง
หลังจากเราได้ตารางหรือ Entity แล้วนะคะ
มันจะต้องกำหนดความสัมพัน
ที่อาจารย์เน้นให้
เราจะโยงเส้นมันอย่างไร
โดยความสัมพันธ์ของแต่ละอัน มันควรจะเป็น
อย่างไร สิ่งที่มันควรจะเป็น
ธ์ นี่ ๆ
ใดสำนักพิมพ์หนึ่งเท่านั้น
ใช่ไหม
แต่ว่าใน 1 สำนัก
ก็คือหนังสือแต่ละเล่ม จะถูกพิมพ์จากสำนักพิมพ์
อันนี้คือเงื่อนไข เงื่อนไข
หนังสือแต่ละเล่ม
พิมพ์
คนเดียวเท่านั้น
แต่ในโลกของความเป็นจริง หนังสือนี่ มันอาจจะมี
กำหนดว่า
คนแต่งช่วยกันก็ได้นะ
อันนี้คือโจทย์ที่อาจารย์กำหนดนะคะ แต่ว่า
ผู้แต่งหนังสือแต่ละคน
เขาก็สามารถแต่งหนังสือได้หลายเล่มเหมือนกัน
อาจารย์ให้
แล้วเราจะ
ให้ความสัมพันธ์แต่ละอันอย่างไร
ก็คือการวาด นี่ ๆ วาดแบบนี้
อันนี้คือข้อกำหนดที่อาจารยืกำหนดให้นะคะ
ความสัมพันธ์จะเป็นแบบนี้
อันนี้คือความสัมพันธ์ที่นักศึกษาต้องวาด
นี่ มันจะมีการวาดแบบนี้นะคะ
ไอ้ 3 อันนี้ มันจะต้องสัมพันธ์กันอย่างไร
ลองวาดดูสิ
จากโจทย์ตัวนี้นะคะ จากโจทย์ตัวนี้
จะต้องออกมาเป็นอย่างนี้นะคะ แต่
ข้อมูลข้างในน่ะเราจะใส่ว่าอย่างไร ลองใส่ดู
ลองวาดดู รูปมัน
ลองดูสิว่าจะเข้าใจโจทย์อาจารย์ไหม จ
ะวาดได้หรือเปล่า 5 นาทีเดี๋ยวดูกัน
เดี๋ยวให้เวลา 5 นาที
เดี๋ยวเอาตัวอย่างให้ดูเลย ที่เหลือจะได้ลองทำดู
ให้ตัวอย่าง 1
สิ
ผู้แต่ง 1 คน โจทย์ที่อาจารย์บอก
อันก่อน
นี่ก็มีผู้แต่งได้แค่คนเดียว แต่เขาแต่งได้หลายเล่มใช่ไหม
เพราะฉะนั้น ความสัมพันธ์ ก็คือผู้แต่ง 1 คน สามารถ
แต่งหนังสือได้หลายเล่ม แต่ถ้าเราอ่านย้อนกล
แต่งหนังสือ 1 เล่มใช่ไหมคะ
แค่ 1 คน
อันนี้ยกตัวอย่างให้ 1 อันแล้ว
ที่เหลือ ลองวาดดูสิ
ับ
ลองดูสิ เริ่มให้แล้ว 1 อัน
ที่เหลือลองทำดูก่อน
ให้มันได้เหมือนของอาจารย์นี่
หนังสือหลาย ๆ เล่ม
จะต้องถูกพิมพ์จาก 1 สำนักพิมพ์เท่านั้น
ใช่ไหม อันนี้ตามโจทย์ที่อาจารย์กำหนด
ที่เหลือ
มารวมกันในความสัมพันธ์นะคะ
มันอาจจะเขียนได้เป็นแบบนี้นะคะ
ผู้แต่ง 1 คน แต่งหนังสือได้หลายเล่ม
นะคะ
ถูกจัดพิมพ์จาก 1 สำนักพิมพ์เท่านั้น
อันนี้คือรูปความสัมพันธ์ที่เกิดขึ้น
นะคะ อันนี้ยังง่ายอยู่
พอเห็นภาพขึ้นบ้างไหมนะคะ
และหนังสือหลาย ๆ เล่มจะต้อง
ถ้าเป็นคนที่ไม่มีความรู้ทางด้านคอมพิวเตอร์มาอ่านเขา
ก็จะเข้าใจนะคะ อันนี้คือการวาดรูป
อันนี้ยังง่าย อันนี้พอเราอ่าน
ความคิดของเราด้วย ว่าสิ่งที่มันควรจะเป็นในฐานข้อมูลมันควรจะเป็นอย่างไร
นะคะ
ต่อมา ง่ายแล้ว
มันเลยจะทำให้เราเข้าใจมากขึ้น
เราต้องมาเขียนว่าใน
อันนี้ยิ่งง่าย พอเราได้ความสัมพันธ์เราได้ Entity แล้ว
แล้วอะไรจะเป็นคีย์หลัก ก็คือค่า
ที่ห้ามซ้ำกัน ที่เราต้องขีดเส้นน่ะค่ะ เอามา
จากตรงไหน มาจาก
แต่ละตาราง มันควรจะมีข้อมูลอะไร
ง ก็คือชื่อ Entity แล้วข้อมูลมีอะไรบ้าง
มันก็แค่เอาข้อมูลที่อาจารย์กำหนดให้นี่ค่ะ
ไปใส่ในรูปวงรี
ตรงนี้ เรารู้แล้
ในแต่ละข้อมูล อะไรจะเป็นคีย์หลัก ก็คือค่า
ที่ห้ามซ้ำกัน ลองวาดดู
อาจารย์เอาให้หมดแล้ว
ใช่ไหม คือ Attribute
อันยาก ก็คือเราจะขีดข้อมูลเส้นใต้ตัวไหน
นะคะ อันนี้ไปแล้ว ทำเอง
ลองดูสิ มันจะได้รูปเหมือน
กับของอาจารย์ไหม ลองทำดู
3 อันนี้จะต้องมีข้อมูลอะไรบ้าง
มาใส่ แค่นั้นเอง เดี๋ยวให้ลองทำเองดูว่า
เหมือนกันไหม
แค่เอาข้อมูลที่อาจารย์กำหนดให้ในสไลด์ก่อนหน้านี้ค่ะ
5 นาทีเหมือนเดิม
มันต้องแบบนี้ อีก 2 อันที่เหลือทำเอง
เอาตัวอย่างให้ดูก่อน
ได้ตารางหนังสือแล้ว
เดี่ยววันนี้ไม่เสร็จ ให้ 1 ตัวอย่างก่อน
อีกสิ อีก 2 อันที่เหลือให้รูปมันออกมาเป็นแบบนี้ ต้องทำอย่างไร
ยกตัวอย่างให้ก่อน
เดี๋ยวไม่เข้าใจ
เหลือตารางสำนักพิมพ์กับตารางผู้แต่ง
ก็คือเราขีดเส้นใต้ รหัสหนังสือน่ะ
ห้ามซ้ำกัน อีก 2 อันที่เหลือ
เห็นไหมว่าอาจารย์กำหนดคีย์ด้วย
ด้วย ทำไมต้องมี
ต้องมีเพราะว่าเราจะได้รู้ว่าหนังสือเล่มนี้
สำนักพิมพ์ไหนเอามาขาย
อันไหนต้องห้ามซ้ำกัน
คือ คีย์นอก
ซึ่งเอาไว้เชื่อมโยงไปดูว่าสำนักพิมพ์
ใช่ไหม
ชื่ออะไร อยู่ที่ไหน เบอร์โทรศัพท์เบอร์อะไร
จำเป็นต้องเอาข้อมูลมาทั้งหมด
2 ตารางนะ ลองวาด
ต้องมีอะไร ในสำนักพิมพ์ต้องมีอะไร ลองวาดดูสิ
ดูสิ
เหมือนกันหรือเปล่า อันนี้ง่ายมากเลย
ก็เอาข้อมูลที่อาจารย์ให้มาวาดแค่นั้นเอง
ใช่ไหม
ผู้แต่งได้หรือยัง
ก็เป็นแบบนี้
เพราะอาจารย์ให้ข้อมูลไปหมดแล้ว
พอเราวาดเสร็จ
สำนักพิมพ์
รูปที่สมบูรณ์
มันเลยเป็นแบบนี้ใช่ไหม
จากข้อมูลที่อาจารย์ให้ทั้งหมด พอมาวาดรูป
ได้องค์ประกอบทุกอย่าง
ที่ได้น่ะค่ะ จากตัวหนังสือเป็นยาว ๆ เฟื้อย ๆ นี่
เราก็เอามาวาดเป็นรูป
แล้วมันจะได้เช็กได้ว่าเราขาดข้อมูลตรงไหนหรือเปล่า
เหมือนกันเลย แค่เอาข้อมูล
ได้อีก มันเป็นไปอย่างที่เราเข้าใจ
ไหม ในตัวของสมมติว่าเขามาจ้างให้เราออกแบบ
ข้อมูลเข้าใจตรงกันหรือเปล่านะคะ
นะคะ
แต่ถ้าเป็น
การออกแบบฐานข้อมูลจริง ๆ ที่
หรือเขาอยากให้เอาข้อมูลอะไรเข้ามาอีก
นะคะ อันนี้เป็นแค่ตัวอย่างที่อยากให้คุณทำ
ฐานข้อมูลจริง ๆ มันจะเป็นอย่างไร
มันจะเป็นแบบนี้เลย เห็นไหมคะ ว่า
ใช้กันในชีวิตประจำวัน ถามว่าแค่นี้พอไหม
นี้ มันต้องเป็นแบบนี้ เมื่อกี้มันน้อยมาก
แต่ถ้าเราทำงานจริง ๆ ข้อมูลมันจะ
เยอะขนาดนี้เลยนะคะ ข้อมูลจะเยอะขนาดนี้เลย
ร้านหนังสือร้านหนึ่ง
สิ่งที่ให้นักศึกษาไปทำ อาจารย์
กำหนดข้อมูลให้แล้วด้วย
เพราะฉะนั้น วันนี้มี
าจารย์ยกตัวอย่าง แต่จะเป็นการขายคอมพิวเตอร์
นะคะ โดยข้อกำหนด คือ
ให้วาดรูปเหมือนเมื่อกี้นี้ค่ะ
สามารถซื้อสินค้าได้หลายชิ้น
นะคะ แล้วก็ 1 ใบเสร็จรับเงิน
ก็มีสินค้าได้หลายชิ้นเหมือนกัน มีชิ้นเดียวได้ไหม
ลูกค้ามีได้หลายคน
นะคะ ในแต่ละใบเสร็จ
จะต้องมีแคชเชียร์หรือพนักงานขายแค่คนเดียวเท่านั้น
ได้
ซื้อของในห้าง คนคิดเงินให้เราก็มีคนเดียวใช่ไหม
แล้วก็ต้องมีการแยกประเภทสินค้าด้วย
อันนี้คือเรื่องทั่วไปเลยนะคะ
มันก็จะแยกกัน เครื่องครัวอยู่ที่หนึ่ง ที่นอนอยู่ที่หนึ่ง ของกิน
นะคะ
อันนี้คือการแยก คอมพิวเตอร์ก็เหมือนกันนะคะ
โดยที่อาจารย์กำหนดให้แล้ว
นะคะ
ว่ามันควรจะมีตารางอะไรบ้าง
อยู่ที่หนึ่ง ใช่ไหม
ก็จะเป็นตารางลูกค้า ตารางพนักงาน
ขาย ตารางรายละเอียดของสินค้า
ตารางประเภทสินค้า ตารางใบเสร็จ อันนี้
มี 5 ตารางนะคะ 5 ตาราง
ว่าควรจะมีข้อมูลอะไรบ้าง
ให้เราไปวาดรูปมา
อาจารย์กำหนดให้แล้วนะคะ
เมื่อกี้นี้นะคะ ลองวาดดูสิว่ารูปที่ได้จะเป็นอย่างไร
นะ อันนี้เป็นการบ้าน
ทำเอง ใช้หลักการเดียว
แล้ว ถ้าใครจะนั่งวาดรูปต่อ ก็ได้ แต่ต้องส่
สำหรับวันนี้ไม่มีอะไร
ประมาณนี้ มาครบทุกคน เดี๋ยว
ให้ไปปวดหัววาดรูปต่อนะ ปกติ
วาดรูปไม่เคยปวดหัวเท่านี้มาก่อนเลย วันนี้ลองดู
ง ต้องส่งนะคะ ต้องส่ง
ว่าในแต่ละตารางมันควรมีอะไรบ้าง จากที่เมื่อกี้อาจารย์กำหนดให้
ลองกำหนดเองสิ ว่ามันต้องมี
ที่แน่ ๆ มีกี่ตารางนี่ 5 ตาราง
อะไร แล้วทำส่งอาจารย์
ะ วาดมา ใส่ความสัมพันธ์ให้ครบด้วย
ประมาณนี้ค่ะ ขอบคุณมากค่ะ ขอบคุณล่ามด้วย ขอบคุณ
ถอดความด้วยนะคะ โอเคค่ะ
เจอกันสัปดาห์หน้าค่ะ
ขีดเส้นให้อาจารย์ด้วยนะคะ วันนี้ก็