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