คำศัพท์ที่ใช้ในอีอาร์ไดอะแกรม
ก่อนจะเริ่มเขียนอีอาร์ไดอะแกรม จะต้องเข้าใจศัพท์ที่ใช้ก่อน โดยความหมายจะอ้างอิงจากความเข้าใจและความคิดเห็นของผม รวมไปถึงแหล่งข้อมูลจากภายนอกอื่น (ที่มา) และเพื่อให้เข้าใจมากขึ้น จะมีการเปรียบเทียบคำศัพท์เหล่านี้กับฐานข้อมูลแบบรีเลชัน
เอนติติี้ (Entity)
เรื่องนี้มีหลายคนเข้าใจผิดกันเยอะ ขอพูดยาวหน่อย
เอนติตี้ อาจมีคนอธิบายไว้หลากหลายความหมาย บางก็แปลว่า “วัตถุ” บางก็แปลว่า “คน สัตว์ สิ่งของ” แต่สำหรับผมจะแปลว่า “หนึ่งสิ่ง” หนึ่งสิ่งที่ว่าอาจเป็นสิ่งที่เป็นรูปธรรมจับต้องได้ เช่น คน หมา แมว หรือ อาจจะเป็นสิ่งที่เป็นนามธรรม เช่น คาบเรียน วิชา รอบหนัง เป็นต้น
ความเป็นจริง สิ่งที่ผู้เขียนพูดมาก่อนหน้า ก็ไม่ใช่เอนติตี้ คน หมา แมว คาบเรียน วิชา รอบหนัง ไม่ใช่เอนติตี้ แต่ถ้าเป็นคนหน้าตาดีชื่ออวยชัยที่เขียนบทความนี้คือเอนติตี้ นักร้องลิซ่าคือเอนติตี้ วิชาคณิตศาสตร์คือเอนติตี้ ขอย้ำว่าเอนติตี้คือหนึ่งสิ่ง เมื่อพูดถึงเอนติตี้ ผู้ใช้ต้องสามารถชี้หรือระบุรายละเอียดของ”หนึ่งสิ่ง”นั้นได้เลย แต่ผู้ใช้ไม่สามารถระบุได้ว่า “คน” หน้าตาเป็นอย่างไร ความสูง น้ำหนัก เป็นอย่างไร เพราะ คน เป็นการกล่าวถึงอย่างกว้างๆ ไม่ได้เจาะจงใครหรือสิ่งใดเป็นพิเศษ
คน หมา แมว คาบเรียน วิชา รอบหนัง เป็นสิ่งที่ถูกเรียกว่า ประเภทเอนติตี้ (Entity type) เป็นสิ่งที่ใช้กล่าวถึงสภาพ หน้าตา ของเอนติตี้อย่างคร่าวๆ
ในกรณีของอีอาไดอะรแกรม เอนติตี้คือประเภทของเอนติตี้ในความหมายทั่วไป
แอตตริบิ้ว (Attribute)
แอตตริบิ้วคือคุณสมบัติเอนติติ้ เช่น แอตตริบิ้วของเอนติตี้ “บุคคล” ได้แก่ ชื่อจริง นามสกุล ความสูง น้ำหนัก เป็นต้น
แอตตริบิ้วหลายค่า (Multivalued attribute)
ปกติหนึ่งแอตตริบิ้วหนึ่งตัวจะมีเพียงหนึ่งค่า เช่น เอนติตี้บุคคลมีแอตตริบิ้วชื่อและความสูง ข้อมูลที่จะใส่ในชื่อและความสูงจะใส่ได้เพียงหนึ่งค่าต่อหนึ่งบุคคลเท่านั้น เช่น บุคคลตัวผู้เขียนเอง มีชื่อคืออวยชัย และความสูง 175 เซนติเมตร แต่ก็มีบางเหมือนกันที่แอตตริบิ้วสามารถใส่ได้หลายค่า เช่น บุคคลอาจมีแอตตริบิวต์เบอร์โทรศัพท์ ซึ่งบุคคลหนึ่งคนอาจมีเบอร์โทรศัพท์หลายเบอร์ก็เป็นได้ ในกรณีนี้เบอร์โทรศัพท์ก็จะจัดเป็นแอตตริบิ้วหลายค่า
แอตตริบิ้วอนุพันธ์ (Derived attribute)
ค่าข้อมูลของแอตตริบิ้วบางตัว ไม่ได้เกิดจากการกรอกข้อมูลแต่เป็นการนำแอตตริบิ้วตัวอื่นมาคำนวณ ตัวอย่างเช่น หนึ่งบุคคลอาจมีแอตตริบิ้ว”วันเกิด” ซึ่งอาจนำเอาแอตตริบิ้วปีเกิดนี้มาคำนวณเป็นแอตตริบิ้วใหม่เป็น”อายุ”่ ในกรณีนี้แอตตริบิว้วอายุจะถือว่าเป็นแอตตริบิ้วอนุพันธ์
รีเลชันชิป (Relationship)
รีเลชันชิปเป็นการบอกความสัมพันธ์ระหว่างเอนติตี้ เช่น หนึ่งบุคคล “มี” โทรศัพท์มือถือหลายเครื่อง “มี” คือความสัมพันธ์ระหว่ง “บุคคล” และ “โทรศัพท์มือถือ” ถ้าเปรียบเทียบกับภาษาไทย มันคือคำกริยา
เอนติตี้อ่อน (Weak entity)
เอนติตี้อ่อน คือเอนติตี้ที่ต้องมีการอ้างอิงเอนติตี้ตัวอื่น หากไม่มี ตัวมันเองจะอยู่ไม่ได้หรือตัวมันเองจะไร้ความหมายในทันที โดยมากเอนติตี้อ่อนมักจะเกิดจากแอตตริบิ้วที่ต้องการแตกรายละเอียดออกมา ตัวอย่างเช่น หนึ่ง”บุคคล” กับ “ทีอยู่” ผู้ออกแบบอาจให้ที่อยู่เป็นแอตตริบิ้วของบุคคลก็ได้ แต่ผู้ออกแบบก็อาจจะให้ที่อยู่เป็นเอนติตี้อีกตัวหนึ่งได้เช่นเดียวกัน เพราะมีรายละเอียดที่สามารถแตกเป็นแอตตริบิ้วได้หลายตัวเช่น เลขบ้าน ตำบล อำเภอ จังหวัด เป็นต้น ส่วนที่อยู่จะเป็นเอนติตี้อ่อนหรือไม่ ขึ้นอยู่กับว่าผู้ออกแบบมองที่อยู่อย่างไร ในกรณีของผู้เขียน ที่อยู่จะจัดเป็นติตี้อ่อน เพราะ ถ้ามีที่อยู่เพียงอย่างเดียว โดยไม่มีรีเลชันชิปกับบุคคล จะเกิดคำถามว่าเป็นที่อยู่ของใคร การมีอยู่ของที่อยู่จะไม่มีควาหมายไปในทันที
อนึ่ง เอนติตี้ที่สามารถอยู่ได้ดัวตัวเองไม่จำเป็นต้องอิงเอนติตี้ตัวอื่นเช่นบุคคล จะถูกเรียกว่า เอนติตี้แข็ง
รีเลชันชิปอ่อน (Weak relationship)
รีเลชันชิปอ่อน คือ ความสัมพันธ์ระหว่างเอนติตี้แข็งและเอนติตี้อ่อน อย่างในกรณี บุคคลและที่อยู่ จากตัวอย่างก่อนหน้า ความสัมพันธ์ที่เกิดขึ้นจะจัดเป็น รีเลชันชิปอ่อน
อนึ่ง ความสัมพันธ์ระหว่างเอนติตี้แข็งกับเอนติตี้แข็ง จะถูกเรียกว่ารีเลชันชิปแข็ง แต่มักเรียกว่ารีเลชันชิปเฉยๆมากกว่า
คาดินัลลิตี้และออดินัลลิตี้ (Cardinality and ordinality)
คาดินัลลิตี้และออดินัลลิตี คือจำนวนน้อยสุดและมากสุดที่เกิดขึ้นในความสัมพันธ์ระหว่างเอนติตี้ บางครั้งคนไทยก็เรียกอย่างย่อว่าค่าน้อย (Min) และค่ามาก (Max) ทั้งสองค่านี้จะต้องอยู่ทั้งสองข้างของเอนติตี้ที่มีความสัมพันธ์กัน ตัวอย่างเช่น หนึ่งบุคคล”ต้อง”มีบ้านหนึ่งหลังหรือมากกว่า ค่าน้อยและค่ามากของบ้านจะเป็น 1 และ * กลับข้างกัน บ้านหนึ่งหลังอาจไม่มีคนหรือมีมากกว่าหนึ่งคนก็ได้ ค่าน้อยและค่ามากของบุคคลจะเป็น 0 และ * โดย * แทนสิ่งที่มากกว่าหนึ่ง
บุคคล————————บ้าน
_____0..*________1..*____
อนึ่ง
ถ้าค่ามากของเอนติตี้ทั้งสองข้างเป็น 1 ความสัมพันธ์นั้นจะเรียกว่า ความสัมพันธ์แบบ One-to-One
ถ้าค่ามากของเอนติตี้ของข้างใดข้างหนึ่งเป็น 1 และอีกข้างเป็น * ความสัมพันธ์นั้นจะเรียกว่า ความสัมพันธ์แบบ One-to-Many หรือ Many-to-One ขึ้นอยุ่กับว่าข้างไหนเป็น 1 ข้างไหนเป็น *
ถ้าค่ามากของเอนติตี้ทั้งสองข้างเป็น * ความสัมพันธ์นั้นจะเรียกว่า ความสัมพันธ์แบบ Many-to-Many
เอนติติี้รวมหมู่ (Associative entity)
เอนติตี้รวมหมู่ คือ เอนติตี้ที่ถูกสร้างขึ้นมาเพื่อเชื่อมความสัมพันธ์ระหว่างเอนติตี้ โดยเฉพาะความสัมพันธ์ที่มีค่าออดินัลลิตี้เป็น * ทั้งสองข้าง หรือความสัมพันธ์แบบ Many-to-Many ยกตัวอย่างเอนติตี้ บุคคล และ บ้าน อย่างที่กล่าวไว้ในหัวข้อก่อนหน้า ค่าออดินัลลิตี้ของบุคคลและบ้านเป็น * มันก็ควรมีเอนติตี้รวมหมู่เกิดขึ้นตรงกลาง เพราะในการสร้างฐานข้อมูลในโลกแห่งความเป็นจริง ความสัมพันธ์ของเอนติตี้ที่ทั้งสองข้างเป็น * ไม่สามารถเกิดขึ้นได้ หากต้องการให้มันเกิดขึ้นมันจะต้องมีเอนติตี้ขั้นกลางระหว่างเอนติตี้ทั้งสองตัวนั้นแล้วเปลี่ยนความสัมพันธ์ให้กลายเป็น One-to-Many และ Many-to-One
บุคคล————————บ้าน
_____0..*________1..*_____
เปลี่ยนเป็น
บุคคล—————–เอนติตี้รวมหมู่———————–บ้าน
_____1______1..*_________1..*__________1
