การกำหนด Relation ใน SQL Server เพื่องาน Develop

Table & Relation LINQ, Entity Framework

คลิกเลือกที่ New Database Diagram

Table & Relation LINQ, Entity Framework

เลือก Table ที่ต้องการ

Table & Relation LINQ, Entity Framework

ในส่วนของ Diagram ให้เราทำการลากเพื่อเชื่อมความสัมพันธ์ของ Table

Table & Relation LINQ, Entity Framework

ตัวอย่างการกำหนด Relation ของ Table ในตัวอย่างนี้ระหว่าตาราง CUSTOMER กับ AUDIT เชื่อมโดยใช้ CUSTOMER_ID ความสัมพันธ์เป็นแบบ 1 ต่อ กลุ่ม คือ 1 ลูกค้า มีได้หลาน Audit

Table & Relation LINQ, Entity Framework

สามารถกำหนด Cascade ของ Relation เช่น ถ้า Delete ที่เป็น Key ให้ข้อมูลที่เกี่ยวข้องของตารางถูกลบไปด้วย หรือในกรณีที่ Update ที่เป็น Key ก็ให้มีการเปลี่ยนแปลงค่าใน Table อื่น ๆ ที่เกี่ยวข้องด้วย

RESTRICT
เป็นค่า DEFAULT คือ ไม่อนุญาติให้ ลบ หรือ แก้ไข ค่าข้อมูล ใน PRIMARY KEY ได้ ถ้ายังมีค่าข้อมูลใน FOREIGN KEY อยู่ ต้องไปลบ row ที่ใช้ ข้อมูลจาก Primary key นั้นๆก่อนครับ

No Action
คล้ายๆกับ RESTRICT ครับ คือไม่อนุญาติให้ ลบ หรือ แก้ไข ค่าข้อมูล ใน PRIMARY KEY ได้
ถ้ายังมีค่าข้อมูลใน FOREIGN KEY อยู่ จะมีการตรวจสอบแถวที่มีการอ้างอิงถึงในตอนท้ายของ statement

CASCADE
คือ ถ้ามีการลบหรือแก้ไขค่าข้อมูลใน PRIMARY KEY แล้วค่าข้อมูลใน FOREIGN KEY จะเปลี่ยนแปลงตาม

SET NULL
คือ ถ้ามีการลบหรือแก้ไขค่าข้อมูลใน PRIMARY KEY แล้วค่าข้อมูลใน FOREIGN KEY จะเป็นค่า NULL

SET DEFAULT
คล้ายๆกับ SET NULL ครับ เพียงแค่ เมื่อมีการลบ ข้อมูล Primary Key ทิ้งแล้วข้อมูลที่ถูกอ้างอิงจะเปลี่ยนเป็น ค่าที่ถูกตั้งไว้ เช่นเมื่อข้อมูลที่อ้างอิงถูกลบ column ที่ FK มาจะให้กลายเป็น ค่า “0”

 

Table & Relation LINQ, Entity Framework

เชื่อม Relation ให้ครบ

Table & Relation LINQ, Entity Framework

เลือก Save ตัว Diagram ที่เราได้สร้างไว้

Table & Relation LINQ, Entity Framework

Diagram ที่ได้

Table & Relation LINQ, Entity Framework

กลับมายัง Model Entities บน Visual Studio

Table & Relation LINQ, Entity Framework

ให้คลิกขวาเลือก Update Model from Database

Table & Relation LINQ, Entity Framework

ถ้าเป็นการ Update ตัว Relation สามารถเลือก Update ได้เลย โดยไม่ต้องเลือกรายการอื่น ๆ

Table & Relation LINQ, Entity Framework

หลังจากนั้นจะเห็นว่าบน Model Entities จะมีความสัมพันธ์ของแต่ล่ะ EntitySet และในแต่ล่ะ EntitySet จะมีรายการ Table ที่เป็น Relation แสดงออกมาด้วย เช่น CUSTOMER จะมี AUDIT และ COUNTRY นั่นหมายถึงว่าในการ Select ข้อมูลจาก CUSTOMER จะสามารถแสดงรายการของ Table จาก AUDIT และ COUNTRY ได้เลย โดยการ Select เพียงครั้งเดียว

Table & Relation LINQ, Entity Framework

ในการ Select ข้อมูลเช่น CUSTOMER จะสามารถเลือกรายการ COUNTRY_NAME ที่อยู่ในอีก Table ที่เป็น Relation ได้เลย โดยไม่ต้องทำการ JOIN ข้อมูลระหว่าง 2 Table นี้

Table & Relation LINQ, Entity Framework

ในการเขียน LINQ to Entities จะสามารถอ้างถึงรายการ EntitySet ที่เกี่ยวข้องที่เป็น Relation

Table & Relation LINQ, Entity Framework

จะเห็นว่า Entity จะมีการแสดงข้อมูลและ Column ที่เป็น Relation ให้อัตโนมัติ ซึ่งสะดวกมาก ๆ

การ Select ข้อมูลจาก CUSTOMER แต่มีการดึง COUNTRY_NAME  ของอีกตาราง

Table & Relation LINQ, Entity Framework

สร้าง DataGridView สำหรับแสดงข้อมูล

ผลลัพท์
C#
Table & Relation LINQ, Entity Framework