Laploy's profileLoy Business Intelligenc...PhotosBlogListsMore Tools Help

Blog


    September 22

    ทำความรู้จัก LINQ [ตอน2]

    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

    ตัวอย่างเนื้อหาของหนังสือ เรีนรู้ด้วยตนเอง LINQ

    linq   [ตอน2]

     

    ข้อดีของ LINQ
    ก่อนหน้าที่จะมี LINQ การพัฒนาซอฟต์แวร์ที่เกี่ยวข้องกับแหล่งข้อมูลคละแบบ ท่านจำเป็นต้องใช้ API (Application Programming Interface ตัวเชื่อมต่อกับโปรแกรมประยุกต์) ที่แตกต่างกันหลายแบบ แต่ละแบบมีเทคโนโลยีและวิธีใช้งานเป็นของตัวเอง ยกตัวอย่างเช่นเมื่อท่านติดต่อกับ SQL2008 ท่านต้องใช้ ADO.NET เมื่อจะติดต่อกับแฟ้มข้อมูล XML ท่านต้องใช้ API ที่อยู่ภายในเนมสเปส System.Xml สภาพการเช่นนี้สร้างความปวดเศียรเวียนเกล้าให้แก่กรรมกรซอฟต์แวร์กันทั่วหน้า เพราะวิธีเขียนโค้ดติดต่อกับข้อมูลมีโมเดลหลายแบบ ขาดความคงเส้นคงวา ดีใจได้! เพราะต่อไปนี้จะไม่เป็นเช่นนั้นแล้ว LINQ จะช่วยให้ท่านทำงานกับแหล่งข้อมูลทุกชนิดได้ด้วยวิธีที่เหมือนๆ กันหมด

    ความคงเส้นคงวาเช่นนี้ช่วยให้ชีวิตของกรรมกรซอฟต์แวร์สะดวกสบายขึ้นมาก เพราะเมื่อท่านชำชองวิธีติดต่อกับแหล่งข้อมูลชนิดหนึ่งแล้ว ท่านจะสามารถเขียนโค้ดติดต่อกับแหล่งข้อมูลชนิดอื่นได้โดยใช้ความรู้เดียวกัน ยกตัวอย่างเช่นเมื่อท่านช่ำชองวิธีคิวรีข้อมูลในอาร์เรย์ด้วย LINQ แล้ว ท่านจะสามารถคิวรีข้อมูลในฐานข้อมูลได้โดยไม่ต้องเรียนรู้วิธีทำใหม่ทั้งหมด เพราะนับว่าท่านได้เรียนแนวคิดแนวปฏิบัติที่สำคัญต่างๆ ใน LINQ ไปมิใช่เล็กน้อยแล้ว

    ข้อดีอีกอย่างหนึ่งของ LINQ คือนอกจากท่านจะไม่ต้องห่วงว่าคิวรีจะผิดไวยากรณ์ เพราะตัวแปลภาษาจะตรวจสอบ และแจ้งความผิดพลาดให้อย่างที่เรียนไปแล้ว ส่วนอินเทลลิเซนส์ (IntelliSense คุณสมบัติเพื่อตรวจสอบความถูกต้องและเสนอแนะคำที่เหมาะขณะป้อนพิมพ์โค้ดของ VS2008) ยังสามารถทำงานกับ LINQ ได้อย่างก้าวหน้า ช่วยให้การป้อนพิมพ์โค้ดทำได้อย่างสนุก

    เรื่องสำคัญที่ไม่ควรมองข้ามอีกประการหนึ่งคือ LINQ ไม่ได้ส่งผลกระทบต่อการทำงานกับข้อมูลเท่านั้น การผสาน LINQ เข้ากับ C# ยังทำให้ภาษา C# เปลี่ยนแปลงไปอย่างสู่รูปโฉมใหม่อีกด้วย วิธีเขียนโค้ดของท่านจะไม่เหมือนเดิมอีกต่อไปแล้ว เพราะในหนังสือเล่มนี้ท่านจะได้เรียนรู้วิธีใช้ประโยชน์จากความเปลี่ยนแปลงที่เกิดขึ้นอย่างกว้างขวางในภาษา C# ที่จะช่วยให้โค้ดของท่านสั้นกระชับแต่จะทรงพลังกว่าเดิม

    006

    ภาพ 1-6: ส่วนอินเทลลิเซนส์ (IntelliSense คุณสมบัติเพื่อตรวจสอบความถูกต้องและเสนอแนะคำที่เหมาะขณะป้อนพิมพ์โค้ดของ VS2008) ยังสามารถทำงานกับ LINQ ได้อย่างก้าวหน้า

    ชุดเครื่องมือ LINQ
    LINQ เหมือนเหรียญที่มีสองด้าน ในด้านหนึ่งมันเป็นชุดเครื่องมือเพื่อใช้ทำงานกับข้อมูล และในอีกด้านหนึ่งมันมีภาวะเป็นส่วนที่เพิ่มขยายความสามารถของภาษา C# ในหัวข้อนี้ผู้เขียนจะพูดถึง LINQ ในแง่ที่เป็นชุดเครื่องมือ ท่านอาจมองว่า LINQ เป็นกล่องเครื่องมือที่มีเครื่องมือมาให้หลายอย่างดังนี้

    • LINQ to Object: เป็นเครื่องมือที่ช่วยให้ท่านทำคิวรีกับข้อมูลที่อยู่ภายในดาต้าคอลเลคชันภายในหน่วยความจำ
    • LINQ to DataSet: เป็นเครื่องมือที่ช่วยให้ท่านทำคิวรีกับข้อมูลที่อยู่ภายในดาต้าเซต
    • LINQ to SQL: เป็นเครื่องมือที่ช่วยให้ท่านทำคิวรีกับข้อมูลที่อยู่ภายในฐานข้อมูล
    • LINQ to Entity: เป็นเครื่องมือที่ช่วยให้ท่านทำคิวรีกับข้อมูลที่อยู่ภายในออพเจ็กต์แบบ ADO.NET เอ็นทิตีเฟรมเวิร์ค
    • LINQ to XML: เป็นเครื่องมือที่ช่วยให้ท่านทำคิวรีกับข้อมูลที่อยู่ภายในแฟ้มข้อมูล XML

    ในหนังสือเล่มนี้ท่านจะได้เรียนเครื่องมือที่ LINQ มีมาให้ทั้งห้าแบบนี้โดยละเอียด เครื่องมือห้าแบบนี้บางทีเรียกว่าตัวให้บริการหรือโพรไวเดอร์ (LINQ Provider ย่อ LP) ลองพิจารณาภาพ 1-7 จะเห็นว่าส่วนบนสุดคือภาษาที่ใช้งานกับ LINQ ได้ (ขณะนี้มีเพียงสองภาษาคือ C# 3.0 และ VB 9.0) ระดับถัดลงไปจากภาษาคือส่วนเพิ่มขยายหรือเปลี่ยนแปลงภาษาเพื่อให้ใช้งาน LINQ ได้ ประกอบด้วยสิ่งหลักสามสิ่งคือ ตัวดำเนินการคิวรีมาตรฐาน (Standard Query Operators ย่อ SQO) นิพจน์คิวรี (Query Expression ย่อ QE) และนิพจน์ต้นไม้ (Expression Tree ย่อ ET)

    ถัดจากส่วนเพิ่มขยายหรือเปลี่ยนแปลงภาษาเพื่อให้ใช้งาน LINQ ได้คือ LP ประกอบด้วยตัวให้บริการห้าตัวคือ LINQ to Object, LINQ to XML, LINQ to SQL, LINQ to DataSet และ LINQ to Entities ในอนาคตทีมงานผู้สร้าง LINQ อาจเพิ่ม LP แบบใหม่ๆ ขึ้นอีกได้ กรอบล่างสุดคือแหล่งข้อมูลที่ใช้ทำคิวรี (Data Source ย่อ DS) โดย DS แต่ละแบบจะสัมพันธ์กับ LP แต่ละตัว

    โปรดทราบว่าส่วน LP ไม่ใช่โปรแกรมที่แยกต่างหากหรือปลั๊กอิน แต่เป็น นวัตกรรมที่ถูกผนวกไว้กับภาษาเขียน C# 3.0เลย ที่เป็นไปได้เช่นนั้นเพราะ NETFX และภาษา C# ถูกดัดแปลงต่อเติมเพื่อให้รองรับ LINQ ได้ดังจะอธิบายรายละเอียดในหัวข้อถัดไป

    เนื่องจาก DS แบบ RDBMS, DataSet และ ADO.NET Entity Framework ล้วนสัมพันธ์กับฐานข้อมูลดังนั้นเราจึงอาจจัด LP แบบ LINQ to SQL, LINQ to DataSet และ LINQ to Entities ไว้เป็นกลุ่มเดียวกันได้อย่างที่เห็นในภาพ 1-8

    007

    ภาพ 1-7: สถาปัตยกรรม LINQ ที่ประกอบด้วยส่วนหลักสี่ส่วนคือภาษาโปรแกรม ส่วนเพิ่มขยายหรือเปลี่ยนแปลงภาษาเพื่อให้ใช้งาน LINQ ได้ ส่วนตัวให้บริการ LINQ และแหล่งข้อมูล

    008

    ภาพ 1-8: เราอาจจัด LP แบบ LINQ to SQL, LINQ to DataSet และ LINQ to Entities ไว้เป็นกลุ่มเดียวกันได้

    ความเปลี่ยนแปลงในภาษา C#
    การจะทำให้ภาษา C# ใช้งาน LINQ ได้ ฮาเยสเบิร์ก จำเป็นต้องเสริมเพิ่มสิ่งจำเป็นให้แก่ NETFX และภาษา C# การเพิ่มที่ว่านี้ไม่ใช่เป็นแค่เพียง “วากยสัมพันธ์แช่อิ่ม” (Syntactic sugar หมายถึงวากยสัมพันธ์ที่ไม่ได้เพิ่มความสามารถให้ภาษา แต่มีไว้เพื่อให้เขียนโค้ดได้สะดวกหรือสง่างามขึ้น) เพื่อให้ท่านคิวรีฐานข้อมูลในภาษา C# ได้สะดวกขึ้นเท่านั้น แต่เป็นการเพิ่มเติมที่ทำให้ท่านสามารถเขียน “โปรแกรมเชิงเจตจำนง” (Declarative Programming ย่อ DP) ได้

    สาเหตุที่ต้องยุ่งเกี่ยวกับ DP เพราะภาษาเพื่อการคิวรีข้อมูลในฐานข้อมูลสัมพันธ์ที่นักเขียนโค้ดคุ้นเคยที่สุดคือภาษา SQL เป็นภาษาแบบ DP ซึ่งเน้นการระบุว่าต้องการผลลัพธ์อย่างไร มีหลักการคิดแตกต่างจากภาษา C# ที่เป็นภาษาเชิงกำหนด (Imperative Programming ย่อ IP) ซึ่งเน้นการระบุว่าต้องการให้ดำเนินการอย่างไร

    ในชั้นแรกส่วน DP ที่ถูกเพิ่มเข้าใน C# 3.0 มีเจตนาให้ใช้คิวรีข้อมูลเท่านั้น แต่ภายหลังแนวคิดนี้คลี่คลายออกครอบคลุมส่วนที่ไม่ใช่คิวรีด้วย ดังนั้นใน C# 3.0 นอกจากท่านจะสามารถเขียนโปรแกรมตามลัทธิ IP อย่างที่เคยปฏิบัติมาแต่เดิมแล้วท่านยังอาจเขียนโปรแกรมตามลัทธิ DP ได้อีกด้วย

    ต่อไปลองมาดูตัวอย่างสิ่งที่เพิ่มขึ้นในภาษา C# เพื่อให้คิวรีข้อมูลได้โดยใช้ LINQ สมมุติว่าท่านได้รับโจทย์ดังนี้ “จงคิวรีข้อมูลในตาราง Products ในฐานข้อมูล AdventureWork2008 เฉพาะแถวที่รหัสสินค้ามากกว่า 2 และชื่อสินค้านำหน้าด้วย A จากนั้นนำผลลัพธ์ที่ได้ไปใส่ในโครงสร้างแบบ XML ในหน่วยความจำ” โจทย์แบบนี้หากไม่ใช้ LINQ ท่านจะต้องเขียนโค้ดโดยใช้เทคโนโลยีสองอย่างผสมกัน คือใช้ ADO.NET เพื่อคิวรีฐานข้อมูล และใช้เนมสเปส System.Xml ของ NETFX เพื่อจัดการ XML แต่ถ้าใช้ LINQ โค้ดจะเป็นอย่างที่เห็นในภาพ 1-9

    009

    โค้ดในภาพ 1-9 บรรทัดที่ 13 ถึง 20 ทำหน้าที่คิวรีข้อมูลในตาราง Products ในฐานข้อมูล AdventureWork2008 เฉพาะแถวที่รหัสสินค้ามากกว่า 2 และชื่อสินค้านำหน้าด้วย A บรรทัดที่ 21 ถึง 29 ทำหน้าที่นำผลลัพธ์ไปใส่ในโครงสร้างแบบ XML ในหน่วยความจำ สิ่งที่เพิ่มขึ้นในภาษา C# 3.0 คือส่วน QE ในบรรทัดที่ 16 ถึง 20 จะเห็นว่ามีคำสั่ง from, where, orderby และ select หากนำโค้ดนี้คอมไพล์ใน C# 2.0 ท่านย่อมจะได้รับข้อความแจ้งความผิดพลาดเป็นจำนวนมาก

    ท่านจะได้เรียนรายละเอียดเกี่ยวกับ QE พร้อมเบื้องหน้าและเบื้องหลังอย่างพิสดารในบทต่อๆ ไป แต่ในหัวข้อนี้ผู้เขียนเพียงอยากจะให้ท่านตั้งข้อสังเกตว่าอันที่จริงแล้ว LINQ ไม่ใช่ภาษาใหม่ และ QE ก็ไม่ใช่ภาษาใหม่ด้วยเช่นกัน คิวรีที่ท่านเห็นในบรรทัดที่ 16 ถึง 20 แท้จริงแล้วเป็นภาษา C# โปรดตระหนักว่าบัดนี้ท่านสามารถคิวรีข้อมูลจากแหล่งข้อมูลอะไรก็ได้จากบรรทัดคำสั่งภาษา C# โดยตรง สภาพการเช่นนี้เป็นสิ่งที่กรรมกรซอฟต์แวร์ทุกผู้ทุกนามล้วนใฝ่ฝันมานานมิใช่หรือ

    ภาพ 1-9: โค้ดภาษา C# ใช้งาน LINQ เพื่อทำงานตามโจทย์ว่าจงคิวรีข้อมูลในตาราง Products ในฐานข้อมูล AdventureWork2008 เฉพาะแถวที่รหัสสินค้ามากกว่า 2 และชื่อสินค้านำหน้าด้วย A จากนั้นนำผลลัพธ์ที่ได้ไปใส่ในโครงสร้างแบบ XML ในหน่วยความจำ

    สาเหตุที่ต้อง LINQ
    จากตัวอย่างในหัวข้อที่ผ่านมาท่านอาจนึกอัศจรรย์ใจว่าเพราะเหตุใดเพียงแค่การคิวรีตารางแล้วจับผลลัพธ์มาใส่ XML ไมโครซอฟต์ถึงกับต้องดิ้นรนประดิษฐ์เทคโนโลยีใหม่อย่าง LINQ หรือทำไมหนังสือเล่มนี้ถึงมีเนื้อหายืดยาวมากนัก เพราะดูท่าว่า LINQ คงไม่มีสติอะไร หากท่านคิดเช่นนั้นโปรดอ่านหัวข้อนี้ หากท่านไม่ติดใจจะอ่านข้ามหัวข้อนี้ไปก็ยังได้ ในหัวข้อนี้ผู้เขียนจะอธิบายว่าการเชื่อมต่อกับแหล่งข้อมูลด้วยวิธีเก่ามีปัญหาอย่างไร และ LINQ เป็นทางออกของปัญหาอย่างไร

    ปัญหาของ ADO.NET ก่อนหน้ามี LINQ ท่านจะใช้ ADO.NET เพื่อติดต่อกับฐานข้อมูล แท้จริง ADO.NET เป็นเพียงไลบรารีพื้นฐานของดอตเน็ต (.NET Framework Class Library ย่อ FCL) คือเป็นชุด API อันประกอบด้วยคลาสต่างๆ เช่น SqlConnection, SqlCommand, SqlReader, DataSet และ DataTable ฯลฯ ปัญหาของการใช้คลาสเหล่านี้คือท่านจะต้องอ้างถึงตาราง คอลัมน์ และแถวข้อมูลโดยตรง และปรกติในฐานข้อมูลจะมีตารางและคอลัมน์จำนวนมาก การดึงข้อมูลออกจากตารางมาใส่ในหน่วยความจำและการใส่ข้อมูลที่แก้ไขแล้วกลับคืนเข้าไปในตาราง ท่านต้องเขียนรายการคอลัมน์ยืดยาว มีการประเมินว่าทีมนักพัฒนาเสียเวลาไปกับกิจกรรมเหล่านี้คิดเป็นร้อยละ 30 ถึง 40 ของเวลาทั้งโครงการ

    ปัญหาของการใช้ ADO.NET ไม่ได้หยุดอยู่เพียงเรื่องประสิทธิภาพในการพัฒนา แต่ยังลามไปถึงคุณภาพของงานด้วย บ่อยครั้งที่นักเขียนโค้ดเผอเรอกำหนดชนิดข้อมูลผิดต้องไล่หาบักอย่างยากลำบาก บางครั้งอาจไม่พบความผิดปรกตินี้จนกว่าจะใช้งานจริงไปสักพัก

     ภาพ 1-10 แสดงโค้ดที่ใช้ ADO.NET ติดต่อฐานข้อมูล AdventureWork2008 เพื่อคิวรีตาราง Products ไล่เรียงข้อจำกัดต่างๆ ได้ดังนี้

    •    บรรทัดที่ 11 ถึง 13 โค้ดกำหนดการเชื่อมต่ออยู่ในสภาพสตริง ตัวแปลภาษาจึงไม่รับรู้หากกำหนดค่าผิด
    •    บรรทัดที่ 17 และ 18 เป็นคิวรีที่อยู่ในสภาพสตริง ตัวแปลภาษาจึงไม่รับรู้หากเขียนคิวรีผิด
    •    บรรทัดที่ 25 และ 26 ผู้เขียนโค้ดไม่รู้ว่าข้อมูลที่รับมาเป็นไทป์อะไรเพราะส่วนอินเทลลิเซนส์ไม่สามารถแสดงคำแนะนำใดๆ ได้
    •    หากเปลี่ยนดาต้าเบสเซอฟเวอร์ (เช่นเปลี่ยนจากเซอฟเวอร์ที่ใช้ในการทดสอบไปเป็นเซอฟเวอร์ที่ใช้งานจริง) โค้ดนี้จะเออเรอร์ทันที นอกเสียจากว่าจะแก้ไขส่วนกำหนดการเชื่อมต่อเสียก่อน

     ภาพ 1-11 แสดงโค้ดที่ใช้ LINQ ติดต่อฐานข้อมูล AdventureWork2008 เพื่อคิวรีตาราง Products ไล่เรียงการแก้ปัญหาต่างๆ ได้ดังนี้

    •    บรรทัดที่ 40-14 การกำหนดการเชื่อมต่ออยู่ในสภาพออพเจ็กต์ที่ตัวแปรภาษารับรู้
    •    บรรทัดที่ 43-44 คิวรีทำในภาษา C# โดยตรง ตัวแปรภาษาตรวจสอบวากยสัมพันธ์ได้
    •    บรรทัด 49-30 เนื่องจาก r เป็นออพเจ็กต์ ส่วน ProductID และ Name มีภาวะเป็นพร็อพเพอร์ตีสมาชิกของ r  อินเทลลิเซนส์จึงสามารถแสดงคำแนะนำได้
    •    หากเปลี่ยนดาต้าเบสเซอฟเวอร์ (เช่นเปลี่ยนจากเซอฟเวอร์ที่ใช้ในการทดสอบไปเป็นเซอฟเวอร์ที่ใช้งานจริง) ท่านไม่ต้องแก้ไขอะไรในโค้ดนี้เลย เพียงแต่เปลี่ยน O/RM ใหม่

     010

    ภาพ 1-10 โค้ดที่ใช้ ADO.NET ติดต่อฐานข้อมูล AdventureWork2008 เพื่อคิวรีตาราง Products

    011

    ภาพ 1-11 โค้ดที่ใช้ LINQ ติดต่อฐานข้อมูล AdventureWork2008 เพื่อคิวรีตาราง Products

     

    กรุณาติดตามตอนต่อไป

    ทำความรู้จัก LINQ [ตอน1]

    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน


    ตัวอย่างเนื้อหาของหนังสือ เรีนรู้ด้วยตนเอง LINQ

     linq   [ตอน1]

     

    ซอฟต์แวร์คือการผสมผสานระหว่างโค้ดและข้อมูล การพัฒนาซอฟต์แวร์คือการเขียนโค้ดเพื่อดำเนินการกับข้อมูล ในการเขียนโค้ดมีภาษาโปรแกรมให้เลือกจำนวนมาก ท่านจะเลือกภาษาอะไรขึ้นอยู่กับปัจจัยต่างๆ หลายประการ อาทิ ลักษณะของงานที่จะนำไปใช้ ความถนัดของท่านหรือทีมผู้พัฒนา ระบบปฏิบัติการที่จะนำไปใช้ หรือนโยบายที่บริษัทหรือลูกค้ากำหนด แต่ไม่ว่าจะใช้ภาษาอะไรลงท้ายก็ต้องเขียนโค้ดซึ่งเกี่ยวข้องกับข้อมูลอยู่ดี โดยข้อมูลอาจอยู่ในแหล่งต่างๆ หลายแบบ อาทิ เป็นไฟล์ในดิสก์ เป็นตารางในฐานข้อมูล เป็นเอกสารแบบ XML ที่มาจากเว็บ หรือบ่อยครั้งที่ในงานๆ เดียวต้องพาดพิงแหล่งข้อมูลทุกแบบที่ว่ามานี้ผสมกัน กล่าวโดยถึงที่สุดแล้วไม่ว่าจะพัฒนาซอฟต์แวร์โครงการไหนมักหนีไม่พ้นจะต้องข้องเกี่ยวกับการจัดการข้อมูลในรูปแบบใดรูปแบบหนึ่งเสมอ

    เมื่อท่านพัฒนาซอฟต์แวร์ท่านย่อมคาดหวังว่าสภาพแวดล้อมจะเอื้ออำนวยให้ท่านจัดการข้อมูลได้ง่าย คือมีเครื่องมือ หรือมีตัวช่วย หรือมีไลบรารี ที่จะทำให้ท่านเข้าถึงแหล่งข้อมูลได้ง่าย ไม่ต้องพัฒนาสิ่งพื้นฐานเอาเองจากศูนย์ทั้งหมด หากท่านพัฒนาซอฟต์แวร์บนดอตเน็ตเฟรมเวิร์ค (Microsoft .NET Framework ย่อ NETFX) ท่านย่อมสบายใจได้ เพราะ NETFX จัดเตรียมกลไกที่เกี่ยวข้องกับการจัดการข้อมูลมาให้อย่างอุดมตั้งแต่เวอร์ชันแรก และยิ่งไปกว่านั้นในเวอร์ชัน 3.5 NETFX ได้จัดเตรียม LINQ ซึ่งช่วยผสานการจัดการข้อมูลเข้ากับภาษา C# ได้ใกล้ชิดขึ้นจนเป็นเนื้อเดียวกัน

    ก่อนที่จะมุ่งเข้าสู่เนื้อหาที่เป็นรายละเอียดต่างๆ เกี่ยวกับ LINQ ในบทนี้ท่านจะได้เห็นภาพมุมกว้างโดยทั่วๆ ไปของ LINQ เสียก่อน เพื่อให้รู้ว่าอะไรอยู่ที่ใด ซึ่งจะช่วยให้ท่านมองเห็นความสัมพันธ์ระหว่างส่วนต่างๆ ได้ชัดขึ้นเมื่อท่านเรียนถึงเนื้อหาส่วนรายละเอียด

    แนะนำ LINQ เบื้องต้น
    เมื่อท่านพัฒนาซอฟต์แวร์ด้วยภาษา C# ต้องมีจุดใดจุดหนึ่งในโปรแกรมที่ท่านจำเป็นต้องนำข้อมูลในออพเจ็กต์บันทึกลงไว้ในฐานข้อมูล กระทำคิวรีต่อฐานข้อมูล และนำข้อมูลจากฐานข้อมูลมาใส่ไว้ในออพเจ็กต์อีกรอบหนึ่ง ยกตัวอย่างเช่นท่านทำเว็บไซต์ขายสินค้า ท่านรับข้อมูลการสั่งซื้อมาเก็บไว้ในออพเจ็กต์ (หรือออพเจ็กต์คอลเลคชัน เช่นลิสต์ หรือดาต้ากริตวิว) จากนั้นนำข้อมูลนี้บันทึกลงสู่ตารางในฐานข้อมูลไมโครซอฟต์ SQL เซอฟเวอร์ 2008 (Microsoft SQL Server version 2008 ย่อ SQL2008) ในสมัยที่ยังไม่มี LINQ ท่านอาจทำทุกอย่างผ่านทางการเชื่อมต่อตามลัทธิ ADO.NET จากนั้นกระทำคิวรีกับฐานข้อมูลเพื่อดึงข้อมูลจากตารางต่างๆ มาผสมกันให้ได้เป็นธุรกรรมที่สมบูรณ์ แล้วนำข้อมูลสุดท้ายมาใส่ในออพเจ็กต์ (หรือออพเจ็กต์คอลเลคชัน เช่นดาต้าเทเบิล หรือดาต้ากริตวิว)เพื่อนำไปฉายแสดงให้ผู้ใช้ได้ดูชมบนหน้าเว็บ

    โชคดีที่ภาษา C# สนับสนุน OOP อย่างถึงที่สุด ทำให้ท่านพัฒนางานด้วยหลักการ OOP ได้ง่ายและได้อย่างเต็มที่ แต่โชคร้ายที่ตัวจัดการฐานข้อมูลสัมพันธ์ (Relational Database Management System ย่อ RDBMS) อย่าง SQL2008 ไม่เป็นเช่นนั้น นักพัฒนาพยายามทำฐานข้อมูลให้เป็นออพเจ็กต์โดยห่อหุ้มฐานข้อมูลไว้ในคลาส (Object/Relational Mapping ย่อ O/RM) โดยใช้เครื่องมือเท่าที่มีอยู่ในขณะนั้น ยกตัวอย่างเช่นบทที่ 11 ในหนังสือ “เรียนรู้ด้วยตนเอง OOP C# ASP.NET” (ISBN 13:978-974-212-598-1 ย่อ LOYOOP) ผู้เขียนสาธิตวิธีทำเช่นนี้

    สภาพการก่อนมี LINQ
    การทำ O/RM ใน NETFX เวอร์ชันก่อน 3 แม้จะทำได้และใช้งานได้จริงแต่ก็ไม่สะดวก และมีจุดอ่อนที่ไม่สามารถนำโค้ดกลับมาใช้ใหม่ได้ซึ่งถือว่าเป็นเรื่องใหญ่ เพราะ Code Reusable คือหัวใจสำคัญของการเขียนโปรแกรมวัตถุวิธี หากจะแก้ให้ตรงประเด็นก็ต้องเปลี่ยนไปใช้ฐานข้อมูลแบบ OOP (Object-oriented Database Management System ย่อ ODBMS) โชคร้ายที่ในทางปฏิบัติทำไม่ได้ เพราะ ODBMS ไม่ได้รับความนิยม หน่วยงานต่างๆ ล้วนแล้วแต่ใช้ฐานข้อมูลแบบ RDBMS เช่น SQL2008, ออราเคิล PostgreSQL, DB2, MySQL ฯลฯ ด้วยกันทั้งสิ้น

    บริษัทไมโครซอฟต์รู้ว่าแนวทางของคอดด์นั้นดีเยี่ยมและผู้คนจะไม่เปลี่ยนใจไปจาก RDBMS ได้ง่ายนัก จึงจัดตั้งหน่วยงานขึ้นเพื่อค้นคว้าหาวิธีขจัดความยุ่งยากทางเทคนิคของการทำงานร่วมกันระหว่างฐานข้อมูลกับแอพลิเกชันที่พัฒนาด้วยภาษา C# ผลลัพธ์ที่ได้คือ LINQ ซึ่งช่วยให้การทำ OR/M ง่ายขึ้น โดยเฉพาะอย่างยิ่งหากท่านพัฒนาโดยอาศัย Visual Studio 2008 (VS2008) ท่านจะสามารถทำ OR/M ได้โดยไม่ต้องเขียนโค้ดแม้แต่บรรทัดเดียว เพียงลากและหยอด VS2008 จะผลิตโค้ดที่จำเป็นให้ได้อย่างครบถ้วน

    ความคิดดั้งเดิมของ LINQ คือต้องการให้การพัฒนาโปรแกรมภาษา C# ทำงานกับฐานข้อมูล SQL2008 ได้ง่ายขึ้นและเป็น OOP มากขึ้น เรียกว่า LINQ to ADO.NET แต่ต่อมาความคิดเกี่ยวกับ LINQ เริ่มคลี่คลายและขยายเป้าหมายออกไปกว้างกว่าตอนต้นมาก สุดท้าย LINQ กลายเป็นภาษาอเนกประสงค์ทำงานร่วมกับแหล่งข้อมูลได้สารพัด ยกตัวอย่างเช่น LINQ ที่ทำงานกับ SQL2008 เรียกว่า LINQ to SQL ส่วน LINQ ที่ทำงานกับแฟ้มแบบ XML เรียกว่า LINQ to XML และ LINQ ที่ทำงานกับออพเจ็กต์ เรียกว่า LINQ to Objects

    001 โปรแกรมจัดการฐานข้อมูลวัตถุวิธีหรือ ODBMS ไม่ได้รับความนิยม หน่วยงานต่างๆ ล้วนแล้วแต่ใช้ฐานข้อมูลแบบ RDBMS ภาพนี้คือโปรแกรม IBM DB2 Cube View 8.2

     

    มหาเอกะทฤษฏี

    ขณะที่สตีเฟน ฮอว์กินส์ กำลังหาทางรวมทฤษฏีทั้งหมดเข้าด้วยกันให้เป็นทฤษฏีเดียวที่อธิบายได้ทุกอย่างในเอกภพหรือ มหาเอกะทฤษฏี (Grand Unified Theory ย่อ GUT) แต่ยังหาทางทำไม่สำเร็จ ทีมงาน LINQ กลับประสบความสำเร็จในการทำให้ LINQ สามารถทำงานร่วมกับแหล่งข้อมูลอะไรก็ได้ (Unified Data Source ย่อ UDS) ดังนั้นท่านจึงสามารถเขียนโค้ด (ที่มีซินแท็กซ์คล้ายๆ ภาษา SQL) เพื่อคิวรีข้อมูลภายใน SQL2008 ในลิสต์หรือแม้กระทั่งในแฟ้มข้อมูลตัวหนังสือได้โดยใช้วิธีการเดียวกัน

    เนื่องจากคิวรีที่ว่านี้เป็นภาษาที่กลืนเข้าเป็นเนื้อเดียวกันกับภาษา C# จึงเป็นที่มาของชื่อ LINQ (อ่านว่าลิ้งค์เหมือน Link) ย่อมาจากคำว่า Language INtegrated Query หมายถึงคิวรีที่ถูกบูรณาเข้ากับภาษาเขียนโปรแกรม (ขณะนี้สนับสนุนเฉพาะภาษา C# 3.0 แล VB.NET 9.0 ขึ้นไปเท่านั้น) คำว่าบูรณาการในที่นี้หมายถึงผสานเข้าด้วยกันอย่างไม่มีรอยต่อ เหมือนเป็นภาษาซ้อนในภาษา ยกตัวอย่างเช่นสมมุติว่าท่านต้องการคิวรีข้อมูลในตาราง Production.Product ของฐานข้อมูล AdventureWorks2008 หากทำในโปรแกรม Microsoft SQL Server Management Studio (SSMS) จะมีคิวรีและได้ผลลัพธ์อย่างที่เห็นในภาพ 1-2 หากเขียนเป็นโปรแกรมภาษา C# และเชื่อมต่อฐานข้อมูลด้วย ADO.NET โค้ดจะเป็นอย่างที่เห็นในภาพ 1-3 และผลลัพธ์เป็นอย่างภาพ 1-4

    002

    ภาพ 1-2: การคิวรีตาราง Production.Product ในฐานข้อมูล AdventureWorks2008 ด้วยภาษา T-SQL

    003

    ภาพ 1-3: โค้ดภาษา C# แสดงตัวอย่างแสดงวิธีคิวรีข้อมูลในตาราง Categories ของฐานข้อมูล AdventureWorks2008 โดยใช้สถาปัตยกรรม ADO.NET

    004

    ภาพ 1-4: ผลลัพธ์จากการทำงานของโปรแกรมในภาพ ado sample code

     

    โปรดสังเกตว่าโค้ดในภาพ 1-3 ส่วนที่เป็นคิวรีคือบรรทัดที่ 17 และ 18 ซึ่งอยู่ในสภาพสตริง ภาวะเช่นนี้ไม่ถือว่าคิวรีถูกบูรณาการเข้ากับภาษา C# เพราะตัวแปลภาษา C# และ CLR (Common Language Runtime) ไม่รับรู้ว่าสตริงนี้เป็นคิวรี ในทางตรงกันข้าม ตัวแปรภาษา C# จะไม่แปลคิวรีนี้และจะไม่ตรวจสอบว่าคิวรีมีไวยากรณ์ถูกต้องหรือไม่ และ CLR ก็จะไม่ให้หลักประกันในการทำงานและไม่อาจแสดงข้อความรันทามน์เออเรอร์ (Runtime Error Message ย่อ REM) ที่ถูกต้องตรงกับความเป็นจริงได้

    ต่อไปลองมาดูตัวอย่างโค้ดภาษา C# ซึ่งทำหน้าที่เดียวกันและให้ผลลัพธ์เดียวกันทุกอย่าง แต่ใช้สถาปัตยกรรม LINQ บาง โค้ดเป็นอย่างที่เห็นในภาพ 1-5 คำว่า DataClasses1DataContext ในบรรทัดที่ 40 คือ O/RM ที่ผู้เขียนสร้างโดยการลากและหยอดไว้ก่อนแล้ว ส่วนที่เป็นคิวรีคือบรรทัดที่ 43 และ 44 โค้ดสองบรรทัดนี้เป็นส่วนหนึ่งของภาษา C# ดังนั้นตัวแปลภาษา C# จึงสามารถตรวจสอบได้ว่าเขียนผิดไวยากรณ์หรือไม่ และ CLR จะสามารถตรวจสอบความถูกต้องของไทป์ได้จึงแสดง RE ที่ถูกต้องตอนรันได้ ภาวะเช่นนี้ทำให้ LINQ เป็นคิวรีที่ถูกบูรณาเข้ากับภาษาเขียนโปรแกรมได้กลมกลืนเป็นเนื้อเดียวกัน

     

    005

    ภาพ 1-5: โค้ดภาษา C# ซึ่งทำหน้าที่เดียวกันและให้ผลลัพธ์เดียวกันทุกอย่าง แต่ใช้สถาปัตยกรรม LINQ


    กรุณาติดตามตอนต่อไป

    August 15

    เคล็ดลับการทำรายงานจากฐานข้อมูล

    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

     

    Reporting Services

    เคล็ดลับการทำรายงานจากฐานข้อมูล

    ลาภลอย วานิชอังกูร (laploy.com)

    โพสบล็อกตอนนี้จะขอเล่าประสบการณ์เมื่อผู้เขียนให้คำปรึกษาเกี่ยวกับ Business Intelligence ในหน่วยงานแห่งหนึ่ง แม้จะเป็นเหตุการณ์ที่ผ่านมานานแล้ว แต่บทเรียนย้งใช้ได้ดีอยู่จนถึงตอนนี้

    CrystalBall02

    Business Intelligence

    การใช้ BI มีมาหลายสิบปีแล้ว แต่ก่อนหน้าที่จะมีโปรแกรม MS-SQL การมีหรือการใช้ BI เป็นสิ่งที่ยุ่งยากและมีราคาแพง คงมีแต่หน่วยงานขนาดใหญ่เท่านั้นที่จะสามารถจัดหา BI มาใช้ได้ แต่การมาถึงของ SQL2008 ทำให้ทุกอย่างเปลี่ยนแปลงไป ปัจจุบันนี้หน่วยงานเล็กๆ ก็สามารถมี BI ใช้ได้

    ใน SQL2008 มีส่วนที่เกี่ยวข้องกับ BI โดยตรงสามส่วนคือ Integration services (SSIS) ทำหน้าที่รวบรวมข้อมูลจากหลายๆ แหล่งเพื่อนำมาสังเคราะห์ให้อยู่ในรูปแบบที่นำไปใช้ได้อย่างมีประสิทธิภาพ , Analysis services (SSAS) ใช้สร้าโมเดลสำหรับการวิเคราะห์ข้อมูลเช่น Cube และ Subspace และ Reporting services (SSRS) ใช้สร้างรายงานแบบ OLAP ซึ่งเป็นส่วนที่ท่านจะได้เรียนโดยละเอียดในบทนี้และบทต่อไป

    หากท่านติดตั้งโปรแกรม Microsoft Visual Studio 2008 (MSVS2008) ไว้และติดตั้งโปรแกรม SQL2008 พร้อมส่วนเสริม BI ท่านจะสามารถใช้ MSVS2008 พัฒนางาน BI ได้ทั้งครบถ้วนทั่งสามแบบคือ SSIS, SSAS และ SSRS

     

    สถาปัตยกรรม

    "เอเลฟอง" (ชื่อสมมุติ) คือหน่วยงานหนึ่งที่ผู้เขียนทำหน้าที่ให้คำปรึกษา เอเลฟองเป็นบริษัทสัญชาติฝรั่งเศสที่มีสาขาหลายร้อยแห่งอยู่ในหลายประเทศทั่วโลก ในส่วนไอทีหน่วยงานนี้ใช้เทคโนโลยีของไมโครซอฟต์เป็นหลัก ส่วนฐานข้อมูลแบ่งออกเป็นสองส่วน ฐานข้อมูลที่ประมวลผลธุรกรรมการเงินใช้ออราเคิล และฐานข้อมูลที่ประมวลผลธุรกรรมในฝ่ายการผลิตใช้ไมโครซอฟต์ SQL เวอร์ชัน 2000

    สาเหตุที่เอเลฟองใช้ดาต้าเบสเซอฟเวอร์เวอร์ชันเก่าขนาดนี้เพราะแอพลิเกชันที่ใช้อยู่ (ชื่อ Fx.Net) เป็นแอพลิเกชันที่พัฒนาขึ้นนานแล้ว โดยมีสำนักงานใหญ่ของเอเลฟองภาคพื้นเอเซียแปซิฟิก ว่าจ้างให้บริษัทใน "แบงกาลอร์" ทำหน้าที่ผลิตและดูแล Fx.Net เป็นแอพลิเกชันที่ถูกเขียนด้วยภาษา C# บนด็อตเน็ตเวอร์ชัน 1.1 และไมโครซอฟต์ SQL เวอร์ชัน 2000

    เอเลฟองผลิตสินค้าแต่ละเดือนหลายแสนชิ้น ข้อมูลปริมาณมหาศาลที่เกิดจากขั้นตอนต่างๆ ในการผลิตสินค้าถูกเก็บรวบรวมไว้ในฐานข้อมูลอย่างเป็นระบบ นี่คือโกดังสะสมข้อมูลหรือ "ดาต้าแวร์เฮาส์" (Data warehouse) ที่นอกจากจะจำเป็นต้องใช้ในกระบวนการผลิตแล้ว ผู้บริหารระดับต่างๆ ยังหวังว่าจะสามารถนำข้อมูลเหล่านี้มาเรียบเรียงให้อยู่ในรูปแบบที่ทำให้เกิด "ความเฉียบแหลมทางธุรกิจ" (Business Intelligence หรือนิยมเรียกย่อว่า BI)

     

    meet1

    นิทานแห่งสองนาคร

    แน่นอนว่าการนำข้อมูลที่กระจัดกระจายอยู่ในตารางต่างๆ นับร้อย มาเรียงร้อยให้อยู่ในรูปแบบที่ผู้บริหารสามารถอ่านเข้าใจได้จำเป็นต้องอาศัยการทำ "รายงาน" ในรูปแบบต่างๆ ปัญหาหลักคือ Fx.Net ทำรายงานได้ไม่ดีนักเนื่องจากสาเหตุสองประการ

    ประการแรกคือการเกิดเออเรอร์แบบหมดเวลา (Query time-out error) ปัญหานี้เกิดจากโปรแกรม Fx.Net เรียกใช้เฟรมเวิร์คของเอเลฟองและสตอร์โปรซีเจอร์ (Stored procedure) ที่ถูกกำหนดไว้แล้วโดยศูนย์กำหนดทิศทางด้านไอที (ทีเซ็นเตอร์ T-Center) ของเอเลฟองที่สำนักงานใหญ่ในฝรั่งเศส บ่อยครั้งเมื่อรายงานต้องทำคิวรีข้อมูลปริมาณมากๆ จะเกิด time-out แต่ผู้พัฒนาซอฟต์แวร์ที่แบงกาลอร์ไม่สามารถปรับเปลี่ยนโครงสร้างหลัก เพื่อแก้ปัญหานี้ได้ตามอำเภอใจ

    ประการที่สองรูปแบบของรายงานไม่สวย คือเป็นเพียงเท็กซ์ ไม่สามารถใส่ตารางหรือแผนภูมิได้ ปัญหานี้เกิดจากโปรแกรม Fx.Net (รวมถึงเฟรมเวิร์คของเอเลฟอง) เป็นโปรแกรมที่ออกแบบมาให้ทำงานในระดับการผลิต (shop floor) จึงขาดคุณสมบัติที่จำเป็นต้องใช้เพื่อทำรายงานระดับบริหาร

     

    ทางเลือกที่สาม

    ทางเลือกในการแก้ปัญหานี้มีสามทาง แต่ละวิธีต่างก็มีข้อดีข้อเสียในตัวของมันเองทั้งสิ้นดังนี้

    • สร้างแอพลิเกชันรายงาน : วิธีนี้คือเขียนแอพลิเกชันขึ้นแยกต่างหาก (โดยไม่ขึ้นกับเฟรมเวิร์คของเอเลฟอง) โดยใช้ภาษา C# 3.0 ซึ่งมีคุณสมบัติเอื้ออำนวยการการทำคิวรีได้ในตัว ข้อดีของวิธีนี้คือจะสามารถทำรายงานที่มีรูปแบบพิสดารอย่างไรก็ได้ตามใจชอบ ข้อเสียของทางเลือกนี้คือใช้เวลาและค่าใช้จ่ายสูง
    • ใช้โปรแกรม Crystal Report : คริสทัลรีพอร์ท (CR) เป็นโปรแกรมช่วยสร้างรายงาน ใช้งานง่าย มีประสิทธิภาพสูง สร้างรายงานที่ซับซ้อนมากๆ ได้โดยใช้เวลาสั้น ข้อเสียคือจะมีค่าใช้จ่ายในการซื้อมาใช้ และเป็นการเพิ่มเทคโนโลยีจากผู้ผลิตรายที่สามเข้าสู่ระบบ
    • ใช้ Reporting Services : รีพอร์ทติง เซอร์วิสเซส (RS) แม้จะมีลูกเล่นน้อยกว่า CR แต่ก็มีคุณสมบัติใกล้เคียงกัน จึงมีข้อดีคล้ายกัน แต่ไม่มีข้อเสียเรื่องค่าใช้จ่าย (ฟรี คือแถมมาพร้อมกับตัว SQL เซอฟเวอร์) และความกังวลเรื่องเทคโนโลยีจากผู้ผลิตรายที่สาม แต่มีข้อเสียอื่นคือไม่สามารถทำรายงานที่ซับซ้อนมากๆ ได้ และขาดคุณสมบัติเพื่ออำนวยความสะดวกบางอย่าง (เช่น การป้อนพารามิเตอร์วันเวลาโดยแสดงส่วนติดต่อผู้ใช้เป็นปฏิทิน)

     

    RadarCube_OLAP_ASP_NET_Direct_13818f

    รายงานแบบ OLAP

    ทางเลือกต่างๆ ที่ว่ามาสามอย่างข้างต้นถูกนำมาพิจารณาอย่างรอบคอบ และพบว่ามันไม่สามารถแก้ปัญหาหลักอย่าง time out ได้ ทางออกคือการจัดตั้งเครื่องแม่ข่ายอีกเครื่องหนึ่งเพื่อใช้ทำเป็นฐานข้อมูล OLAP การทำเช่นนี้จะปลดเปลื้องภาระของแม่ข่ายธุรกรรมหรือ OLTP จากความหน่วงของคิวรีรายงานได้ทั้งหมด

    รายงานแบบ OLAP คือการวิเคราะห์ข้อมูลแบบออนไลน์ (Online Analytical Processing) OLAP ไม่ใช่แค่รายงานตายตัวแบบในกระดาษ แต่เป็นรายงานที่มีพลวัตและมีหลายมิติ ช่วยให้ผู้ใช้ได้รับข้อมูลที่ทันสมัยเพราะเปลี่ยนแปลงไปตามความเป็นจริง (real time) ในลักษณะต่างๆ เช่นตารางแสดงข้อมูลไขว้ (Pivot Table) หรือตารางแบบเมตริกซ์ (Matrix) ตารางรายงานที่ข้อมูลแปรผันได้ตามการป้อนเงื่อนไข (Report Parameter) รายงานที่เจาะลึกได้ (Drill Down) หรือรายงานที่โยงไปยังรายงานย่อยที่มีรายละเอียดอ้างอิงได้ (Drill through) เป็นรายงานบนหน้าจอที่มีปฏิสัมพันธ์กับผู้ใช้ หรือจะพิมพ์ลงกระดาษก็ได้

    รายงานแบบ OLAP มักเป็นการวิเคราะห์ข้อมูลกับคลังข้อมูลหรือข้อมูลสะสม (data mining) เพื่อการทำนายแนวโน้ม เพื่อใช้เป็นเครื่องมือช่วยการบริหารและพัฒนากระบวนการต่างๆ ของธุรกิจให้มีประสิทธิภาพมากขึ้น อย่าสับสนระหว่าง OLAP กับ OLTP เพราะอย่างหลังคือการทำธุรกรรมออนไลน์ (Online Transaction Processing) ที่เป็นคนละเรื่องกัน ฐานข้อมูลของงาน OLTP จะมีขนาดเล็กกว่าและมีพลวัตสูง ส่วนฐานข้อมูลของ OLAP จะมีขนาดใหญ่กว่ามากแต่มีพลวัตต่ำหรือถึงกับไม่มีเลย

    การใช้เซิฟเวอร์อีกตัวทำเป็น OLAP มีข้อเสียอยู่ที่รายงานจะไม่ใช่ข้อมูลอัพเดตตามเวลาจริง แต่จะมีช่วงล้าสมัยเล็กน้อย ขึ้นอยู่กับว่าเราตั้งให้แม่ข่ายฐานข้อมูล OLTP คัดลอกข้อมูลในฐานข้อมูลมายังแม่ข่าย OLAP ถี่เพียงใด การกำหนดความถี่ต้องพิจารณาอย่างรอบคอบ เพราะถ้าทำถี่เกินไป (คือทุกชั่วโมง) อาจมีผลให้โหลดแม่ข่ายฐานข้อมูล OLTP มากเกินไป แต่ถ้าถี่น้อยไป (ทุกสัปดาห์) รายงานอาจล้าสมัยแล้ว

     

    ข้อดีของการทำรายงานด้วย SSRS

    ต่อไปนี้เป็นรายการแสดงข้อดีต่างๆ ของการทำรายงานด้วย SSRS

    • ใช้เพลตฟอร์มมาตรฐาน: ไฟล์รายงานเป็นภาษา RDL จึงเป็นเพียงแท็กซ์ไฟล์ (text file) ธรรมดา เปิดด้วยแท็กซ์เอดิเตอร์อะไรก็ได้ หากใช้โปรแกรม MSVS2008 สร้างจะสะดวกมาก เพราะมีเครื่องอำนวยความสะดวกให้หลายอย่าง ไม่ต้องเขียนภาษา RDL ขึ้นเอง
    • ค่าใช้จ่าย: SSRS แถมฟรีมากับ SQL2008 ดังนั้นหากท่านมีใบอนุญาตการใช้งาน SQL2008 ท่านจะสามารถใช้ SSRS ทำรายงานได้โดยไม่มีค่าใช้จ่ายอื่นเพิ่มเติมอีก
    • ดูได้ทั่วโลก: เมื่อสร้างรายงานเสร็จและทำดีพลอยแล้วรายงานจะอยู่ในเว็บเซอฟเวอร์ ผู้ใช้สามารถใช้โปรแกรมเว็บเบราว์เซอร์เปิดดูได้พร้อมกันทุกคนจากทั่วโลก
    • รายงานฝังตัว: ท่านอาจให้ผู้รับเปิดรายงานโดยใช้เว็บเบราว์เซอร์ หรือจะดึงรายงานไปฝังไว้เป็นส่วนหนึ่งของแอพลิเกชันที่ท่านสร้างไว้แล้วให้ผู้ใช้รายงานเปิดจากภายในแอพลิเกชันก็ได้
    • การรับรายงาน: รายงานที่ผู้ใช้เปิดเป็นรายงานสด ข้อมูลในรายงานเป็นข้อมูลที่อัพเดตตามเวลาจริงขณะนั้นๆ หรือท่านสามารถกำหนดให้ SSRS อัพเดตข้อมูลเฉพาะบางช่วงเวลาก็ได้ (เช่นอัพเดตวันละหนตอนตีสามเพราะเป็นเวลาที่ปริมาณการจราจรของข้อมูลคับคั่งน้อยที่สุด)

     

    wpe5

    Crystal Report (CR) เป็นโปรแกรมประยุกต์แบบ BI จากบริษัท Business Object ซึ่งมีฐานะเป็นบริษัทลูกของ SAP โปรแกรม CR มีมานานแล้วแต่ไม่เด่นดัง จนกระทั่งไมโครซอฟต์นำมาผนวกไว้กับเครื่องมือพัฒนาโปรแกรมวิสชวลเบสิก ทำให้ CR เป็นที่รู้จักและกลายเป็นมาตรฐาน โดดเด่นกว่าโปรแกรมสร้างรายงานอื่นๆ ที่มีอยู่เป็นจำนวนมาก

    ในยุค MS-SQL 7 และ MS-SQL 2000 ผู้ที่ต้องการสร้างรายงานซับซ้อนสวยงามจำเป็นต้องนำ CR มาใช้ร่วมกับ MS-SQL เพราะ SSRS ในสมัยนั้นมีความสามารถที่จำกัด แต่พอถึงยุค SQL2005 และ SQL2008 สถานการณ์ก็เปลี่ยนไป เพราะ SSRS ถูกพัฒนาอย่างต่อเนื่องให้มีประสิทธิภาพสูงขึ้น แม้ SSRS จะมีความสามารถด้อยกว่า CR ในบางด้าน แต่ผู้ใช้ CR ร่วมกับ SQL2008 ก็เริ่มมีจำนวนลดลง เพราะในหลายๆ กรณี SSRS มีความสามารถเพียงพอที่จะตอบสนองความต้องการได้ และที่สำคัญคือผู้ใช้ไม่ต้องจัดซื้อ SSRS เพิ่มเติมเพราะมันถูกผนวกอยู่ใน SQL2008 ผู้ใช้จึงสามารถติดตั้งใช้งาน SSRS ได้ทันทีโดยไม่มีค่าใช้จ่ายเพิ่มเติม

     

    August 14

    ดัชนีหนังสือ DabaBase [6]


    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

    ดัชนีหนังสือ DabaBase [6]

    วันนี้ทำดัชนีหนังสือ DabaBase เสร็จเรียบร้อยแล้ว ขอนำมาโพสไว้ที่นี่ให้ดูเล่นหน่อยนะครับ

    ฐานข้อมูล 48, 53 , 111, 141, 208, 333
    ฐานข้อมูลเพื่อช่วยการตัดสินใจ 79
    ฐานข้อมูลแบบไคลเอนต์เซิร์ฟเวอร์ 78
    ฐานข้อมูลแบบคลังข้อมูล 79
    ฐานข้อมูลแบบผสมผสาน 80
    ฐานข้อมูลในงานธุรกรรม 78
    ฐานข้อมูลรายงาน 79
    ฐานข้อมูลสัมพันธ์ 118
    ดร. สตีฟ คุณน์ 354
    ดร. อี เอฟ คอดด์ 65
    ดรรชนี 108, 210
    ดอทเน็ตเฟรมเวิร์ก 784
    ดัชนี 91, 208, 214, 218, 221, 224, 235, 313, 334
    ดัชนีเผื่อเลือก 210
    ดัชนีแบบคลัสเตอร์ 220, 312
    ดัชนีที่ไม่เป็นคลัสเตอร์ 226, 312
    ดัชนีร่วม 211
    ดัชนีหลัก 209
    ดาต้าเซต 61, 666
    ดาต้าเบส 48
    ดาต้าเบสเซอฟเวอร์ 185
    ดาต้าเบสเอ็นจิน 169, 182
    ดาต้าเพจ 211
    ดาต้าโมเดล 247
    ดาต้าคอลเล็กชั่น 506, 533, 542
    ดาต้ารีเจียน 667
    ดีพลอยเมนต์ 700
    ต้นไม้ไบนารี 108
    ตรรกะ 371, 417
    ตรรกะบูลีน 220
    ตัวเรียงข้อมูล 429
    ตัวเลือกตอนเริ่ม 195
    ตัวเสริมโปรเจ็กชั่น 430
    ตัวแปร 277, 278, 296, 362, 364, 487
    ตัวแปร Global 294
    ตัวแปรแบบตาราง 280, 649
    ตัวแปรแบบอะนอนนิมัส 861
    ตัวแปรชี้แถว 360
    ตัวแปรชี้ทูเพิล 360
    ตัวแปรย่าน 354
    ตัวแปรสตริง 610
    ตัวแปลภาษา C# 859
    ตัวกระทำ 325
    ตัวกระทำฉายแสดง 388
    ตัวกำหนด 122, 146
    ตัวคงค่า 454
    ตัวจัดกลุ่ม 429
    ตัวจำกัด 394
    ตัวดำเนินการ 380, 383, 387
    ตัวดำเนินการเรียงข้อมูล 433
    ตัวดำเนินการจัดกลุ่ม 431
    ตัวดำเนินการตัดข้อมูลซ้ำ 430
    ตัวดำเนินการทางเซต 407
    ตัวดำเนินการบูลีน 396
    ตัวดำเนินการพีชคณิต 390, 402
    ตัวดำเนินการพีชคณิตเชิงสัมพันธ์ 429
    ตัวตั้ง 401
    ตัวตัดข้อมูลซ้ำ 429
    ตัวถูกดำเนินการ 380
    ตัวนับอัตโนมัติ 62
    ตัวประมวลผลแบบขนาน 62
    ตัวประมวลผลรายงาน 736
    ตัวหาผลรวม 429
    ตัวอย่าง 402
    ตารางเสมือน 245, 557
    ตารางแบบรีเลชั่น 391
    ตารางแม่ 106, 336
    ตารางแฮช 210
    ตารางไม่ผูกพัน 107
    ตารางช่วย 245
    ตารางชั่วคราว 245, 469, 557
    ตารางธุรกรรม 133
    ตารางผกผัน 180
    ตารางผูกพัน 107
    ตารางลูก 106, 336
    ตีนกา 102
    ทมยันตี 223
    ทรัพยากร 90
    ทริกเกอร์ 577
    ทูเพิล 48, 354, 359, 391, 398, 400, 413, 423, 427, 434
    ทูเพิลกำพร้า 435
    ทูลทิป 523
    ธุรกรรมแบบออนไลน์ 56
    นอร์มัลไลเซชั่น 65, 88 , 91 , 118
    นอร์มัลไลซ์ 253
    นอร์มัลฟอร์ม 118
    นอร์มัลฟอร์มแบบฉาย 152
    นอร์มัลฟอร์มแบบบอยซ์-คอดด์ 125
    นอร์มัลฟอร์มกุญแจโดเมน 126
    นอร์มัลฟอร์มระดับที่สอง 125
    นอร์มัลฟอร์มระดับที่สาม 125
    นอร์มัลฟอร์มระดับที่สี่ 125
    นอร์มัลฟอร์มระดับที่หนึ่ง 125
    นอร์มัลฟอร์มระดับที่ห้า 126
    นักเขียน 110
    นิพจน์ 355, 438, 735
    นิพจน์เงื่อนไข 411
    นิพจน์เชิงเส้น 421
    นิพจน์แคลคูลัส 360
    นิพจน์ซ้อนนิพจน์ 384
    นิพจน์ตารางร่วม 341
    นิพจน์บูลีน 394
    นิพจน์พีชคณิต 371
    นิยามกุญแจ 108
    นิยามกุญแจเอกลักษณ์ 109
    นิยามกุญแจนอก 109
    นิยามนอร์มัลฟอร์ม 125
    นิยายนักสืบ 135
    นิ้วมือชี้ 450, 470
    บลูเรย์ 82
    บิตแมป 210
    บูรณภาพของข้อมูล 88, 90
    บูรณภาพสัมพันธ์ 114
    บูรณภาพอ้างอิง 437
    บูลีน 851
    ปฏิสัมพันธ์กับผู้ใช้แบบรูปภาพ 60
    ประสิทธิภาพของดัชนี 232
    ปุ่มลัด 183, 194
    ผลคูณคาร์ทีเซียน 393, 399, 412, 419, 421, 427
    ผู้ให้บริการฐานข้อมูล 56
    ผู้ออกแบบฐานข้อมูล 92
    พจนานุกรม 214
    พอยน์เตอร์ 216, 221, 235, 531
    พันธ์ทิพย์ 81
    พารามิเตอร์ 594, 611, 622, 626, 643, 725, 771, 863
    พีชคณิต 245, 386
    พีชคณิตเชิงสัมพันธ์ 380
    พีชคณิตเชิงสัมพันธ์เพื่อแสดงข้อจำกัด 436
    พีชคณิตเชิงสัมพันธ์ภาคเซต 405
    พีชคณิตเชิงสัมพันธ์ภาคแบ็ก 422
    พีชคณิตกร 509
    ฟลอปปีดิสก์ 82
    ฟังก์ชัน 305, 651, 771
    ฟาเรนโฮต์ 254
    ฟิลด์ 48
    ภาษา C# 357, 361, 493, 508, 608, 620, 640, 773, 792, 850
    ภาษา QBE 355
    ภาษาเบสิก 275
    ภาษาซี 274
    ภาษาอัลฟา 354
    ภาษีมูลค่าเพิ่ม 145
    มหาวิทยาลัยแคลิฟอร์เนียวิทยาเขตเบิร์กลีย์ 354
    มัลติเทียร์ 167
    มูฮัมมัด บิน มูซา อัล-ควาริซมิ 386
    ย่อหน้า 198, 297
    ยูเนียน 388, 391, 408, 412, 413, 415, 423, 425, 500
    รหัสประจำแถว 222
    ร้อยละ 344, 749
    รายงาน 735
    รีเคอร์ชั่น 492
    รีเคอร์ซีฟ 342, 497, 644
    รีเคอร์ซีฟแบบไฮราร์คีย์ 499
    รีเลชั่น 383, 384, 398, 405, 408, 413, 415, 418, 426, 427
    ลงทะเบียน CLRR 802
    ลงทะเบียนตัวแปรระบบ 794
    ลบตาราง 318
    ลำดับการทำงาน 372
    ลิสต์ 434
    ลูกศร 520
    ลูกศรสี่ด้าน 669
    ลูป 337
    วรรณยุกต์ 215
    วันเวลา 344
    วากยสัมพันธ์ 357, 387, 495, 574, 578
    วิซาร์ด 533
    วิดีโอ 84
    วิทยาการสารสนเทศ 54
    วิธีเขียนคิวรีแบบออฟไลน์ 197
    วิธีสร้างกลุ่มใหม่ 714
    วินโดว์ฟังก์ชั่น 562
    วิว 61, 371, 532, 572
    วิววัตถุ 61
    สเกลาร์ 277, 464, 641, 653
    สกุลเงิน 141
    สตริง 337, 771
    สตาร์วอร์ส 409
    สถาปัตยกรรมแบบเน้นเซอร์วิส 167
    สถาปัตยกรรมไคลเอนต์/เซอฟเวอร์ 163
    สถาปัตยกรรมไคลเอนต์/เซอฟเวอร์สามชั้น 166
    สพร็อกซ์ 543, 581, 600, 620, 631, 792
    หน่วยในเซต 245
    หน้าต่างเครื่องมือ 199
    หนึ่งต่อศูนย์ 209
    หนึ่งต่อหนึ่ง 209
    หนึ่งต่อหลาย 209
    หลักการหาวิธีดีที่สุด 512
    ห้องสมุด 223
    องค์กร 50
    อนุประโยค 362
    ออพเจ็กต์ 71, 91 , 610, 859
    ออพเจ็กต์เอ็กซ์พลอเรอร์ 183, 184
    ออพเจ็กต์วิว 575
    ออฟไลน์ 197
    ออราเคิล 96, 337
    อะตอม 251, 256
    อะนอมาลิ 119, 157
    อะนอมาลิของการแทรกข้อมูล 120
    อะนอมาลิของการลบข้อมูล 121
    อะนอมาลิของการอัปเดตข้อมูล 121
    อะมีบา 261
    อัลกอรึทึม 215
    อาร์เรย์ 64, 127, 253
    อิทาเนียม 54
    อินเตอร์เซ็กชั่น 408, 419
    อินเตอร์เซ็กต์ 388, 392, 417, 425, 426
    อินเทล 54
    อินเทอร์เน็ตแอปพลิเคชั่น 78
    อินพุตพารามิเตอร์ 623
    อินสแตนซ์ 169, 773
    อีเมล 176, 580
    อีควิจอยน์ 490
    อุปกรณ์บันทึกข้อมูล 84
    ฮาร์ดแวร์ 54, 698
    ฮาร์ดดิสก์ 50, 80 , 83 , 119, 131, 208
    ฮีป 221, 226
    ฮีสโตแกรม 511


    ดัชนีหนังสือ DabaBase [6]


    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

    ดัชนีหนังสือ DabaBase [6]

    วันนี้ทำดัชนีหนังสือ DabaBase เสร็จเรียบร้อยแล้ว ขอนำมาโพสไว้ที่นี่ให้ดูเล่นหน่อยนะครับ



    เครื่องมือช่วยวิเคราะห์คิวรี 506
    เครื่องหมาย -- 200
    เครื่องหมายดอกจัน 362
    เคอร์เซอร์ 342, 451, 484, 491
    เซต 244, 257, 335, 340, 341, 356, 391, 405, 422, 423, 427, 428, 449
    เซตย่อยทางแนวตั้ง 396
    เซตว่าง 437
    เซลเซียส 254
    เซอฟเวอร์ 164
    เซอฟเวอร์ฟาร์ม 684
    เซอร์วิส 166, 177, 178
    เซิร์ฟเวอร์ 178
    เต้าหู้ 475
    เทราไบต์ 684
    เทอร์นารี 56
    เธต้าจอยน์ 398, 399, 414, 419, 428, 490
    เนมสเปส 610, 787
    เพจ 213, 312
    เพจข้อมูล 213
    เพจดัชนี 213
    เพลย์สเตชั่น 81
    เมเนจโค้ด 172, 785
    เมตาดาต้า 56, 805
    เมธอด 610, 851, 863
    เมนเฟรม 95
    เรย์มอนด์ เอฟ บอยซ์ 145
    เรียงข้อมูล 331, 627
    เว็บเบราเซอร์ 693
    เว็บแอปพลิเคชั่น 56, 173
    เอ็กเซล 180, 181
    เอกซ์เทนท์ 211, 312
    เอ็นทิตี้ 55, 249
    เอ็นทิตี้อิสระ 107
    เออร์เรอร์ 464
    เอาต์พุตพารามิเตอร์ 624
    แคช 514, 515, 707
    แคลคูลัสเชิงสัมพันธ์ 354
    แคลคูลัสภาคแสดง 354
    แคลคูลัสภาคโดเมน 355
    แคลคูลัสภาคตาราง 355
    แคลคูลัสภาคทูเพิล 354
    แจ้งเตือน 177
    แถบไตเติ้ล 201
    แถว 48
    แถวข้อมูลกำพร้า 466
    แทรกแถว 214
    แบ็ก 356, 422, 423, 425
    แบตช์ 302, 326, 521
    แบบจำลองข้อมูลแบบวัตถุ 71
    แบบจำลองข้อมูลสำหรับธุรกรรม 60
    แบบจำลองฐานข้อมูลแบบเครือข่าย 68
    แบบจำลองฐานข้อมูลแบบวัตถุวิธี 72
    แบบจำลองฐานข้อมูลแบบวัตถุสัมพันธ์ 72
    แบบจำลองฐานข้อมูลสัมพันธ์ 69, 70 , 146
    แผนการคัดลอก 174
    แผนการทำงาน 506
    แผนการทำงานจริง 514
    แผนปลีกย่อย 511
    แผนภูมิต้นไม้ RAE 416
    แผนภูมิต้นไม้ของตัวประมวลผลคิวรี 509
    แผนภูมิวิเคราะห์การปฏิบัติงานของคิวรี 237
    แผนภูมิอีอาร์ 55, 102, 135, 141, 146
    แมทริกซ์ 555
    แอกริเกต 291, 342, 343, 560
    แอตทริบิวต์ 48, 360, 383, 385, 389, 393, 394, 397, 400, 403, 410, 415, 418, 420, 428
    แอปพลิเคชั่น 60, 89 , 95 , 165, 592
    แอสเซมบลี 784
    โกดังข้อมูล 79
    โครงสร้าง 88
    โครงสร้างแบบต้นไม้ 208
    โครงสร้างแบบต้นไม้ไบนารี 108
    โครสร้างต้นไม้ 227
    โจทย์ 256
    โซลิดสเตทดิสก์ 82
    โซลูชั่น 663
    โปรเจ็กชั่นลิสต์ 433
    โปรเจ็กต์ 610
    โปรแกรมจัดการฐานข้อมูล 54
    โปรแกรมประยุกต์ 118
    โปรแกรมวิเคราะห์คิวรี 368
    โปร่งใส 60
    โพรซีเยอร์ 250
    โมเลกุล 251, 254, 256
    โรเซนเบอร์เกอร์ 73
    โหนด 211
    โหนดที่ไม่ใช่ระดับใบ 217
    โหนดระดับใบ 217
    โหนดราก 216
    โหนดลูก 216
    โหมดแม่ 216
    ไคลแอนเซอฟเวอร์ 165
    ไคลแอนท์ 164, 175, 693
    ไบนารี 56, 64 , 214
    ไพรมารีคีย์ 70
    ไฟล์เก็บรายงาน 662
    ไวยากรณ์ 452, 695
    ไอโซเมอร์ 254
    ไอคอน 520, 528, 535, 575
    ไอบีเอ็ม 83, 354, 386
    ไฮราร์คีย์ 499
    กฎของเซต 81
    กฎของมัวร์ 80
    กฎทางธุรกิจ 92, 93 , 94
    กราฟแท่ง 755
    กราฟวงกลม 756
    การเขียนคิวรีแบบออฟไลน์ 197
    การเปลี่ยนชื่อ 383, 418
    การแบ่งคอลัมน์ 252
    การกระจายคำในไวยากรณ์ 508
    การคิวรี 88
    การคูณ 389, 393
    การจอยที่กำหนดเงื่อนไขได้ 399, 414
    การจอยน์ 449, 465
    การจอยน์แบ็ก 428
    การจอยน์แบบสมมาตร 400
    การจอยน์สามัญ 413, 434
    การฉายแสดงแถวข้อมูล 324
    การดึงซับเซตของแถว 359
    การดึงซับเซตของคอลัมน์ 362
    การตัดยอดข้อมูล 174
    การประมวลผลแบบขนาน 81
    การผูกแอกกริเกต 509
    การพาดพิง 122
    การพาดพิงเป็นวงรอบ 124, 152
    การพาดพิงทางอ้อม 122
    การพาดพิงบางส่วน 124
    การพาดพิงสมบูรณ์ 123
    การพาดพิงหลายค่า 124
    การรักษาความปลอดภัย 171
    การลบ 389
    การวิเคราะคิวรี 506
    การสแกนดัชนีแบบคลัสเตอร์ 512
    การหาร 389, 400, 401
    การอัปเดตข้อมูล 88
    กุญแจ 209, 407
    กุญแจเสนอ 123, 145
    กุญแจเอกลักษณ์ 108, 109
    กุญแจแทน 109
    กุญแจคลัสเตอร์ 224
    กุญแจนอก 107, 209
    กุญแจผสม 131, 135, 136
    กุญแจร่วม 113
    กุญแจหลัก 107
    ข้อบังคับ 114
    ข้อมูล 53, 56
    ข้อมูลแบบเวลา 63
    ข้อมูลกำพร้า 121
    ข้อมูลที่มีพลวัต 133
    ข้อมูลสถิต 133, 138
    คลัสเตอร์ 53, 61 , 174, 214, 221
    คลาส 851
    ความปลอดภัย 572
    ความสัมพันธ์ 250, 380
    ความสัมพันธ์แบบจำแนกได้ 107, 135
    ความสัมพันธ์แบบจำแนกไม่ได้ 107, 112, 135, 136
    ความสัมพันธ์แบบศูนย์และหนึ่ง 105
    ความสัมพันธ์แบบหนึ่งต่อหนึ่ง 103
    ความสัมพันธ์แบบหนึ่งต่อหลาย 104, 112, 127, 132, 138, 140
    ความสัมพันธ์แบบหลายต่อหนึ่ง 134, 137, 138, 142, 144
    ความสัมพันธ์แบบหลายต่อหลาย 104, 139
    คอดต์ 246, 354, 383
    คอมโพเนนท์ 179
    คอมไพล์ 796
    คอมมานด์ไลน์ 796
    คอลเลชั่น 215
    คอลเลชั่นภายใน (BIC) 736
    คอลัมน์ที่มีข้อมูลซ้ำกัน 128, 131
    คอลัมน์ผสม 328
    คาเมลเคส 299
    คาเมลโนเตชั่น 642
    ค่าโดยปริยาย 195, 724
    ค่าประเมิน 512
    คาร์ทีเซียน 336, 341, 366
    ค่าสะสม 343
    คำจาร์กอน 95, 121, 126
    คำสั่งเงื่อนไข 282
    คิวบ์ 181, 550, 689
    คิวรี 53, 119, 139, 182, 196, 197, 201, 237, 250, 259, 316, 337, 340, 358, 363, 863
    คิวรีเอดิเตอร์ 199
    คิวรีแบบประจำและแบบจร 88
    คิวรีซ้อนคิวรี 451, 465, 470
    คิวรีย่อย 260, 341, 346, 446, 450, 464, 561
    คิวรีย่อยเพื่อตรวจหาค่า 456
    คิวรีย่อยที่เกี่ยวพันกัน 457
    คิวรีย่อยที่ให้ค่าเป็นชุด 456
    คิวรีย่อยที่คืนค่าเดี่ยว 453
    คิวรีหลัก 446, 464
    คิวรีหลายชั้น 445, 453, 464, 465, 480
    คิวรีออปติไมเซอร์ 510
    คีย์เวิร์ด 296
    คุก ไร 73
    จอยน์ 139, 334, 365, 369, 389, 397, 418, 452, 480
    จอยน์สามัญ 397
    จาวา 72, 246, 268
    ชนิดข้อมูล 62
    ชนิดข้อมูลซับซ้อน 64
    ชื่อเล่น 363, 470
    ซอฟต์แวร์ 54, 90
    ซอร์สโค้ด 796
    ซับเซต 358
    ซับเซตทางแนวนอน 395
    ซับคิวรี 446
    ซานโฮเซ่ 65
    ซิกมา 359
    ซีเควล 53
    ซีเล็กชั่น 411, 420, 421
    ซีพียู 54


    ดัชนีหนังสือ DabaBase [5]


    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

    ดัชนีหนังสือ DabaBase [5]

    วันนี้ทำดัชนีหนังสือ DabaBase เสร็จเรียบร้อยแล้ว ขอนำมาโพสไว้ที่นี่ให้ดูเล่นหน่อยนะครับ



    RA 364 373 393                
    RAE 359 362 364 370 381 387 395 410 415    
    RAET 416                    
    RAID 83                    
    RAISERROR 580                    
    Random Access Memory (RAM) 82                    
    Range Variable 354 862                  
    RANK 824                    
    Ranking Functions 564                    
    RC 365 373                  
    RCE 355 361 363 364 365 368          
    RDBMS 61 65 66 162 247 451          
    RDF 663                    
    RDG 712                    
    RDL 695                    
    RE 507                    
    Real time 60 180 686                
    Record 67 247                  
    Record Number 249                    
    record set 280                    
    Recursion 492                    
    Recursive function 492                    
    Redundant Array of Inexpensive Disks 83                    
    Referential Integrity 114 437                  
    Refresh 61                    
    Regex 337                    
    Region 550                    
    Registered Servers 185                    
    relation 56 247 250 380              
    Relation Constraint 436                    
    Relation Key 248                    
    Relation Table 391                    
    Relational Database Management Model 66                    
    Relational Database Management System (RDBMS) 65 162                  
    Relational Database Model 69                    
    Relational Engine 507                    
    Relative Algebra Expression Tree 416                    
    release 701                    
    RENAME 381 385 393 398 404            
    REPLACE 339 819                  
    REPLICATE 820                    
    replication 517                    
    Replication Schema 174                    
    Replication Service 168 174                  
    Report Cache 707                    
    Report Data (RD) 665                    
    Report Data Group 712                    
    Report Definition File 663                    
    Report Definition Language 695                    
    Report History 705                    
    Report Manager 694                    
    Report Parameter Properties 723                    
    Report Processor 736                    
    Reporting Services 180                    
    Reporting Services Configuration Manager 703                    
    Reqular Expression 337                    
    Resource Monitor 169                    
    Restrict 381 394                  
    Result 325                    
    Result Set 383                    
    RETRIEVE 354                    
    RETURN 630 649 653                
    Return Value 771                    
    REVERSE 820                    
    RID 222 226                  
    RID Lookup 218 227                  
    RIGHT 821                    
    Right Outerjoin 435                    
    RK 248                    
    ROLLUP 347 550                  
    Root node 216                    
    Row Group Pane (RGP) 712                    
    Row offset 222                    
    row set 280                    
    Row Set Stored Procedure 648                    
    Row Set Sub-Query 456                    
    ROW_NUMBER 563 827                  
    Row-overflow 312                    
    RSSQ 456                    
    RTE 289 290                  
    RTRIM 822                    
    Safari 693                    
    scalar 251                    
    Scalar Function 641                    
    Scalar Sub-Query 453                    
    scheduled 177                    
    SCHEMABINDING 574                    
    schemas 269                    
    scope 294                    
    Script Table as 202                    
    Scroll 485                    
    SCSI 83                    
    SE 507 513 531                
    SELECT 233 280 324 331 361 381 473 495 654    
    Self-join 258 264                  
    Sequence Tree 508                    
    Server Farm 684                    
    Server Group 186                    
    Server Management Object 176                    
    Server Resources Package 175                    
    Server Type 183                    
    Service Broker 168 173 174                
    Service Layer 166                    
    Service-Oriented Architecture 167                    
    session 173                    
    SET 280                    
    Set Operator 407                    
    Set Relational Algebra 405                    
    Shared Data Source 768                    
    SINT 63                    
    smalldatetime 305                    
    Smalltalk 72                    
    SMO 176                    
    SMTP 178                    
    Snapshot 704                    
    SOA 167 181                  
    Solaris 167                    
    Solid-State Disk 82                    
    solution 661                    
    SOUNDEX 822                    
    sp_executesql 594                    
    sp_help 316                    
    sp_recompile 515                    
    SPACE 823                    
    Specification 256                    
    spreadsheet 96                    
    SQEC 457                    
    SQL 354                    
    SQL Injection 595                    
    SQL Mail 178                    
    SQL Management Studio 182                    
    SQL Server Agent 177                    
    SQL Server Report Database 691                    
    SQL2000 176 223                  
    SQL2005 276                    
    SQL2008 53 103 175 182 200 213 219 233 235 333 417
    SQL2008 Express Edition 183                    
    SQL2010 272                    
    SQL7 176                    
    SqlClient 849                    
    SQLCmd 271                    
    sqlCommand 850                    
    sqlConnect 850                    
    SQLOS 170                    
    SRA 405                    
    SSA 177                    
    SSAS 181                    
    SSIS 179                    
    SSMS 182 183 184 189 195 196 202 230 269 278 316
    SSQA 182                    
    SSRS 180 668 712                
    stack 277                    
    Static 484 773                  
    STDEV 841                    
    STDEVP 842                    
    Step info 276 278 495                
    Step over 276                    
    Storage Engine 507                    
    Stored Procedure 295 298 487 606 727            
    string 63 296                  
    Structured Query Language (SQL) 65                    
    Sub 296                    
    Sub Group 715                    
    Sub-Queries for Existence Checking 456                    
    Sub-query 260 446                  
    Subscriber 684                    
    SUBSTR 337 339                  
    SubString 296 337                  
    Subtotal 347                    
    Subtree Cost 527                    
    SUM 290 291 342 347 430 531 635 841      
    Surrogate Key 109 146                  
    Sybase 54 162 178                
    Syntax 357                    
    sys.indexes 223                    
    sys.objects 648                    
    sysadmin 313 518                  
    System R 65                    
    System.Data 848                    
    Tab 663                    
    Table Scan 218 219 520 523              
    TABLESAMPLE 304 329                  
    Table-Valued Function 263 577                  
    Tablix 668 712 731 733 739            
    Tabular Report 660 668                  
    tag 260                    
    Take 859                    
    Temporary Table 245 469 511 543              
    Terabyte 83                    
    Test environment 698                    
    Text Plans 518                    
    Third party developer 176                    
    Thread 277                    
    Three-Tier 166                    
    Tight coupling 89                    
    TIME 301 305 393                
    TINYINT 63 589                  
    Tool Tip 522                    
    TOP 303 486 603                
    Total 720                    
    Transaction Table 133                    
    Transact-SQL 170                    
    Transitive Dependence 122                    
    Transparency 60                    
    Trigger 577                    
    Trivial Plan 511                    
    TRUE 394                    
    try 853                    
    TRY CATCH 289                    
    TSID 276 278                  
    T-SQL 171 244 250 268 274 276 294 328 330 338 361
    TT 469                    
    Tuple 247 380                  
    Tuple Calculus 354                    
    TVE 557 560                  
    TVF 263 648 651                
    UCT 335 340                  
    UDA 802                    
    UDF 299 640 652                
    UDT 803                    
    Uncomment 201                    
    Underlying Table 640                    
    UNICODE 313                    
    UNION 302 382                  
    UNION ALL 254 335 341 497              
    Union Compatible 391                    
    Union Compatible Tables 335                    
    Unique 229                    
    Unique Key 232                    
    UNIX 65                    
    UNPIVOT 555 561                  
    USE 621 624 626                
    User Defined Function 299 640                  
    User Defined Type (UDT) 64 172                  
    Using 850                    
    Validate Check 96                    
    VALUES 301                    
    VAR 843                    
    Variable 274                    
    Variant 275 859                  
    VARP 843                    
    VB 268                    
    VB.NET 735                    
    VB6 859                    
    VCHAR 63                    
    Venn Diagram 260                    
    View 255 371                  
    View Designer 574                    
    View Report 728                    
    Virtual Table 245                    
    Von Neumann Architecture 244                    
    WAITFOR 288                    
    WHERE 324 333 411 444 473 499 558 561 730    
    Wild card 330                    
    Windows 175                    
    Windows Authentication 183                    
    Windows XP 167                    
    WITH 313 340 390 404              
    Word 689                    
    worksheet 96                    
    X/Open XA 178                    
    XMAL 196                    
    XML 196 290 691 696              
    X-Query 196                    
    YEAR 345                    
    z/OS 65                    

    ดัชนีหนังสือ DabaBase [4]


    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

    ดัชนีหนังสือ DabaBase [4]

    วันนี้ทำดัชนีหนังสือ DabaBase เสร็จเรียบร้อยแล้ว ขอนำมาโพสไว้ที่นี่ให้ดูเล่นหน่อยนะครับ


    Machine Language 82                  
    Managed Code 172                  
    Management Data Warehouse 533                  
    Many to Many 68 102                
    MAPI 178                  
    Mark I 244                  
    Master-Detail 130                  
    Matrix 739                  
    Matrix Report 686                  
    MAX 342 430 626 839            
    MAXRECURSION 647                  
    MC 176                  
    MDV 152                  
    MDW 533                  
    MDX 196                  
    Merge Cells 752                  
    Merge Join 524                  
    Messaging Application Programming Interface 178                  
    Meta data 247 784                
    Metadata 56                  
    MHTML 687                  
    Microsoft Access 164                  
    Microsoft Outlook 178                  
    Microsoft SQL Management Studio 182                  
    Microsoft SQL Server 2008 53 162                
    Microsoft SQL Server Management Studio 169                  
    Microsoft Visual C# 2008 Express Edition 608                  
    Microsoft Visual Studio 168 194                
    Middle tier 691                  
    MIN 342 430 626 840            
    MINUS 392                  
    Molecule 251                  
    money 277                  
    MONTH 345                  
    MotionPicture 48                  
    MSN 49                  
    MSVC#EE 608                  
    MSVS 276                  
    MSVS2008 495 661                
    Multiple valued dependency 124                  
    Multi-tier 167                  
    Multi-tired Architecture 259 691                
    MySQL 268                  
    name intro 390                  
    Native Queries 73                  
    Natural Join 382                  
    NCHAR 817                  
    NCI 220 221 226 230 232 235 236 530    
    NCICT 227                  
    NCIH 226                  
    Network database model 66 68                
    New Query 231                  
    New Vertical Tab Group 201                  
    NEWID() 329                  
    NEWSEQUENTIALID 305                  
    NLLN 221                  
    node 216                  
    Non-Clustered 235 236                
    Non-Clustered Index 216 218 222 226            
    Non-Clustered Index on Clustered Table 227                  
    Non-Clustered Index Scan 524                  
    Non-Deterministic Function 640                  
    Non-Leaf Level Node 217                  
    Non-Procedural 354                  
    nonproject 388                  
    Normalization 118                  
    NOT 330 444 447              
    NOT NULL 96 313                
    Notepad 695                  
    Notification Services 168 176                
    N-Tier 167                  
    NTILE 827                  
    NULL 224 292 324 329 332 347 430 435 561 590
    NULLIF 292                  
    o/ 858                  
    O/RM 855                  
    Object Database Model 71                  
    Object Explorer 184 579 601              
    Object Initializes 866                  
    Object Oriented Database Model 72                  
    Object Oriented Programming 172 244 854              
    Object Query Language 73                  
    Object-Relational Database Model 72                  
    ODBC 271 574                
    ODM 71                  
    OE 187                  
    OLAP 51 79 119 143 179 181 686      
    OLE DB 574                  
    OLPT 60 78 88 119            
    OLTP 50 89 90              
    On-demand Report 705                  
    One to Many 67 102                
    Online Analytical Processing 51 181 686              
    OODM 72 854                
    OOP 72 244 246 784 854          
    OPENDATASOURCE 831                  
    OPENQUERY 832                  
    OPENROWSET 832                  
    OPENXML 834                  
    Operand 380                  
    Operation System 170                  
    Operator 380 476 524              
    Optimize 372                  
    OPTION 635                  
    OPTION MAXRECURSION 496                  
    OQL 73 380                
    OR 325 444                
    Oracle 54 162 178 687 691          
    ORDER BY 329 331 333 338 343 429 498 589 628 635
    Ordering Operator 433                  
    ORDM 72                  
    Organization Chart 492                  
    Outer join 434                  
    OUTER LEFT JOIN 365                  
    OUTER RIGHT JOIN 365                  
    Outerjoin 430                  
    OUTPUT 624                  
    Output Parameter 624                  
    OVER 343 564                
    OVER PARTITION BY 498                  
    overflow 210                  
    Page 213                  
    Page Split 214 217                
    Parameter 611                  
    Parameterized view 653                  
    Parent Table 67 106                
    Parse 269 605 612              
    Parse Tree 508                  
    Parsing 508                  
    partial Class 867                  
    Partial Dependency 124                  
    Partial Methods 867                  
    PARTITION 343                  
    PARTITION BY 563                  
    PATINDEX 818                  
    PDF 180 687                
    per 390                  
    perfmon 542                  
    Pessimistic Concurrency 170                  
    Physical Operation 523                  
    Physical Operator 524                  
    Pie Chart 764                  
    PIVOT 291 555 559              
    Pivot table 180 181 347 660 684 739        
    PK 224 230 300 313 373 452        
    PKI 209                  
    PL 244 258                
    PlayStation 81                  
    Pointer 216                  
    Portable Executable (PE) 785                  
    Postgres 66                  
    POWER 642                  
    PowerShell 177 182 271              
    Predicate Calculus 354                  
    Presentation tier 691                  
    Preview 663 671                
    Primary Key 107                  
    Primary Key indexing 209                  
    PRINT 275 491                
    PROC 620                  
    Procedural Programming 246                  
    Product 382                  
    Production environment 698                  
    Programming Interface 693                  
    project 661                  
    Projection 381                  
    Projection List 433                  
    Prolog 246                  
    PS 217                  
    Publisher 174                  
    QA 368                  
    QAP 506                  
    QD 280                  
    QE 201 233 368 574            
    QO 372 507 521              
    QOP 516 532                
    QUEL 354                  
    Query 233 381                
    Query Algebrizer 509                  
    Query Analyze Practicing 506                  
    Query Analyzer 182                  
    Query Cost 521                  
    Query Designer 720                  
    Query Editor 197 269                
    Query Expressions 866                  
    Query Optimizer 169 208 507 510            
    Query Parameter 722                  
    Query Parsing 508                  
    Query Processor Tree 509                  
    Query Statistics History (QSH) 540                  
    Query Tree 508                  
    QUOTENAME 819                  


    ดัชนีหนังสือ DabaBase [3]


    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

    ดัชนีหนังสือ DabaBase [3]

     

    วันนี้ทำดัชนีหนังสือ DabaBase เสร็จเรียบร้อยแล้ว ขอนำมาโพสไว้ที่นี่ให้ดูเล่นหน่อยนะครับ


    E/R Diagram 55                
    Edgar Frank Codd 386                
    EEP 514 517 518            
    ELSE IF 628                
    Embeddable Control 689                
    ENCRYPTION 574                
    End-user 92 572              
    Enterprise Environment 867                
    Entity 55 249              
    Entity/Relation Diagram (ERD) 102                
    EOC 234 235              
    EP 232 515              
    EPC 515                
    Equi-join 400                
    ERD 90 93 102            
    ERROR 290                
    Estimated Cost 512                
    Estimated Execution Plan 514                
    Estimated Number of Row 522                
    Estimated Operator Cost 234 522              
    Estimated Subtree Cost 522 527              
    Excel 542 689              
    EXCEPT 303                
    EXEC 487                
    Execute 274 507 588 607          
    Execute and Show Plan 519                
    ExecuteReader 851                
    Execution Plan 232 506              
    Execution Plan Cache 514                
    Execution Plan Reuse 514                
    EXISTS 476                
    Export 689                
    Expression Trees 866                
    Extension Method 866                
    Extent 211                
    F# 246                
    F5 232                
    F8 202                
    factorial function 644                
    FECTH PRIOR 486                
    FEP 259                
    Field 247                
    File 247                
    File System 66 67              
    FireFox 693                
    FK 232 373              
    FKI 209                
    Flag 264                
    FLASE 394                
    Flat file 66 67              
    Floating point 63                
    Flow Chart 260                
    foo 275                
    FOR 558                
    FOR/AFTER 578                
    foreach 859                
    Foreign Key 107                
    Foreign Key Indexing 209                
    FORTRAN 246                
    Forward-only 485                
    FREETEXTTABLE 830                
    Front end 264                
    Front-End Process 259                
    Full Functional Dependence 123                
    FULL JOIN 661                
    Full-Text Search 168 175              
    Functional Dependency 122                
    Functional Programming 246                
    Garbage Collector 172 786              
    Gauge 766                
    Global 294                
    GO 269 624 626            
    GolfClub 358                
    GOTO 287                
    GP 517                
    GPRS 84                
    Grand Total 347                
    Graphical Plans 517                
    Grid Computing 182                
    GROUP BY 63 262 429 490 550 551 635 863  
    GROUP BY ROLLUP 552                
    Group Hierarchy 713                
    GROUPING 838                
    Grouping Attribute 432                
    GUI 60                
    Hard code 559                
    Hash Match 524 527              
    Hash Table 210                
    HAVING 262 543 730            
    Head table 336                
    Header 669                
    heap 221 222 226            
    Hello world 268 788              
    Heuristic Evaluation 512                
    Hierarchical 499                
    Hierarchical database model 66 67              
    Hint 543                
    Histogram 511                
    HTML 687                
    Hybrid database 80                
    Hyperlink 733                
    I/O 233 510 542            
    IAEP 520                
    IF 282 290 328 525 628        
    IF EXITS() 283                
    IF/ELSE 284                
    Immediate IF 736                
    Implicit Typing Variable Declaration 859 866              
    IN 444 445              
    INCLUDE 229 530              
    Include Actual Execution Plan 519                
    indent 198                
    Index Organized Table 210                
    Index Seek 220 234 236            
    Information Technology (IT) 54                
    Informix 66                
    ingress 66                
    Inline Table-Valued Function 653                
    INNER JOIN 336 367              
    INSERT 301                
    insetion point 484                
    Instance 169                
    int 275                
    Integrated debuger 276                
    Integration services 179 181 182            
    INTERSECT 302                
    Intersection 382                
    IS NOT NULL 324                
    IS NULL 330                
    ISAM 210                
    ISK 236                
    ISNULL() 472 634              
    ITVD 859                
    ITVF 654                
    JIT 786                
    Join 381 446 469            
    Key 96                
    Key Lookup 220 236 237            
    Key Performance Indicators 766                
    Keyboard Shortcut Scheme 194                
    Keyword 53 476              
    label 287                
    Lambda Expression 866                
    LAN 165                
    Language Interacted Query 854                
    Larry Niven 110                
    Latin1_General 215                
    Lazy Writer 169                
    Lazywriter 515                
    Leaf Level Node 217                
    LEFT 815                
    Left Outerjoin 435                
    Legend 760                
    LEN 338 815              
    LIKE 330 623              
    Linear Expression 421                
    Linear Notation 421                
    LINQ 73 854              
    LINQ to DataSet 866                
    LINQ to Entities 866                
    LINQ to Object 866                
    LINQ to SQL 855 858              
    LINQ to XML 866                
    LIPS 72                
    List 733                
    LLN 221 235              
    Local Server Groups 186                
    localhost 610                
    Lock 170                
    Lock Manager 169 170              
    locking 543                
    logging 543                
    Logic Tier 166                
    Logical Operation 523                
    Logical Operator 524                
    LONGINT 63                
    Lookup Table 299                
    Loop 494                
    Loose coupling 89 620              
    LOWER 816                
    LTRIM 817                



    ดัชนีหนังสือ DabaBase [2]


    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

     

    ดัชนีหนังสือ DabaBase [2]

    วันนี้ทำดัชนีหนังสือ DabaBase เสร็จเรียบร้อยแล้ว ขอนำมาโพสไว้ที่นี่ให้ดูเล่นหน่อยนะครับ


    Data bandwidth 80                      
    Data center 83 684                    
    Data Collection 533 535                    
    Data Control Language 171                      
    Data Definition Language 91 171                    
    Data Filtering 729                      
    Data Manipulation Language 171                      
    Data mart 79                      
    Data mining 181                      
    Data model 247                      
    Data Modeler 689                      
    Data Page 211                      
    Data Set 664                      
    Data Source 664 861                    
    Data Source Properties 665                      
    Data tier 691                      
    Data warehouse 60 79                    
    Database Administator (DBA) 163                      
    Database Engine 169                      
    Database Layer 166                      
    Database mail 178 581                    
    Database management system (DBMS) 54                      
    Database Server 83                      
    Database System 52                      
    DataGridView 608 861                    
    DATE 301 305                    
    DATEDIFF 345 346                    
    datetime 305 473                    
    datetime2 305                      
    datetimeoffset 305                      
    DBA 88 174 178 180 299 484 517 542 572 580 620 867
    dBASE II 80                      
    DBCC 516                      
    dbcreator 518                      
    DBMS 54                      
    dbo 313                      
    DC 533                      
    DDL 91 250                    
    debug 276 701                    
    DECIMAL 63                      
    Decision Support System 179                      
    DECLARE 275 301 491 525                
    default value 724                      
    Degree of Parallelism 522                      
    Denornalize 88                      
    DENSE_RANK 565 825                    
    Deploy 702                      
    Deployment Folder 777                      
    Derived Table 262 337 341 358 474              
    DESC 332                      
    DET 336 337                    
    Detail Table 336                      
    Determinant 122 146                    
    Deterministic Function 640                      
    Deterministic Mathematic 246                      
    Development Workstation 698                      
    Dictionary 214                      
    Difference 382 814                    
    Disk Usage Summary (DUS) 538                      
    Display Estimated Excution Plan 233 518                    
    DISTINCT 324 422 429 477 543              
    Distributed Transaction Coordinator 178                      
    Divide 381 382                    
    DKNF 157                      
    DL 257 383                    
    DLT 435                      
    DMF 517                      
    DML 171 578 641                  
    DMV 517                      
    Do/While 286                      
    Document Map 731                      
    Document Windows 184                      
    Domain Key Normal Form 157                      
    DR 669                      
    Drill Down 686 718                    
    Drill Through 733                      
    DROP 621 652                    
    DROP ASSEMBLY 802 807                    
    DROP FUNCTION 804                      
    DROP INDEX 230 231                    
    DROP TABLE 314                      
    DROP TRIGGER 578                      
    DROP TYPE 803                      
    DS 664                      
    DSQL 588                      
    DSS 179                      
    DT 337 340 341 344 345 364 370 381 393 399 415 423
    DTS 664                      
    DXM 181                      
    Dynamic 485                      
    Dynamic Management Function 517                      
    Dynamic Management View 517                      
    Dynamic SQL 590                      



    ดัชนีหนังสือ DabaBase [1]


    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน


    ดัชนีหนังสือ DabaBase [1]

    วันนี้ทำดัชนีหนังสือ DabaBase เสร็จเรียบร้อยแล้ว ขอนำมาโพสไว้ที่นี่ให้ดูเล่นหน่อยนะครับ

    !Execute 203                  
    .NET Framework 73 162 689 784            
    .NET Framework Assembly 789                  
    @@ 295                  
    @@ERROR 631                  
    @@FETCH_STATUS 485                  
    <> 447                  
    0NF 129                  
    0th Normal Form 129                  
    1NF 128 131 138 253            
    1st Normal Form 128                  
    2nd Normal Form 132                  
    2NF 132 137 138              
    3NF 138 139 142              
    4NF 149                  
    5NF 152                  
    5th Normal Form 152                  
    ABS 641                  
    accent-insensitive 215                  
    accent-sensitive 215                  
    Achived Data 79                  
    Actual Execution Plan 514                  
    Add-On 176                  
    Ad-hoc 88                  
    Adjacent Column Group 746                  
    Administrator 55                  
    ADO 271 507                
    ADO.NET 848 850 854              
    AdventureWorks 52 55 56 183 186 187 233 314 489 525
    AdventureWorks2008 189 271 289 573 575 665        
    AdventureWorksLT2008 202 333 338 348            
    AEP 517 519                
    AFTER 581                  
    Aggregate 424 429 834              
    Aggregate Biding 509                  
    Aggregated Attribute 432                  
    Aggregation Operator 431                  
    Algebra 386                  
    Alias 300 327 363 470 557          
    ALTER ASSEMBLY 802 807                
    ALTER FUNCTION 804                  
    ALTER PROC 621 623                
    ALTER TABLE 315                  
    Alternate Indexing 210                  
    AN 249                  
    Analysis Service 181                  
    AND 325 371 417              
    Anomaly 119                  
    Anonymous Types 859 866                
    ANSI 272                  
    ANSI/ISO SQL 264                  
    AP 514                  
    API 693                  
    APL 246                  
    Application 60                  
    Array 64                  
    AS 298 404 559 620            
    Ascending 211                  
    ASCII 812                  
    ASP.NET 182 691 703              
    Assembly Manifest 786                  
    Atomic Operand 380                  
    Attribute 247 249 380              
    Authentication 183                  
    Auto counter 62                  
    Auto Hide 199                  
    Auto Hide All 199                  
    Auto Numbering 248 249                
    Auxiliary Table 245                  
    AVG 342 430 835              
    Back end 264                  
    Bag 380                  
    Base Table 640                  
    Batch 269                  
    Batch Separator 269                  
    BCNF 145 147                
    Begin/End 283 297 654              
    Best Practice 294                  
    BI 182                  
    bigint 645                  
    Bill of Materials 492                  
    binary 64                  
    BIT 264                  
    BNCF 417                  
    BOM 492 633                
    Bookmark Lookup 220 237                
    Breakpoint 276 280                
    BSD 66 269                
    BTree 210 214 216 221 226 235        
    Buffer Manager 169                  
    Build 702 789                
    Build-in Collection 736                  
    Business Intelligence 61 179 662 686            
    Business Intelligence Development Studio 690                  
    Business Rules 92                  
    C ASE 292                  
    C# 72 96 162 172 246 268        
    Cache 514                  
    Cached plan size 522                  
    Candidate Key 123 145                
    Cartesian Product 336 412                
    CASE 290 328 333 589            
    CASE WHEN 651                  
    case-insensitive 215                  
    case-sensitive 215                  
    CAST 263 338 473 498            
    CBP 510                  
    CE 411                  
    CHAR 63 813                
    CHARINDEX 813                  
    Chart 712 755                
    CHECKSUM_AGG 836                  
    Child Group (CG) 713                  
    Child Table 67 106                
    CI 221 223 224 235            
    CK 222 224                
    Clause 361 862                
    Client Layer 166                  
    CLR 162 172 770 785 854          
    CLR Routine 786                  
    Cluster 53                  
    Cluster Index 218 223                
    Cluster Key 224                  
    Clustered Index 528                  
    Clustered Index Scan 234 524 528              
    Clustered Index Seek 235                  
    Clustered Table 220 221                
    COALESCE 263 292 347              
    Collation 215                  
    Collection 124                  
    Column Group Pane (CGP) 712                  
    COM+ 770                  
    Combination 336 493 552              
    Comma-delimited file 67                  
    Comment 200 273                
    Common Language Runtime 172 785                
    Common Table Expression 272 341 488              
    Composite index 211                  
    Composite Key 113 127 130              
    Compound Key 113 130                
    Computed Column (CC) 530                  
    Concurrent 81                  
    Concurrent processing 244                  
    Concurrent programming 250                  
    Condition Expression 411                  
    Connection Properties 189                  
    Console Application 494 850                
    Constant 260 454                
    Constraint 114 313 577              
    Constraint Programming 246                  
    Contains 863                  
    CONTAINSTABLE 829                  
    Continue 280 287                
    Continuum Datum 252                  
    CONVERT 263                  
    correlated 471                  
    Correlated Sub-queries 457 467                
    Cost 233                  
    Cost-Based Plan 510                  
    COUNT 430 490 498 557 837          
    COUNT_BIG 838                  
    Covering Index 528 531                
    CPU 233 510                
    CREATE AGGREGATE 802                  
    CREATE ASSEMBLY 802 806                
    CREATE FUNCTION 804 808                
    Create Index 228                  
    CREATE PROCEDURE 605                  
    CREATE SPROC 621                  
    CREATE TABLE 312                  
    CREATE TRIGGER 579                  
    CREATE TYPE 803                  
    CROSS APPLY 650                  
    CROSS JOIN 366                  
    Crystal Report 180 685                
    CS 467                  
    CSV 67                  
    CT 220 221                
    CTE 260 272 341 488 489 490 495 563 564 634
    Cube 181 550 554              
    Cursor 451 484                
    Custom Assembly 770 773                
    Custom Code 770                  
    Custom Data Type 172                  
    Cyclic Dependency 124                  



    August 11

    หาวันเกิดโดยไม่สนปี


    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน




    หาวันเกิดโดยไม่สนปี



    กลางดีกคืนหนึ่งขณะที่ผู้เขียนกำลังสะลึมสะลือมีผู้อ่านท่านหนึ่งถามมาด้วย MSN ว่าจะเขียนคิวรีอย่างไรให้หาวันเกิดของพนักงานที่เกิดในระหว่างวันและเดือนหนึ่งๆ โดยไม่สนใจว่าเกิดปีอะไร ผู้เขียนเดาว่าจะนำไปใช้ส่งอีเมลอวยพรวันเกิดหรืออะไรสักอย่าง โดยมีการทำงานดังนี้

    SELECT * FROM Table WHERE

    BirthDate มีค่าระหว่างวันเริ่มและวันจบโดยไม่จนใจปี

    ผู้เขียนไปนอนพอตื่นมาวันรุ่งขึ้นก็เปิดโปรแกรม Microsoft SQL Server Management Studio เขียนคิวรีทดสอบกับดาต้าเบส Northwind (2008) ที่มีตารางเก็บข้อมูลพนักงานพร้อมวันเกิดดังนี้

    get all birthdate

    จะเห็นว่ามีพนักงานทั้งหมดเก้าคน เกิดกันตั้งแต่ปี 1948 ไปจนถึง 1966 ต่อมาผู้เขียนเขียนสคริปต์คัดกรองเอาเฉพาะผู้ที่เกิดวันที่ 1 ถึงวันที่ 9 เดือนมกราคมถึงมีนาคม โดยไม่สนใจว่าเกิดปีอะไร ได้เป็นคิวรีหน้าตาแบบนี้

     

    birthdate iqnore year

     ไม่อยากพิมพ์ใช่ไหมครับ ก๊อปปี้โค้ดข้างล่างนี้ได้เลย

    USE Northwind;
    GO
    DECLARE @StartDate DATETIME;
    DECLARE @EndDate DATETIME;
    SET @StartDate = CONVERT(datetime, '2009-01-01');
    SET @EndDate = CONVERT(datetime, '2009-03-09');
    SELECT EmployeeID,LastName,BirthDate
    FROM Employees
    WHERE (MONTH(BirthDate) >= MONTH(@StartDate) and 
           MONTH(BirthDate) <= MONTH(@EndDate)) and
          (DAY(BirthDate) >= DAY(@StartDate) and 
           DAY(BirthDate) <= DAY(@EndDate))
    GO


    July 01

    วิธียืด-หดเมทริกซ์


    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

     

    วิธียืด-หดเมทริกซ์

     

    ในหัวข้อ 27.1.5 ท่านได้เรียนวิธีทำรายงานที่ยืดหดได้ (Drill Down ย่อ DD) กับ Tablix แบบ Table ในหัวข้อนี่ผู้เขียนจะสาธิตการทำ DD กับเมทริกซ์บ้าง ซึ่งมีหลักการคล้ายกันๆ แต่การทำ DD กับเมทริกซ์จะก้าวหน้ากว่าเพราะนอกจากจะสามารถยืดหดตามแนวนอนได้เหมือน Table แล้ว ยังสามารถยืดหดตามแนวตั้งได้อีกด้วย

    การหดเมทริกซ์ทั้งแนวนอนและแนวตั้งช่วยให้ผู้ใช้รายงานพิจารณาเฉพาะยอดรวมได้ง่าย ขนาดของรายงานจะไม่กว้างหรือยาวจนล้นหน้า เมื่อผู้ใช้ต้องการดูรายละเอียดส่วนใดก็สามารถยืดดูรายละเอียดเฉพาะส่วนที่ต้องการได้ ตัวอย่างของรายงานเมทริกซ์แบบ DD เป็นดังภาพ 27-121 ถึง 27-123

    121

    ภาพ 27-121: รายงานแบบเมทริกซ์เมื่ออยู่ในสภาพหดทั้งแนวตั้งและแนวนอน

    122

    ภาพ 27-122: รายงานแบบเมทริกซ์เมื่ออยู่ในสภาพยืดแนวนอนเฉพาะหมวดสินค้า Components และหดแนวตั้ง

    123

    ภาพ 27-123: รายงานแบบเมทริกซ์เมื่ออยู่ในสภาพยืดแนวตั้งเพื่อแสดงปีที่ขาย และยืดแนวนอนเฉพาะหมวดสินค้า Components


    รีเคอร์ซีฟแบบไฮราคี


    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน



    รีเคอร์ซีฟแบบไฮราคี

     

    อย่างที่เรียนไปแล้วตอนต้นว่ารีเคอร์ซีฟเหมาะใช้เข้าถึงข้อมูลที่ลดหลั่นเป็นลำดับชั้นหรือไฮราคี (Hierarchy) ดังนั้นในหัวข้อนี้ผู้เขียนจะเสนอตัวอย่างคิวรีที่มีการทำงานเช่นนั้นบ้าง ในภาพ 17-16 เป็นคิวรีแสดงลำดับชั้นสายการบังคับบัญชาของพนักงานในบริษัท ผลลัพธ์จะเป็นอย่างที่เห็นในกรอบ Results โปรดสังเกตว่าข้อมูลแถวแรกคือพนักงานรหัส 109 ชื่อ Ken กินตำแหน่ง CEO คืออยู่สูงที่สุดในลำดับชั้นของสายการบังคับบัญชา คอลัมน์ Level1 จึงเป็น 1 ส่วนคอลัมน์ Hierarchical จะมีชื่อคนผู้นี้เพียงชื่อเดียว

    แถวถัดมาพนักงานรหัส 273 ชื่อ Brian ดำรงตำแหน่งรองประธานฝ่ายขาย มีฐานะต่ำกว่า CEO อยู่เพียงลำดับเดียว ค่าในคอลัมน์ Level1 จึงเป็น 2 และผู้เขียนกำหนดให้ใส่เครื่องหมายบวก ( + ) ไว้หน้าชื่อ เครื่องหมายบวกนี้ผู้เขียนกำหนดในคิวรีว่าจะใส่เท่าจำนวนลำดับชั้น ส่วนคอลัมน์ Hierarchical มีชื่อคนอยู่สองชื่อคือ Ken แลชื่อคนผู้นี้

    ไหนๆ ก็ดูตัวอย่างผลลัพธ์มาแล้วถึงสองแถว ลองมาดูกันอีกสักแถวจะเป็นไรไป แต่ไม่ดูแถวที่สาม ให้ข้ามไปดูแถวที่สี่ซึ่งเป็นพนักงานรหัส 285 ชื่อ Jae ตำแหน่งพนังงานขาย คนผู้นี้มีผู้บังคับบัญชาเหนือขึ้นไปถึงสามระดับ ค่าในคอลัมน์ Level1 จึงเป็น 4 และมีเครื่องหมายบวก + นำหน้าชื่ออยู่สามอัน ส่วนคอลัมน์ Hierarchical มีชื่อคนอยู่สี่ชื่อคือ Ken, Brian, Amy และชื่อคนผู้นี้

    016

    ภาพ 17-16: คิวรีแสดงลำดับชั้นสายการบังคับบัญชาของพนักงานในบริษัท

     

    คิวรีในภาพ 17-16 ยืดยาวถึง 43 บรรทัด แต่ท่านไม่ควรระย่อและท้อหนี เพราะโค้ดนี้สักแต่ว่ายาว ไม่มีหลักการอะไรซับซ้อน ใช้เพียงเทคนิคง่ายๆ เหมือนคิวรีในหัวข้อ 17.3.4 บรรทัดที่ 9 ถึง 20 คือคิวรี AM บรรทัดที่ 22 ถึง 36 คือคิวรี RM สองคิวรีนี้ถูกนำมายูเนียนกัน ได้ผลลัพธ์เป็น CTE ชื่อ DirectReport

    โค้ดบรรทัดที่ 3-7 ประกาศส่วนหัวของ CTE ทั้งคอลัมน์ Name และ Hierarchical ต่างทำหน้าที่เป็นสตริงเก็บชื่อพนักงานที่นำมาจากตาราง Contact เมื่อรีเคอร์ซีฟทำงานแต่ละรอบ สตริงนี้จะถูกเพิ่มตัว + หรือชื่อพนักงานเข้าไป โดยโค้ดใน AM บรรทัดที่ 10,11 และ 15,16 และโค้ดใน RM บรรทัดที่ 23,24 และ 29,30 ตามลำดับ

    คอลัมน์ Title และ ID เป็นคอลัมน์ที่ได้ข้อมูลจากตาราง Employee ส่วน Level1 ทำหน้าที่เป็นตัวนับรอบการรีเคอร์ซีฟ โดยใน AM จะเป็น 1 เสมอเพื่อให้เป็นค่าเริ่มต้น ส่วนใน RM คอลัมน์นี้จะเพิ่มค่าขึ้นเรื่อยจนถึงลำดับการบังคับบัญชาของพนักงานผู้นั้น


    คิวรีเมื่อทำ Index Seek ในดรรชนีแบบ CI


    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

     

    คิวรีเมื่อทำ Index Seek ในดรรชนีแบบ CI

     

    ต่อไปจะทดลองคิวรีที่ค้นข้อมูลเฉพาะเจาะจง ไม่ได้ไล่แสดงทุกแถวอย่างหัวข้อที่ผ่านมา คิวรีเป็นดังนี้

         SELECT SalesOrderID

         FROM Sales.SalesOrderDetail

         WHERE SalesOrderID = 55356

    โปรดสังเกตว่าคอลัมน์ที่ฉายแสดงมีสามคอลัมน์เหมือนคิวรีในหัวข้อที่ผ่านมา คิวรีเหมือนเดิมแต่คราวนี้เพิ่มคำสั่ง WHERE เพื่อค้นข้อมูลเฉพาะเจาะจง แผนภูมิวิเคราะห์การปฏิบัติงานของคิวรีเป็นอย่างที่เห็นในภาพ 8-27

    027

    ภาพ 8-27 : แผนภูมิวิเคราะห์การปฏิบัติงานของคิวรีเมื่อทำ Index Seek ในดรรชนีแบบ CI

    จะเห็นว่าการทำงานคราวนี้เป็น Clustered Index Seek ไม่ใช่ Clustered Index Scan อย่างในหัวข้อที่ผ่านมา ค่า EOC ที่ได้จะต่ำกว่ามาก คือเหลือเพียง 0.003285 ที่เป็นเช่นนั้นเพราะโปรแกรม SQL2008 จะท่องไปใน BTree เมื่อถึงระดับ LLN ก็พบข้อมูลที่ต้องการและจบการทำงานได้เนื่องจาก LLN ของ CI เก็บข้อมูลจริงๆ ไม่ได้เก็บพอยน์เตอร์

     

    คิวรีเมื่อทำ Index Scan ในดรรชนีแบบ NCI

    สองตัวอย่างที่ผ่านมาเป็นการทำงานโดยใช้ดรรชนีหมายเลข 1 ต่อไปท่านจะมาดูผลลัพธ์ของการทำงานเมื่อใช้ดรรชนีหมายเลข 2 ซึ่งเป็น NCI กันบ้าง คิวรีเป็นดังนี้

         SELECT ProductID

         FROM Sales.SalesOrderDetail

     

    028

    ภาพ 8-28 : แผนภูมิวิเคราะห์การปฏิบัติงานของคิวรีเมื่อทำ Index Scan ในดรรชนีแบบ NCI

    จะเห็นว่าเนื่องจากผู้เขียนเลือกฉายคอลัมน์ ProductID เพียงคอลัมน์เดียว โปรแกรม SQL2008 จึงตัดสินใจใช้ดรรชนีดรรชนีหมายเลข 2 เพราะดรรชนีนี้ใช้คอลัมน์นี้เป็นกุญแจ โปรดสังเกตว่านี่คือการทำ Index Scan (ของ Non-Clustered)ผลลัพธ์ได้ค่า EOC ที่ถือว่าไม่เลวทีเดียวเมื่อเทียบกับหัวข้อ 8.23.1 และเมื่อคิดว่านี่คือการฉายแถวข้อมูลทั้งหมดแสนกว่าแถวโดยใช้ NCI


    คิวรีเมื่อทำ Index Scan ในดรรชนีแบบ CI


    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน



    คิวรีเมื่อทำ Index Scan ในดรรชนีแบบ CI

     

    ต่อไปนี้เป็นตัวอย่างการสแกนดรรชนีทั้งตาราแบบ Index Scan คือไล่ตั้งแต่แถวแรกไปถึงแถวที่แสนกว่าๆ ผู้เขียนเลือกฉายข้อมูลเฉพาะคอลัมน์ที่เป็นกุญแจโดยเขียนคิวรีดังนี้

    SELECT SalesOrderID, SalesOrderDetailID, OrderQty

    FROM Sales.SalesOrderDetail

    โปรดสังเกตว่าคอลัมน์ที่ฉายมีสามคอลัมน์คือ SalesOrderID, SalesOrderDetailID, OrderQty วิธีตรวจสอบเพื่อวัดประสิทธิภาพของคิวรีให้ดำเนินการตามขั้นตอนดังนี้

    1. เปิดโปรแกรม SSMS
    2. เชื่อมต่อกับดาต้าเบสเซอฟเวอร์ที่มีฐานข้อมูล AdventureWorks
    3. คลิกที่ไอคอน AdventureWorks
    4. กดปุ่ม New Query บนแถบปุ่มมุมบนด้านซ้าย (อยู่ใต้เมนูของโปรแกรม SSMS)
    5. ป้อนพิมพ์คิวรีข้างบนลงใน QE ทางขวาของจอภาพ
    6. กดปุ่ม Display estimated execution plan เพื่อให้โปรแกรม SQL2008 แสดงแผนภูมิวิเคราะห์แผนการปฏิบัติงาน

     

    025

     

        ภาพ 8-25 : ปุ่ม Display estimated execution plan



    ในภาพ 8-26 จะเห็นว่าด้านบนคือคิวรี ด้านล่างคือแผนภูมิวิเคราะห์การปฏิบัติงานของคิวรี วิธีอ่านแผนภูมิให้อ่านจากขวาไปซ้าย ไอคอนแรกคือการทำ Index Scan มี cost หรือค่าใช้จ่ายในการทำงาน 100% ไอคอนทางซ้ายคือ SELECT มี cost 0% การคิด cost คิดจากการกินทรัพยากรของกระบวนการ ทรัพยากรในที่นี้คือทรัพยากรของระบบ เช่น I/O Cost คือการทำงานของอุปกรณ์ที่เชื่อมต่อกับฮาร์ดดิสก์ CPU Cost คือการประมวลผลของซีพียู cost

     

    026

    ภาพ 8-26 : แผนภูมิวิเคราะห์การปฏิบัติงานของคิวรีเมื่อทำ Index Scan ในดรรชนีแบบ CI

     

    ในคิวรีนี้จะเห็นว่าการทำงานทั้งหมดอยู่ที่ Clustered Index Scan ให้เลื่อนเมาส์ไปทับบนไอคอน Clustered Index Scan โปรแกรม SQL2008 จะแสดงรายงานสรุปการทำงาน มีข้อมูลอยู่หลายบรรทัด แต่บรรทัดที่ท่านควรสนใจคือ Estimated Operator Cost (EOC) ซึ่งแสดงค่าการทำงานโดยรวมของกระบวนการทั้งหมด ค่านี้ยิ่งน้อยยิ่งดี คิวรีนี้ได้ EOC เท่ากับ 1.05006 ซึ่งถือว่าสูงมาก สาเหตุที่ค่า EOC สูงเพราะโปรแกรม SQL2008 จะต้องสแกนตารางทั้งหมดแสนกว่าแถว

    โปรดสังเกตอีกอย่างหนึ่งว่าโปรแกรม SQL2008 วิเคราะห์คิวรีนี้แล้วพบว่าควรใช้ดรรชนีหมายเลข 1 ในการทำงานจะเหมาะสุด และโปรดสังเกตว่าดรรชนีหมายเลข 1 เป็นดรรชนีแบบ CI

     

    วิธีตรวจสอบประสิทธิภาพดรรชนี


    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน



    วิธีตรวจสอบประสิทธิภาพดรรชนี

     

    ต่อไปผู้เขียนจะสาธิตวิธีตรวจสอบเพื่อวัดประสิทธิภาพของดรรชนีด้วยคิวรีลักษณะต่างๆ ผู้เขียนจะเขียนคิวรีสั้นๆ และให้โปรแกรม SQL2008 วิเคราะห์แผนการปฏิบัติงาน (Execution Plan ย่อ EP) ของคิวรีแต่ละแบบในแต่ละสถานการณ์ และอธิบายว่าผลลัพธ์ที่ได้มีความแตกต่างกันอย่างไร และแตกต่างกันเพราะอะไร

    ตารางที่ผู้เขียนจะสาธิตการตรวจสอบคือตาราง Sales.SalesOrderDetail อยู่ในฐานข้อมูล AdventureWorks ตารางนี้ทำหน้าที่เก็บรายละเอียดรายการในใบสั่งซื้อ มีข้อมูลทั้งสิ้น 121,317 แถวซึ่งถือว่าเป็นตารางขนาดไม่ใหญ่มากนัก ตารางนี้มีดรรชนีสามตัวดังนี้

    1. PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID: นี่คือดรรชนีหลัก (8.3.1) เป็นดรรชนีแบบ CI มีกุญแจเป็นคอลัมน์ SalesOrderDetailID ซึ่งเป็น PK ผสมกับคอลัมน์ SalesOrderID ซึ่งเป็น FK
    2. IX_SalesOrderDetail_ProductID: นี่คือดรรชนีนอก (8.3.2) เป็นดรรชนีแบบ NCI มีกุญแจเป็นคอลัมน์SalesOrderID ซึ่งเป็น FK

    AK_SalesOrderDetail_rowguid: นี่คือดรรชนีเผื่อเลือก (8.3.3) เป็นดรรชนีแบบ NCI มีกุญแจเป็นคอลัมน์ rowguid ซึ่งเป็นคอลัมน์ที่มีข้อมูลไม่ซ้ำกันเลย (Unique Key)


    024

    ตาราง Sales.SalesOrderDetail อยู่ในฐานข้อมูล AdventureWorks

     

    เฉลยคำถามท้ายบท [5]


    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

     

    เฉลยคำถามท้ายบท [5]


    บทที่ 22

    1. คำว่า Store Procedure เขียนและอ่านโดยย่อว่าอย่างไร

    เขียนย่อว่า SProc อ่านว่า "สพร็อกซ์"

    2. สพร็อกซ์คืออะไร

    คิวรีที่เก็บไว้ในฐานข้อมูลเพื่อให้เรียกใช้งานได้ตลอดเวลา

    3. SSMS คืออะไร

    โปรแกรม Microsoft SQL Server Management Studio

    4. SSMS ปรกติจะถูกติดตั้งไว้ในโฟลเดอร์ใด

    C:\Program Files\ Microsoft SQL Server\ 100\ Tools\ Binn\ VSShell\ Common7\ IDE\

    5. Windows Authentication คืออะไร

    ระบบกำหนดสิทธิของวินโดวส์เพื่อลงชื่อเข้าใช้งาน

    6. AdventureWorks คืออะไร

    ชื่อบริษัทสมมุติเป็นฐานข้อมูลตัวอย่างที่ไมโครซอฟต์จัดมาให้

    7. ไอคอน Programmability คืออะไร

    เป็นไอคอนในหน้าจอ Object Explorer ของ SSMS มีหน้าที่เก็บรายการสิ่งต่างๆ ที่เกี่ยวข้องกับการสร้างโปรแกรม

    8. โปรแกรม SSMS จะบันทึกคิวรีใหม่ไว้เป็นแฟ้มชั่วคราวที่โฟลเดอร์ใด

    C:\Documents and Settings\user\Local Settings\Temp

    9. ปุ่มที่มีรูปเครื่องหมายตกใจสีแดงทำหน้าที่อะไร

    รันคิวรี

    10. หากไม่บันทึกแฟ้มคำสั่งสร้างสพร็อกซ์นี้ไว้ในฮาร์ดดิสก์จะเป็นอย่างไร

    ไม่เป็นอย่างไร ถึงไม่ได้บันทึกไว้ สพร็อกซ์ที่ถูกสร้างขึ้นแล้วก็จะยังอยู่ในฐานข้อมูลไม่ได้หายไปไหน

    11. จะเรียนใช้สพร็อกซ์ได้จากที่ใด

    สามารถเรียกใช้สพร็อกซ์ที่สร้างไว้จากคิวรีใดๆ ก็ได้

    12. คำสั่ง use ใช้ทำอะไร

    ทำหน้าที่ระบุฐานข้อมูลที่ท่านต้องการติดต่อ

    13. ใช้วิธีการใดแทนคำสั่ง USE ได้

    ใช้วิธีระบุเส้นทางเต็มหรือชื่อเต็ม (fully qualified name)

    14. อะไรคือ MSVC#

    Microsoft Visual C# 2008 Express Edition (หรือเวอร์ชันอื่นๆ)

    15. DataGridView คืออะไร

    คอนโทร์ลในวินฟอร์มทำหน้าที่แสดงข้อมูลจากฐานข้อมูล

    16. พารามิเตอร์มีประโยชน์อย่างไร

    ทำให้กำหนดลักษณะของผลลัพธ์ได้ เพราะการรันสพร็อกซ์แต่ละครั้งจะได้ผลลัพธ์แตกต่างกันไป ขึ้นอยู่กับข้อมูลที่ส่งไปเป็นพารามิเตอร์

     

    บทที่ 23

    1. Loose Coupling คืออะไร

    ระบบงานสองระบบที่เป็นอิสระต่อกัน แต่มีความสัมพันธ์ต่อกันอย่างหลวมๆ

    2. hard code คืออะไร

    การอ้างถึงชื่อตาราง คอลัมน์ และออพเจ็กต์ดาต้าเบสอื่นๆ ในโค้ดโดยตรง

    3. hard code มีข้อเสียอย่างไร

    หากมีการเปลี่ยนแปลงโครงสร้างของดาต้าเบส ผลกระทบจะลามไปทั่วโปรแกรม

    4. สพร็อกซ์มีความชื่อถือได้เพราะอะไร

    เพราะปรกติคนสร้างสพร็อกซ์จะเป็นเจ้าหน้าที่ผู้ชำนาญฐานข้อมูล

    5. สพร็อกซ์ปรับแต่งง่ายเพราะอะไร

    เพราะคิวรีทั้งหลายรวมอยู่ในที่เดียวกันภายในฐานข้อมูล

    6. การตั้งชื่อสพร็อกซ์ควรทำอย่างไร

    ควรใช้วิธีเขียนแบบปาสคาล

    7. การแก้ไขสพร็อกซ์ทำได้โดยใช้คำสั่งอะไร

    ALTER PROC

    8. การ CREATE และ DROP สพร็อกส์ต่างจากการใช้คำสั่ง ALTER PROC อย่างไร

    การ CREATE และ DROP จะทำให้สถานะสิทธิและความสัมพันธ์กับออพเจ็กต์อื่นของสพร็อกซ์หายไป ขณะที่การแก้ไขสพร็อกซ์ด้วยคำสั่ง ALTER PROC ความสัมพันธ์ต่างๆ จะยังคงอยู่

    9. พารามิเตอร์ของสพร็อกซ์คืออะไร

    เหมือนพารามิเตอร์ของฟังก์ชัน คือทำหน้าที่ให้สพร็อกซ์สามารถรับ-ส่งข้อมูลกับโปรแกรมหรือคิวรีที่เรียกใช้งานมันได้

    10. อินพุตพารามิเตอร์มีประโยชน์อย่างไร

    ทำให้สพร็อกซ์มีประโยชน์มากขึ้น เพราะใช้เปลี่ยนแปลงเงื่อนไขของข้อมูลที่ต้องหรือเปลี่ยนแปลงคิวรีในลักษณะต่างๆ ได้

    11. เอาท์พุตพารามิเตอร์มีประโยชน์อย่างไร

    ช่วยให้สร้างสพร็อกซ์ที่คืนค่ามาเป็นค่าที่ไม่ใช่เรคคอร์ดเซตได้ เช่นเป็นค่าบูลีน หรือสเกลาร์ที่เป็นผลลัพธ์จากการคำนวณ

    12. หากต้องการให้สพร็อกซ์คืนค่าผลลัพธ์ที่เป็นสองค่าหรือมากกว่าจะทำได้อย่างไร

    ใช้อินพุตพารามิเตอร์หลายๆ ตัว

    13. คำสั่ง RETURN ใช้ทำอะไร

    เพื่อบังคับให้สพร็อกซ์จบการทำงานและส่งค่ากลับเพื่อยืนยันความสำเร็จของการทำงานของสพร็อกซ์

    14. ตัวแปร @@ERROR ทำหน้าที่อะไร

    ทำหน้าที่เก็บข้อมูลสถานะความผิดพลาดที่เกิดขึ้นในการทำคิวรี

    15. พบความผิดพลาด SQL2008 จะทำอย่างไร

    แสดงข้อความแจ้งสิ่งผิดพลาดแล้วทำงานคำสั่งบรรทัดที่เหลือต่อไป

     

    บทที่ 24

    1. UDF คืออะไร

    User-Defined Function ฟังก์ชันที่ผู้ใช้นิยามเอง

    2. BF คืออะไร

    Build-in Function ฟังก์ชันฝังตัวเป็นฟังก์ชันที่มีอยู่ภายใน SQL2008

    3. RS คืออะไร

    Row Set แถวข้อมูลผลลัพธ์ที่ได้จากคิวรี

    4. การนิยาม UDF ทำได้โดยใช้ภาษาอะไร

    ภาษา T-SQL และภาษา CLR เช่น C# และ VB.NET

    5. การใช้ UDF ช่วยให้คิวรีทำงานได้เร็วขึ้นเพราะอะไร

    เพราะ SQL2008 สามารถทำแคชและวางแผนการทำออพติไมซ์ต่อ UDF ล่วงหน้าได้ ไม่ต้องทำแคชและออพติไมซ์ทุกครั้งที่เรียกใช้งาน

    6. UDF จะมีคำสั่งแบบใดไม่ได้

    คำสั่งแบบ DML คือ INSERT, UPDATE และ DELETE

    7. DF และ NDF คืออะไร

    Deterministic Function ฟังก์ชันแบบคืนค่าตายตัว Non-Deterministic Function ฟังก์ชันแบบคืนค่าไม่ตายตัว

    8. UDF จะต้องคืนค่าเป็นอะไร

    เป็นสเกลลาร์หรือตาราง

    9. เมื่อเกิดเออเรอร์ UDF จะทำอะไร

    จะหยุดการทำงาน

    10. UDF ทำคำสั่ง DML ได้กับอะไร

    ทำได้กับตารางเทียม

    11. SF คืออะไร

    Scalar Functions ฟังก์ชันแบบสเกลาร์

    12. การตั้งชื่อฟังก์ชันควรใช้แบบใด

    แบบคาเมลโนเตชัน

    13. การหาค่ายกกำลังสองใช้ฟังก์ชันอะไร

    POWER

    14. คำสั่ง RETURN ทำหน้าที่อะไร

    ส่งผลลัพธ์ของการคำนวณกลับไปให้ผู้เรียกใช้

    15. UDF ถูกเก็บไว้ที่ใด

    ภายใต้หัวข้อ Programmability / Functions / Scalar-valued Functions

    16. พารามิเตอร์ของ UDF แตกต่างจาก Sproc อย่างไร

    หาก Sproc ไม่ต้องการพารามิเตอร์ท่านไม่ต้องใส่วงเล็บไว้ในทั้งในนิยามและเมื่อเรียกใช้ ส่วน UDF แม้ไม่ต้องการพารามิเตอร์ก็ต้องใส่วงเล็บว่างๆ ไว้ทั้งในนิยามและตอนเรียกใช้ด้วย

    17. ฟังก์ขันแฟกทอเรียลคืออะไร

    คือฟังก์ชันที่ให้ผลคูณของสมาชิกทั้งหมดที่น้อยกว่าหรือเท่ากับ n เมื่อ n มากกว่าศูนย์

    18. SQL2008 จำกัดการรีเคอร์ซีฟของ UDF ไว้เท่าใด

    32 ระดับ

    19. SQL2008 จำกัดการรีเคอร์ซีฟของ CTE ไว้เท่าใด

    100 ระดับ

    20. TVF คืออะไร

    Table-Valued Function ฟังก์ชันที่ให้ค่าเป็นตาราง

    21. ตัวแปรท้องถิ่นของฟังก์ชันมี scope อย่างไร

    มีชีวิตอยู่เพียงแค่ภายในฟังก์ชันนี้เท่านั้น

    22. คำสั่ง CROSS APPLY ใช้ทำอะไร

    มีไว้เพื่อให้จอยตารางจริงกับ TVF ได้

    23. ITVF คือะไร

    Inline Table-Valued Function เป็น UDF ซึ่งทำหน้าที่เหมือนวิวแบบมีพารามิเตอร์

    24. เมื่อนิยาม UDF ด้วยภาษา C# จะสามารถสร้าง UDF ได้กี่แบบ

    สี่แบบ คือ สเกลาร์, TVF, ITVF และแอกริเกต

     

    บทที่ 25

    1. รายงานแบบ tabular คืออะไร

    คือรายงานที่แสดงเป็นตารางมีคอลัมน์และแถวเหมือนข้อมูลที่ได้จากการคิวรี

    2. นอกจากรายงานแบบ tabular แล้ว SSRS ยังสามารถสร้างรายงานแบบใดได้อีก

    รายงานแบบ Matrix ซึ่งจะมีลักษณะคล้าย Pivot table ในโปรแกรม Excel และ List ที่ใช้เพื่อแสดงรายละเอียดของข้อมูลหนึ่งชิ้น

    3. FULL JOIN ทำงานอย่างไร

    นำข้อมูลจากสองตารางมาจอยกันโดยเอาทั้งแถวที่สัมพันธ์กันและไม่สัมพันธ์กัน

    4. โซลูชัน (solution) คืออะไร

    ที่เก็บโครงการระดับสูงสุด

    5. Project types สำหรับการสร้างรายงาน SSRS คืออะไร

    Business Intelligence Projects

    6. วิธีตรวจสอบว่าขณะนี้โปรเจ็กต์มีข้อมูล ไฟล์ หรือออพเจ็กต์อะไรบ้างทำได้อย่งไร

    ทำได้โดยเปิดดูในโซลูชันเอ็กซ์พลอเรอร์ (Solution Explorer ย่อ SE) โดยการกดปุ่ม Ctrl+Alt+L

    7. RDF คืออะไร

    Report Definition File ไฟล์สำหรับเก็บนิยามรายงาน

    8. DS คืออะไรใช้ทำอะไร

    Data Source ดาต้าซอร์ส ทำหน้าที่เป็นตัวเชื่อมต่อกับดาต้าเบสเซอฟเวอร์ โดยเก็บข้อกำหนดว่าดาต้าเบสเซอร์เวอร์ชื่ออะไรอยู่ที่ไหน มีชื่อและรหัสผ่านอะไร

    9. DTS คืออะไรใช้ทำอะไร

    Data Set ดาต้าเซต หน้าที่กำหนดคิวรีที่จะใช้กระทำกับฐานข้อมูล

    10. DR คืออะไร

    Data Region ดาต้ารีเจียน เป็นองค์ประกอบของรายงานทำหน้าที่กำหนดขอบเขตการแสดงข้อมูล

    11. Tablix คืออะไร

    ย่อจาก Table + Matrix เป็นคำเรียกรวมๆ ของ Table, Matrix, Chart และ List

    12. Preview คืออะไร

    คือการสร้างหรือเรนเดอร์ (render) รายงานแบบด่วน โดยไม่ส่งผลลัพธ์ขั้นสุดท้ายออกไปที่เซอฟเวอร์ หรือที่เรียกว่าการทำดีพลอย (deploy) แต่จะเพียงแสดงให้ดูภายในโปรแกรม MSVS2008

     

    บทที่ 26

    1. BI คืออะไร

    บิสิเนสอินเทลิเจนส์ (Business intelligence ย่อ BI) หมายถึงเทคโนโลยีหรือโปรแกรมประยุกต์หรือวิธีปฏิบัติเพื่อการรวบรวม วิเคราะห์ และนำเสนอสารสนเทศทางธุรกิจโดยมีจุดมุ่งหมายเพื่อให้การทำธุรกิจมีประสิทธิภาพสูงขึ้น เป็นเครื่องมือให้ผู้บริหารใช้ช่วยในการตัดสินใจ

    2. Server Farm คืออะไร

    การนำคอมพิวเตอร์ซึ่งทำหน้าที่เป็นผู้ให้บริการหรือเซอฟเวอร์มาต่อเชื่อมกันเป็นจำนวนมาก

    3. Crystal Report คืออะไร

    เป็นโปรแกรมประยุกต์แบบ BI จากบริษัท Business Object

    4. ใน SQL2008 มีส่วนที่เกี่ยวข้องกับ BI โดยตรงกี่ส่วน อะไรบ้าง

    Integration services (SSIS) ทำหน้าที่รวบรวมข้อมูลจากหลายๆ แหล่งเพื่อนำมาสังเคราะห์ให้อยู่ในรูปแบบที่นำไปใช้ได้อย่างมีประสิทธิภาพ , Analysis services (SSAS) ใช้สร้าโมเดลสำหรับการวิเคราะห์ข้อมูลเช่น Cube และ Subspace และ Reporting services (SSRS) ใช้สร้างรายงานแบบ OLAP

    5. รายงานแบบ OLAP คืออะไร

    คือการวิเคราะห์ข้อมูลแบบออนไลน์ (Online Analytical Processing) ไม่ใช่แค่รายงานตายตัวแบบในกระดาษ แต่เป็นรายงานที่มีพลวัตและมีหลายมิติ

    6. OLTP คืออะไร

    การทำธุรกรรมออนไลน์ (Online Transaction Processing)

    7. ฐานข้อมูล OLAP ต่างจาก OLTP หรือไม่อย่างไร

    ฐานข้อมูลของงาน OLTP จะมีขนาดเล็กกว่าและมีพลวัตสูง ส่วนฐานข้อมูลของ OLAP จะมีขนาดใหญ่กว่ามากและมีพลวัตต่ำหรือถึงกับไม่มีเลย

    8. SSRS มีสถาปัตยกรรมแบบใด

    multi-tier

    9. อะไรคือ presentation tier ของ SSRS

    เว็บเบราว์เซอร์ หรือแอพลิเกชันที่ท่านพัฒนาเองและโปรแกรมจากผู้พัฒนารายที่สาม

    10. SSIS คืออะไร

    คือ Integration services

    ทำหน้าที่รวบรวมข้อมูลจากหลายๆ แหล่งเพื่อนำมาสังเคราะห์ให้อยู่ในรูปแบบที่นำไปใช้ได้อย่างมีประสิทธิภาพ

    11. SSAS คืออะไร

    Analysis services ใช้สร้าโมเดลสำหรับการวิเคราะห์ข้อมูลเช่น Cube และ Subspace

    12. RDL คืออะไร

    Report Definition Language คือภาษาเพื่อการนิยามรายงาน เป็นภาษาแบบ XML ที่ไมโครซอฟต์สร้างขึ้นเพื่อใช้กับ SSRS โดยเฉพาะ ไม่ใช่ภาษาโปรแกรมมิ่งอย่างภาษา C# แต่เป็นภาษาที่เน้นการใช้แท็ก (tag) เพื่อการพรรนนาการจัดหน้ารายงาน

    13. วิธีสร้างและแก้ไข RDL ทำได้อย่างไร

    ใช้ NotePad ก็ได้ แต่ถ้าจะให้ดีควรใช้ MSVS2008 เพราะสะดวกกว่ามาก

    14. ในการใช้งานจริง (production environment) ของ SSRS ควรใช้คอมพิวเตอร์อย่างน้อยกี่เครื่อง

    สี่

    15. การ Build รายงานคืออะไร

    การคอมไพล์และการสร้างแอสเซมบลีที่ทำให้รายงานอยู่ในสภาพที่เปิดดูได้

    16. ดีพลอยคืออะไร

    การโยกย้ายไฟล์ผลลัพธ์ไปใส่ไว้ใน VD ของรายงาน

    17. Credential คืออะไร

    การกำหนดชื่อและรหัสผ่านในระบบรักษาความปลอดภัย

    18. on-demand report คืออะไร

    การสร้างรายงานสดเมื่อผู้ใช้เรียกดู

    19. Sanpshot คืออะไร

    การสร้างรายงานโดยเรนเดอร์เป็น HTML เก็บไว้แสดงเมื่อผู้ใช้เรียกดูรายงานได้โดยไม่ต้องรันคิวรีและเรนเดอร์รายงานอีก

    20. แคชและ Snapshot แตกต่างกันหรือไม่อย่างไร

    แตกต่างกัน เมื่อแคชหมดอายุแล้ว SSRS จะสร้างแคชใหม่ก็ต่อเมื่อมีผู้เรียกใช้ ส่วน Snapshot จะถูกสร้างใหม่โดยอัตโนมัติตามเวลาที่กำหนดไว้แม้จะไม่มีผู้ใช้งาน

     

    บทที่ 27

    1. RDG คืออะไร

    Report Data Group การจัดกลุ่มของข้อมูลในรายงาน

    2. การสร้าง RDG คืออะไร

    คือการกำหนดวิธีผูกโยงกลุ่มของข้อมูลระหว่าง DR กับ DTS

    3. การทำ RDG ซ้อนกันคืออะไร

    คือการแบ่งหมวดหมู่ย่อย โดย RDG แต่จะชั้นจะจัดกลุ่มข้อมูลในรายงานหนึ่งช่วง

    4. RGP คืออะไร

    Row Group Pane คือที่เก็บกลุ่มแถว

    5. CGP คืออะไร

    Column Group Pane คือที่เก็บกลุ่มคอลัมน์

    6. GH คืออะไร

    Group Hierarchy กรุ๊พไฮราคี คือลำดับชั้นของกลุ่ม

    7. PG คืออะไร

    Parent Group กลุ่มแม่ คือกลุ่มบนสุดของ RGP

    8. CG คืออะไร

    Child Group กลุ่มลูก คือกลุ่มที่อยู่ใต้ PG

    9. Tablix แบบมีข้อมูลวิ่งทั้งสองแกนมีอะไรบ้าง

    เช่น เมทริกซ์ (Matrix) หรือชาร์ท (Chart)

    10. DD คืออะไร

    Drill Down รายงานที่ยืดหดได้

    11. การกำหนดค่าโดยปริยายของพารามิเตอร์มีประโยชน์อย่างไร

    เมื่อผู้ใช้เปิดดูรายงาน SSRS จะเรนเดอร์รายงานโดยใช้ค่าโดยปริยายทันที หากไม่ได้กำหนดค่าโดยปริยายเมื่อผู้ใช้เปิดดูรายงานจะพบรายงานที่ว่างเปล่า ผู้ใช้ต้องป้อนค่าให้แก่พารามิเตอร์แล้วกดปุ่ม View Report ก่อน SSRS จึงจะสามารถเรนเดอร์รายงานได้

    12. DF คืออะไร

    Data Filtering ตัวกรองข้อมูล ใช้คัดกรองแถวบรรทัดที่ไม่ต้องการออกให้เหลือเฉพาะข้อมูลที่ต้องการนำเสนอ

    13. DM คืออะไร

    Document Map แผนที่ของเอกสาร มีลักษณะเหมือนสารบัญ เป็นเครื่องช่วยให้ผู้ใช้สามารถท่องไปในรายงานได้ง่าย

    14. DT คืออะไร

    Drill Through รายงานแบบ เชื่อมโยง คือรายงานที่ท่านกำหนดให้บางคอลัมน์เป็นตัวเชื่อมโยงไปยังรายงานอื่น เช่นรายงานแม่มีจุดเชื่อมโยง (Hyper link ไฮเปอร์ลิงค์) ไปยังรายงานลูก

    15. คำสั่ง Immediate IF มีวากยสัมพันธ์อย่างไร

    Iif(นิพจน์เงื่อนไข, นิพจน์1, นิพจน์2)

    16. RP คืออะไร

    Report Processor ตัวประมวลผลรายงาน

    17. BIC คืออะไร

    Built-in Collection หรือ Build-in Fields คอลเลคชันภายใน

    18. ACG คืออะไร

    Adjacent Column Group กลุ่มแบบคอลัมน์ข้างเคียง

    19. ริกซ์ คิวรีของแผนภูมิควรจะเน้นอะไร

    เน้นข้อมูลแบบแอกริเกตซึ่งเป็นข้อมูลสรุป ไม่ใช่คิวรีที่ให้ข้อมูลรายละเอียด

    20. SDS คืออะไร

    Shared Data Sources แชร์ดาต้าซอร์ส คือการสร้าง DS อันเดียวแล้วใช้ร่วมกันจากทุกๆ รายงาน

    21. Custom Code คืออะไร

    คือการเขียนโค้ดฝังไว้ภายในไฟล์รายงาน แต่มีข้อจำกัดว่าต้องเขียนด้วยภาษา VB.NET เท่านั้น วิธีนี้เหมาะกับโค้ดที่ใช้เฉพาะในรายงานหนึ่งๆ

    22. Custom Assembly คืออะไร

    คือการโค้ดเขียนด้วยภาษา C# (หรือภาษาอะไรก็ได้ที่เป็น CLR) เป็นการเขียนโค้ดไว้ภายนอก (ต้องทำเป็นไฟล์ .dll แบบดอตเน็ตแอสเซมบลี ไม่ใช่ .dll ที่เป็น COM/COM+ แบบใน Win32API) วิธีนี้เหมาะกับโค้ดที่ใช้ได้กับรายงานหลายๆ ตัว

    23. การทำ Deployment ตัว CA ทำได้อย่างไร

    ทำได้โดยคัดลอกไฟล์ CA ไปใส่ในโฟลเดอร์ที่กำหนด โฟลเดอร์นี้เป็นโฟลเดอร์ที่เก็บโปรแกรม SSRS หากท่านยอมรับค่าปริยายเมื่อติดตั้ง โฟลเดอร์นี้คือ C:\Program Files\ Microsoft SQL Server2008\ MSRS10.LOYSQL2008\ Reporting Services\ ReportServer\ bin

     

    บทที่ 28

    1. ภาษาอะไรที่ไมโครซอฟท์สร้างขึ้นเพื่อ .NET โดยตรง

    C# เปรียบเหมือนภาษาพื้นเมือง (native language) ของ .NET

    2. ความแตกต่างสำคัญระหว่าง Java Platform กับ .NET Framework คืออะไร

    ใน .NET มีภาษาให้เลือกใช้มากกว่า 30 ภาษา ขณะที่ Java platform มีภาษาให้เลือกใช้เพียงเพียงภาษาเดียว (ภาษา Java)

    3. assembly คืออะไร

    assembly หมายถึงไฟล์ทั้งหมดใน project (ทั้งโค้ดและข้อมูล) ถูกคอมไพล์อัดรวมอยู่เป็นไฟล์เพียงไฟล์เดียว

    4. assembly จะบรรจุโค้ดภาษาอะไร

    MSIL

    5. MSIL คืออะไร

    Microsoft Immediate language หรือ MSIL คือภาษาระดับกลางที่ไมโครซอฟต์สร้างขึ้นเพื่อใช้ใน .NET Framework คล้ายไบต์โค้ดของจาวา

    6. garbage collector คืออะไร

    กลไกของ .NET Framework ตัวหนึ่งหน้าที่ “เวนคืน” พื้นของหน่วยความจำบริเวณนั้น ทำให้หน่วยความจำเป็นอิสระเพื่อให้ CLR นำไปใช้จัดสรรให้ออพเจ็กต์อื่นๆ ที่ถูกสร้างขึ้นใหม่ต่อไป

    7. JIT คืออะไร

    Just In Time compiler เป็นโปรแกรมทำหน้าที่แปลภาษา MSIL ให้เป็นภาษาเครื่อง

    8. CAS คืออะไร

    Code Access Security รักษาความปลอดภัย CLRR เพื่อกำหนดว่ารูทีนใดมีสิทธิเข้าถึงส่วนใดของฐานข้อมูลได้บ้าง

    9. ควรใช้ CLRR เมื่อใด

    เมื่อต้องการเขียนโปรแกรมคำนวณหรือตัดสินใจในตรรกะที่ซับซ้อน หรือง่านอื่นๆ ที่ทำด้วยภาษา T-SQL ไม่ได้ หรือทำได้ยาก

    10. คอมโพเนนท์ทั้งหมดที่จำเป็นต้องใช้สร้าง CLRR อยู่ที่ใดชื่ออะไร

    อยู่ในเบสคลาสของ .NET Framework ชื่อแอสเซมบลีคือ system.data.dll ซึ่งอยู่ใน GAC (Global Assembly Cache) และอยู่ในโฟลเดอร์ <windir> \ Microsoft.NET \ Framework \ <version>

    11. CLRR คืออะไร

    Common Language Runtime Routine โปรแกรมที่สร้างด้วยภาษา C# เพื่อใช้งานใน SQL2008

    12. ฟังก์ชัน T-SQL ที่ให้ค่าเดี่ยวเทียบได้กับ CLRR แบบใด

    เมธอดแบบ public static

    13. ฟังก์ชัน T-SQL ที่ให้ค่าเป็นตารางเทียบได้กับ CLRR แบบใด

    เมธอดแบบ public static

    14. ไทป์ที่ผู้ใช้นิยามเองใน SQL2008 เทียบได้กับ CLRR แบบใด

    คลาสหรือ structure

    15. เมื่อสร้าง CLRR แบบสพร็อกซ์แล้วก่อนจะนำไปใช้งานได้ท่านจะต้องทำอย่างไร

    ลงทะเบียนมันภายใน SQL2008

    16. ตัวแปลภาษา C# และ VB.NET ของ SQL2008 อยู่ที่ใด

    อยู่ในเส้นทางโฟลเดอร์ C:\<windir>\Microsoft.NET\Framework\<version>

    17. ท่านต้องทำอะไรเพื่อให้วินโดวส์หาตัวแปลภาษาเจอเมื่อท่านทำงานอยู่ในโฟลเดอร์อื่น

    ต้องใส่ตำแหน่งที่อยู่ของตัวแปลภาษาไว้ในรายการ “ตัวแปรระบบที่ระบุสภาพแวดล้อม” (Environment System Variable ย่อ ESV)

     

    บทที่ 29

    1. UDA คืออะไร

    User Defined Aggregate ฟังก์ชันแบบเอกริเกตที่ผู้ใช้นิยามขึ้นเอง

    2. CRC คืออะไร

    CLR Related Command คำสั่งที่เกี่ยวข้องกับ CLR

    3. NFA คืออะไร

    .NET Framework Assembly ดอตเน็ตเฟรมเวิร์คแอสเซมบลี

    4. คำสั่งเกี่ยวกับการลงทะเบียน CLRR ทำหน้าที่อะไร

    ช่วยให้ท่านนำ NFA มาสร้างเป็นออพเจ็กต์ในฐานข้อมูลภายใน SQL2008 ได้

    5. คำสั่งเกี่ยวกับ UDA ทำหน้าที่อะไร

    ช่วยให้สามารถสร้างและลบฟังก์ชันแบบเอกริเกตที่ผู้ใช้นิยามขึ้นเองได้โดยนิยาม UDA ด้วยภาษา C# (หรือภาษา .NET อื่นๆ เช่น VB.NET) เป็นคลาสไว้ใน NFA

    6. คำสั่งเกี่ยวกับ UDT ทำหน้าที่อะไร

    ช่วยให้ผู้ใช้สร้างชนิดข้อมูลขึ้นเองได้ ทำได้โดยนิยามคลาสหรือ Struct ด้วยภาษา C# (หรือภาษา .NET อื่นๆ เช่น VB.NET) ไว้ใน NFA

    7. เมตาดาต้าที่เกี่ยวข้องกับ CLRR ของโปรแกรม SQL2008 อยู่ที่ใด

    อยู่ในแคตาล็อกวิวชื่อ sys.all_objects

     

    บทที่ 30

    1. ฟังก์ชันสตริงคืออะไร

    คือฟังก์ชันเพื่อจัดการหรือประมวลผลข้อความตัวอักษร โดยข้อมูลที่ป้อนให้จะเป็นสายอักขระ (สตริง) หรือตัวอักษรตัวเดียวก็ได้ ส่วนผลลัพธ์ที่ฟังก์ชันคืนค่ามาอาจเป็นตัวเลขหรือตัวอักษรก็ได้

    2. ฟังก์ชัน CHAR ทำหน้าที่อะไร

    แปลงเลขจำนวนเต็มเป็นตัวอักษรตามรหัสแอสกี

    3. ฟังก์ชัน LEFT ทำหน้าที่อะไร

    คืนค่าเป็นตัวอักษรทางซ้ายของนิพจน์ตัวอักษรที่ต้องการหาค่าตามจำนวนที่กำหนดโดยเลขจำนวนเต็มบวกทำหน้าที่กำหนดจำนวนตัวอักษร

    4. nondeterministic function คืออะไร

    ฟังก์ชันที่คืนค่าแบบไม่คงที่ คือฟังก์ชันที่อาจคืนค่ามาแตกต่างกันในแต่ละครั้งแม้จะได้รับข้อมูลป้อนให้เป็นชุดเดิม

    5. ฟังก์ชันในกลุ่ม rowset คืออะไร

    ฟังก์ชันที่คืนค่ามาเป็นออพเจ็กต์ที่มีลักษณะเหมือนตาราง ท่านสามารถนำออพเจ็กต์นี้ไปใช้ในนิพจน์หรือประโยคคำสั่ง T-SQL ที่ต้องการค่าเป็นตารางได้

    6. หากต้องการดึงข้อมูลจากเซอฟเวอร์ออราเคิล โดยอาศัย Microsoft OLE DB Provider for Oracle จะต้องใช้ฟังก์ชันอะไร

    ฟังก์ชัน OPENQUERY ทำหน้าที่เปิดการเชื่อมต่อเฉพาะกิจกับฐานข้อมูลที่ไม่ใช่ SQL2008

    7. อ่านข้อมูลจากเอกสารแบบ XML จะต้องใช้ฟังก์ชันอะไร

    ฟังก์ชัน OPENXML

    8. ฟังก์ชันเอกกริเกตคืออะไร

    ฟังก์ชันหาผลรวมทำหน้าที่คำนวณชุดข้อมูลแล้วให้ผลลัพธ์เป็นค่าๆ เดียว

    9. จะใช้ฟังก์ชันในกลุ่มเอกกริเกตได้กับอะไรบ้าง

    รายการในอนุประโยค SELECT (ได้ทั้งคิวรีหลักและย่อย) อนุประโยค COMPUTE หรือ COMPUTE BY อนุประโยค HAVING

    10. ฟังก์ชัน COUNT_BIG ทำหน้าที่อะไร

    ทำหน้าที่นับจำนวนข้อมูลในกลุ่ม หากในกลุ่มมีข้อมูลที่เป็น NULL ก็จะถูกนับด้วย ฟังก์ชัน COUNT_BIG เหมือนฟังก์ชัน COUNT ทุกอย่าง ยกเว้นค่าส่งกลับ

    11. ฟังก์ชัน GROUPING ทำหน้าที่อะไร

    ให้ค่า 1 หากมีแถวจาก CUBE หรือ ROLLUP และให้ค่าเป็นศูนย์หากไม่ใช่ ฟังก์ชัน GROUPING จะใช้ร่วมกับอนุประโยค GROUP BY ที่มีตัวกระทำ CUBE หรือ ROLLUP ร่วมด้วยเท่านั้น

    12. ฟังก์ชัน MIN ทำหน้าที่อะไร

    ทำหน้าที่หาค่าต่ำสุดของค่าในกลุ่มโดยไม่สนใจค่า NULL ถ้านำไปใช้กับข้อมูลตัวอักษรจะนับตามลำดับตัวอักษร (เช่น a ต่ำกว่า b)

     

    บทที่ 31

    1. ADO.NET คืออะไร

    เป็นสิ่งที่ทำให้ภาษา C# ทำงานร่วมกับ SQL2008 ได้ ADO.NET เป็นส่วนหนึ่งของดอตเน็ตเฟรมเวิร์ค

    2. System.Data.SqlTypes คืออะไร

    คือเนมสเปสบรรจุนิยามไทป์ หรือชนิดข้อมูลต่างๆ ที่สัมพันธ์กันระหว่า SQL2008 กับภาษา C#

    3. SqlDataReader คืออะไร

    คือคลาสในเนมสเปส SqlClient ใช้สร้างออพเจ็กต์ซึ่งทำหน้าที่อ่านแถวข้อมูลแบบเดินหน้าได้ทางเดียว

    4. การประกาศตัวแปรออพเจ็กต์โดยกำหนดค่าเริ่มต้นเป็น null มีผลอย่างไร

    ทำให้ไม่มีออพเจ็กต์เกิดขึ้นจริงๆ เป็นเพียงแต่ตัวแปรที่มีชนิดข้อมูลตามระบุ

    5. เมธอด Close ของออพเจ็กต์ connect ทำหน้าที่อะไร

    ปิดการเชื่อมต่อกับ SQL2008

    6. วิธีป้องกันไม่ให้การเชื่อมต่อกับฐานข้อมูลที่เปิดไว้ไม่ถูกปิดเมื่อเกิด error ทำอย่างไร

    วิธีแก้ไขทำได้สองวิธี วิธีที่แรกคือสร้างและใช้งาน SqlConnection ภายในบล็อกคำสั่ง using อีกวิธีหนึ่งคือใช้คำสั่ง try เพื่อดักจับความผิดพลาด

    7. LINQ คืออะไร

    Language Interacted Query ภาษาคิวรีแบบบูรณาการ เป็นเทคโนโลยีที่บริษัทไมโครซอฟต์นำมาผนวกไว้ในวิสชวลสตูดิโอและดอตเน็ตเฟรมเวิร์คเพื่อให้สามารถเขียนคิวรีภายในภาษา C# (หรือภาษา CLR อื่นๆ) ได้โดยตรง

    8. LINQ เริ่มมีใช้เมื่อใด

    เริ่มออกให้ใช้เมื่อปลายปี ค.ศ. 2007 โดยผนวกไว้กับดอตเน็ตเฟรมเวิร์คเวอร์ชัน 3.5 และวิสชวลสตูดิโอ 2008

    9. OODM คืออะไร

    Object Oriented Database Model เป็นการผนวกข้อมูลและส่วนโค้ดที่จัดการมันไว้เป็นก้อนเดียวกัน ช่วยให้นักเขียนโค้ดจัดการฐานข้อมูลได้เหมือนเป็นออพเจ็กต์หนึ่ง

    10. จุดมุ่งหมายที่ไมโครซอฟต์ประดิษฐ์ LINQ คืออะไร

    ต้องการเปิดโอกาสให้นักพัฒนาสามารถใช้หลักการ OOP (Object Oriented Programming การเขียนโปรแกรมแบบวัตถุวิธี) กับการพัฒนาแอพลิเกชันฐานข้อมูลได้อย่างสมบูรณ์ ซึ่งทำไม่ได้ในโมเดลการเขียนโปรแกรมแบบอื่นๆ ก่อนหน้านี้ (เช่น ADO.NET)

    11. O/RM คืออะไร

    การจับคู่ระหว่างออพเจ็กต์กับความสัมพันธ์ แบบจำลองการเชื่อมระหว่าง LINQ กับ SQL

    12. การสร้าง O/RM ทำได้อย่างไร

    ใช้เท็มเพลตชื่อ LINQ to SQL Classes พบได้ในวิสชวลสตูดิโอ 2008 หรือเวอร์ชันใหม่กว่า

    13. ก่อนจะทำ O/RM ได้จะต้องทำอะไรก่อน

    ต้องกำหนดการเชื่อมต่อกับดาต้าเบสเซอฟเวอร์ที่จะใช้เสียก่อน

    14. ITVD คืออะไร

    Implicit Typing Variable Declaration ไทป์แบบใหม่ในภาษา C# เวอร์ชันสามเรียกว่า แอนนอนไมนัส ไทป์ (anonymous type) ทำให้สามารถประกาศเป็นตัวแปรที่ไม่ระบุว่าเป็นชนิดข้อมูลใดแน่ด้วยชนิดข้อมูล var

    15. ตัวแปรแบบวาเรียนคืออะไร

    ตัวแปรที่สามารถเปลี่ยนไทป์ไปมาได้ตามใจชอบตลอดเวลา

    16. ITVD คล้ายหรือแตกต่างจากตัวแปรแบบวาเรียนอย่างไร

    ตัวแปร ITVD ยังคงความเป็นไทป์เซฟตี (Type Safety) ของภาษาดอตเน็ตไว้ได้อย่างเหนียวแน่น เนื่องจากตัวแปลภาษา C# ฉลาดพอที่จะตรวจดูว่าตัวแปร ITVD ถูกกำหนดค่าอะไรไว้ แล้วจะกำหนดชนิดข้อมูลของตัวแปรให้เป็นไปตามนั้นเปลี่ยนแปลงภายหลังอีกไม่ได้

    17. คำสั่ง Take คืออะไร

    เมธอดทำหน้าที่กำหนดจำนวนแถวข้อมูลที่จะรับจากคิวรีโดยเริ่มจากแถวแรกไปจนถึงแถวที่ระบุในอาร์กิวเมนต์ (เหมือน TOP ในภาษา T-SQL)

    18. การนำผลลัพธ์ของคิวรี LINQ ไปใช้นอกจากจะใช้ foreach แล้วท่านยังสามารถใช้แบบใดได้อีก

    ไปใช้เป็นดาต้าซอร์สให้แก่ออพเจ็กต์ที่เป็น DC อย่าง DataGridView

    19. คำสั่ง where ทำหน้าที่อะไร

    คล้ายกับคำสั่ง WHERE ในภาษา T-SQL คือทำหน้าที่คัดกรองแถวข้อมูลโดยอาศัยนิพจน์บูลีนเป็นที่ตั้ง

    20. อนุประโยค group ทำหน้าที่อะไร

    แบ่งแถวข้อมูลออกเป็นกลุ่มๆ แต่ละกลุ่มอาจมีแถวข้อมูลจำนวนศูนย์ถึงหลายๆ แถว ขึ้นอยู่กับว่ามีข้อมูลตรงกับกุญแจที่ใช้ในการจัดกลุ่มหรือไม่

    21. EM คืออะไร

    Extension Method เมธอดเพิ่มขยาย ช่วยให้นิยามเมธอดที่ทำตัวเหมือนเป็นสมาชิกของคลาสแบบ sealed class หรือคลาสที่อยู่ในแอสเซมบลีได้

    22. LE คืออะไร

    Lambda Expression นิพจน์แลมดา การใช้ตัวกระทำ => ช่วยให้เขียนโค้ดได้กระชับอ่านง่ายขึ้นในหลายๆ บริบท (เช่นเมื่อทำดีลิเกต)

    23. OI คืออะไร

    Object Initializes ตัวกำหนดค่าเริ่มต้นให้ออพเจ็กต์ สิ่งที่ช่วยให้เขียนโค้ดได้กระชับอ่านง่ายขึ้น เพราะสามารถกำหนดค่าเริ่มต้นให้พรอพเพอร์ตีได้ในบรรทัดเดียวกับการนิวออพเจ็กต์



    เฉลยคำถามท้ายบท [4]



    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน



    เฉลยคำถามท้ายบท [4]


    บทที่ 16

    1. ด้วยสัญลักษณ์ µ คืออะไร

    คิวรีหลายชั้น

    2. สัญลักษณ์ λ คืออะไร

    คิวรีหลัก

    3. สัญลักษณ์ Σ คืออะไร

    คิวรีย่อย

    4. ฟังก์ชัน MIN ใช้ทำอะไร

    เป็นฟังก์ชันแบบแอกริเกตเพื่อหาค่าน้อยที่สุด

    5. แถวข้อมูลกำพร้าคืออะไร

    หมายถึงแถวข้อมูลในตารางหนึ่งที่ไม่มีคู่ในอีกตารางหนึ่ง

    6. ตารางชั่วคราวคืออะไร

    คือตารางที่ถูกสร้างขึ้นชั่วคราวในหน่วยความจำ สามารถนำไปใช้จอยกับตารางอื่นได้ และจะไม่หายไปเองเมื่อสิ้นแบตช์เหมือนอย่างตัวแปร ต้องใช้คำสั่ง DROP เพื่อลบ

    7. ฟังก์ชันที่เหมาะจะนำมาใช้ตรวจหาค่า NULL คือฟังก์ชันอะไร

    ฟังก์ชัน ISNULL()

    8. ฟังก์ชันใช้แปลงชนิดข้อมูลคืออะไร

    ฟังก์ชัน CAST()

    9. ตารางสืบคืออะไร

    คือตารางเสมือนที่เกิดจากการฉายแสดงข้อมูลด้วยคำสั่ง SELECT

    10. คำสั่ง EXITSIS เหมือนหรือแตกต่างจาก IN อย่างไร

    แตกต่างกันที่เมื่อคำสั่ง IN เราจะสนใจในข้อมูลที่ Σ คืนมาให้ แต่เมื่อใช้คำสั่ง EXITSIS เราไม่สนใจตัวข้อมูลเลย

     

    บทที่ 17

    1. เคอร์เซอร์แปลว่าอะไร

    หมายถึงอะไรก็ตามที่กำลังวิ่งอยู่

    2. วิธีประกาศเคอร์เซอร์ทำได้โดยใช้คำสั่งอะไร

    CREATE CURSOR

    3. เมื่อเลิกใช้เคอร์เซอร์แล้วควรทำอะไร

    เวนคืนหน่วยความจำที่ใช้สำหรับเคอร์เซอร์และ DT ด้วยคำสั่ง DEALLOCATE

    4. เคอร์เซอร์มีกี่ชนิด อะไรบ้าง

    สี่ชนิดคือ Static, Dynamic, Forward-only และ Scroll

    5. @@FETCH_STATUS คืออะไร

    ตัวแปรโกบัลของ SQL2008 ทำหน้าที่ให้ค่าสถานะของการดึงข้อมูล (Fetch) จาก DT ของเคอร์เซอร์ หากการดึงข้อมูลทำได้เรียบร้อยดี ค่าของ @@FETCH_STATUS จะเท่ากับศูนย์ หากเกิดเออเรอร์จะเท่ากับ -1

    6. การใช้เคอร์เซอร์ควรทำอย่างระวังเพราะอะไร

    เพราะคิวรีที่ใช้เคอร์เซอร์อาจทำงานช้ากว่าคิวรีแบบเซตถึงสามสิบเท่า

    7. CTE คืออะไร

    คือนิพจน์ตารางร่วมเป็นกลไกอีกอย่างหนึ่งที่ช่วยให้สร้าง DT ได้

    8. CTE แต่ต่างจากคิวรีย่อยย่างไร

    แตกต่างตรงที่ CTE ต้องประกาศนิยาม DT ไว้ก่อนก่อนคำสั่ง SELECT ขณะที่คิวรีย่อยที่มีโค้ดฝังอยู่ภายในรายการคอลัมน์ของคำสั่ง SELECT

    9. คำสั่งบรรทัดสุดท้ายในแบตช์ที่อยู่ก่อนหน้า CTE ต้องใส่อะไร

    ต้องใส่เครื่องหมายเซมิโคลอน

    10. เทรตาจอย (θ-join) คืออะไร

    การจอยแบบมีเงื่อนไข

    11. CTE มีข้อดีกว่าการทำด้วยคิวรีย่อยอย่างไร

    อ้างถึง DT ที่เกิดจากคิวรีย่อยได้เพียงจุดเดียว แต่สามารถอ้างอิง DT ที่เกิดจาก CTE ได้ในหลายๆ จุด ในแบตช์เดียวกัน

    12. รีเคอร์ชันคืออะไร

    การเขียนโค้ดที่เรียกตัวเอง

    13. คิวรีแบบรีเคอร์ซีฟมีประโยชน์อย่างไร

    มีประโยชน์เมื่อใช้นำไปท่องโครงสร้างที่เป็นลำดับชั้น

    14. การเขียนคิวรีรีเคอร์ซีฟในภาษา T-SQL แตกต่างจากการเขียนรีเคอร์ซีฟในภาษา C# อย่างไร

    ไม่จำเป็นต้องมีตัวตรวจสอบการทำงานซ้ำเพราะเมื่อลูปไปจนหมดแถวใน DT แล้วโปรแกรมจะรู้เองว่าควรหยุดการรีเคอร์ซีฟแค่นั้น

     

    บทที่ 18

    1. QOP คืออะไร

    Query Optimization การปรับแต่งคิวรีให้มีประสิทธิภาพสูงสุด

    2. QAP คืออะไร

    Query Analyze Practicing การวิเคราะห์การทำงานของคิวรีเพื่อตรวจสอบว่าเกิดอะไรขึ้นบ้างเมื่อสั่งให้คิวรีทำงาน

    3. EP คืออะไร

    Execution Plan แผนการทำงานที่ SQL2008 วางไว้เพื่อกระทำต่อคิวรี

    4. กระบวนการอันเกี่ยวเนื่องกับ T-SQL แบ่งออกอย่างคร่าวๆ ได้เป็นอะไร

    กระบวนการที่เกิดขึ้นภายในเอ็นจินสัมพันธ์และกระบวนการที่เกิดขึ้นภายในเอ็นจินจัดการหน่วยบันทึก

    5. RE คืออะไร

    Relational Engine เอ็นจินสัมพันธ์คือโปรแกรมใน SQL2008 ที่ทำงานเกี่ยวข้องกับการแปลคิวรีแล้วนำไปดำเนินการโดยคิวรีออพติไมเซอร์

    6. SE คืออะไร

    Storage Engine เอ็นจินจัดการหน่วยบันทึก คือโปรแกรมใน SQL2008 หน้าที่อ่านหรือบันทึกข้อมูลในฮาร์ดดิสก์

    7. QP คือไร

    Query Parsing การแปลคิวรี คือกระบวนการที่ RE ทำให้คิวรีภาษา T-SQL กลายเป็นคำสั่งที่ SE สามารถนำไปปฏิบัติได้

    8. PT คืออะไร

    Parse Tree แผนภูมิต้นไม้แสดงการกระจายคำในไวยากรณ์ ทำหน้าที่นำเสนอลำดับขั้นตอนต่างๆ ที่จำเป็นต้องใช้เพื่อปฏิบัติตามคำสั่งในคิวรี

    9. QAZ คืออะไร

    Query Algebrizer พีชคณิตกร มีหน้าที่ตรวจสอบในคิวรีว่ามีการกำหนดหรืออ้างถึงชื่ออะไรบ้าง

    10. AB คืออะไร

    Aggregate Biding

    การผูกแอกริเกต การตรวจสอบว่าคิวรีนั้นมีการทำแอกริเกตหรือไม่

    11. QPT คืออะไร

    Query Processor Tree แผนภูมิต้นไม้ของตัวประมวลผลคิวรี

    12. QO

    Query Optimizer คิวรีออพติไมเซอร์ คือตัวจักรสำคัญของโปรแกรม SQL2008 ในการทำงานเกี่ยวกับคิวรี

    13. CBP คืออะไร

    Cost-Based Plan แผนการทำงานอิงค่าใช้จ่าย คำว่าค่าใช้จ่ายในที่นี้หมายถึงค่าความสิ้นเปลืองทรัพยากรของระบบ เช่นซีพียู I/O รวมถึงเวลาที่ต้องใช้ในการปฏิบัติด้วย

    14. TP คืออะไร

    Trivial Plan แผนปลีกย่อย เป็น CBP พื้นฐานสำหรับคิวรีง่ายๆ ทั่วไป

    15. EC คืออะไร

    Estimated Cost ค่าประเมินคือค่าใช้จ่ายในการทำงานของคิวรีที่เกิดจากการคาดการของ QO

    16. HV คืออะไร

    Heuristic Evaluation หลักการหากวิธีดีสุดเพื่อเลือก CBP แบบที่ดีที่สุด QO ทำ

    1. เมื่อถึงคราวทำงานจริงๆ SE อาจไม่ดำเนินการตาม EP เพราอะไร

    เพราะ EP ที่ได้ไม่เหมาะกับการทำงานแบบขนาน หรือ SD เก่าเกินไปหรือถูกเปลี่ยนแปลงหลังจาก QO ใส่ EP ไว้ในแคชแล้ว

    18. EEP คืออะไร

    Estimated Execution Plan แผนการทำงานโดยประเมินเป็นแผนการที่ QO ส่งให้ SE ทำงาน

    19. AEP คืออะไร

    Actual Execution Plan แผนการทำงานจริง ขั้นตอนการทำงานหรือตัวดำเนินการต่างๆ ที่ทำงานไปแล้ว

    20. EPC คืออะไร

    Execution Plan Cache แคชเก็บแผนงาน

    21. EPR คืออะไร

    Execution Plan Reuse การนำ EP กลับมาใช้งานใหม่

    22. เลซีไรเตอร์คืออะไร

    Lazywriter เป็นโปรเซสของ SQL2008 ทำหน้าที่ตรวจสอบว่า EP ในแคชหมดอายุหรือยัง

    23. DMV คืออะไร

    Dynamic Management View คือวิวที่ใช้เพื่อตรวจสอบว่า QE และ SE สร้าง EP อะไรไว้บ้าง

    24. DEEP คืออะไร

    ปุ่ม Display Estimated Execution Plan ใช้เพื่อให้แสดง EEP โดยไม่ต้องรันคิวรี

    25. ESP คืออะไร

    Execute and Show Plan โหมดปฏิบัติและแสดงแผนการทำงาน

    26. IAEP คืออะไร

    ปุ่ม Include Actual Execution Plan ทำหน้าที่เปิด-ปิดโหมด ESP

    27. PO คืออะไร

    Physical Operator ตัวดำเนินการทางกายภาพ ใช้เพื่อแสดงการกระทำที่เกิดขึ้นจริงๆ

    28. LO คืออะไร

    Logical Operator ตัวดำเนินการทางตรรกะ ใช้เพื่อแสดงการทำนายหรือคาดการณ์กระบวนการที่จะเกิดขึ้น

    29. CC คืออะไร

    Computed Column เป็นคอลัมน์ที่เกิดจากการคำนวณ

    30. COI คืออะไร

    Covering Index ดรรชนีครอบคลุม เป็นดรรชนีที่ถูกสร้างขึ้นเพื่อให้ครอบคลุมความต้องการ หรือครอบคลุมคอลัมน์ที่ต้องการใช้ในคิวรี

     

    บทที่ 19

    1. หากต้องการผลลัพธ์แบบ CUBE แต่ไม่ใช้คำสั่ง CUBE ทำได้หรือไม่

    ทำได้โดยเขียน SELECT หลายๆ ชุดแล้วนำมาเชื่อมด้วยยูเนียน

    2. เมื่อใช้คำสั่ง ROLLUP ทำให้ผลลัพธ์เป็นอย่างไร

    เกิดการกระจายกลุ่มที่ทำแอกริเกตออกตามความเป็นไปได้ในลักษณะต่างๆ ครบทุกแบบ

    3. คำสั่ง PIVOT ทำหน้าที่อะไร

    นำข้อมูลในแถวข้อมูลมาทำเป็นคอลัมน์ ผลลัพธ์ที่ได้คล้าย Pivot table ในโปรแกรม Excel

    4. Hardcode คืออะไร

    การระบุค่าตายตัวในโค้ดโดยตรงไม่ได้นำมาจากฐานข้อมูล เช่นการเปลี่ยนรหัสพนักงานให้เป็นชื่อทำโดยการตั้งชื่อเล่นของคอลัมน์ด้วยคำสั่ง AS

    5. คำสั่ง UNPIVOT ทำหน้าที่อะไร

    ทำหน้าที่ตรงกันข้ามกับ PIVOT คือแปลงเมทริกซ์กลับไปเป็นตาราง (tabular ทาบูลาร์)

    6. คำสั่งอะไรเปลี่ยนข้อมูลจากแนวนอนไปเป็นแนวตั้ง หรือเปลี่ยนจากแถวไปเป็นคอลัมน์

    PIVOT

    7. ฟังก์ชันในกลุ่มวินโดว์ประกอบด้วยคำสั่งอะไรบ้าง

    ROW_NUMBER, OVER, PARTITION BY, RANK, DENSE_RANK และ ORDER BY

     

    บทที่ 20

    1. วิวคืออะไร

    คือคิวรีภาษา T-SQL ทำหน้าที่เป็นตารางเสมือนฉายแสดงข้อมูลจากตารางเดียวหรือจากหลายๆ ตาราง

    2. ประโยชน์ของวิวคืออะไร

    ช่วยให้รวมคอลัมน์จากหลายๆ ตารางมาเป็นกลุ่มเดียวกัน เพื่อให้เกิดรูปแบบข้อข้อมูลในลักษณะใดลักษณะหนึ่ง ผู้ใช้ (หมายถึง end-user) สามารถใช้วิวเพื่อเข้าถึงข้อมูลที่ต้องการได้โดยไม่จำเป็นต้องได้รับสิทธิให้เข้าถึงตารางจริงๆ

    3. วิวอำนวยความสะดวกให้ผู้ใช้ได้อย่างไร

    ผู้ใช้ไม่จำเป็นต้องเขียนคิวรีเพื่อเชื่อมโยงตารางต่างๆ เอง และไม่ต้องสนใจกฎทางธุรกิจที่อาจมีการประมวลผลซับซ้อน แต่ผู้ใช้สามารถเขียนคิวรีให้ทำงานกับวิวเพียงแค่ใช้คำสั่ง SELECT * ก็จะได้ข้อมูลที่ต้องการครบ และอาจใช้คำสั่ง WHERE กับเงื่อนไขง่ายๆ เพื่อคัดกรองแถวข้อมูลจากวิวได้

    4. วิวใช้รักษาความปลอดภัยได้อย่างไร

    สร้างวิวหลายๆ แบบแล้วกำหนดให้พนักงานแต่ละกลุ่มเข้าถึงข้อมูลทางอ้อมผ่านวิวแต่ละแบบ

    5. วิวหลายชั้นเป็นอย่างไร

    วิวที่คิวรีข้อมูลจากวิวอื่น

    6. ทริกเกอร์คืออะไร

    ออพเจ็กต์ฐานข้อมูลซึ่งเป็นโค้ดที่จะทำงานเองโดยอัตโนมัติเมื่อเกิดเหตุการณ์บางอย่าง

    7. ทริกเกอร์เหมือนหรือแตกต่างจากสพร็อกซ์หรือไม่อย่างไร

    เหมือนกันที่เป็นโค้ดที่ถูกเก็บไว้เป็นออพเจ็กต์ ต่างกันที่เรียกให้สพร็อกซ์ทำงานเมื่อใดก็ได้ แต่ทำเช่นนั้นกับทริกเกอร์ไม่ได้

    8. ทริกเกอร์จะทำงานเมื่อใด

    ทำงานเองโดยอัตโนมัติเมื่อถูกกระตุ้นด้วยเหตุการณ์ที่กำหนดไว้

    9. ทริกเกอร์มีกี่แบบ

    มีสองแบบคือแบบ DML และแบบ DDL

    10. ทริกเกอร์ที่พบบ่อยเป็นแบบใด

    ทริกเกอร์แบบ DML

    11. ข้อควรระวังในการใช้ทริกเกอร์คืออะไร

    โจทย์ใดสามารถใช้ข้อกำหนด (Constraint) ได้ให้ใช้ข้อกำหนดแทนการใช้ทริกเกอร์ เพราะจะทำให้การทำงานมีประสิทธิภาพดีกว่า

    12. ทริกเกอร์อยู่ที่ใดใน OE ของ SSMS

    ภายใต้ไอคอน AdventureWorks / Table / Customer / Triggers

    13. คำสั่ง RAISERROR ทำหน้าที่อะไร

    ทำหน้าที่แสดงข้อความที่กำหนด

    14. วิธีส่งอีเมลในคิวรีทำอย่างไร

    เรียกสพร็อกซ์ชื่อ sp_send_dbmail

     

    บทที่ 21

    1. คำว่า Dynamic หมายถึงอะไร

    หมายถึงเปลี่ยนแปลงได้ มีพลวัต ไม่ตายตัว

    2. DSQL คืออะไร

    คือคิวรีที่มีพลวัต

    3. โค้ดที่เปลี่ยนแปลงตัวเองได้มีข้อดีอย่างไร

    โปรแกรมมีความยืดหยุ่นรองรับสถานการณ์ที่เปลี่ยนไปได้

    4. ข้อเสียของ DSQL คืออะไร

    ดีบักยากและอาจทำให้เกิดช่องโหว่ในการรักษาความปลอดภัย

    5. วิธีใช้งาน DSQL อย่างง่ายที่สุดอาศัยคำสั่งอะไร

    คำสั่ง EXECUTE

    6. คำสั่ง IF แต่ต่างจาก CASE อย่างไร

    IF จะทำงานกับประโยคคำสั่งส่วนที่ไม่ใช่คิวรี ส่วนคำสั่ง CASE ใช้ทำงานภายในคิวรี

    7. เครื่องหมายฟันหนู (') ใช้ทำอะไร

    กำหนดขอบเขตของข้อความ

    8. พารามิเตอร์มีประโยชน์อย่างไรต่อ DSQL

    ช่วยให้ใช้งาน DSQL ได้พลิกแพลงได้หลากหลายยิ่งขึ้น

    9. อะไรที่ช่วยให้ใช้พารามิเตอร์กับ DSQL ได้

    สพร็อกซ์ชื่อ sp_executesql

    10. วิธีใช้ sp_executesql ทำได้อย่างไร

    ทำได้โดยใช้คำสั่ง EXECUTE ตามด้วย sp_executesql แล้วตามด้วยชื่อตัวแปรที่เป็นพารามิเตอร์

    11. SQL Injection คืออะไร

    การโจมตีแบบ SQL Injection คือการที่ผู้ไม่ประสงค์ดีใช้โปรแกรมฝั่งไคลแอนท์สอดแทรกสคริปต์คำสั่ง SQL โดยมีจุดมุ่งหมายเพื่อสร้างความเสียหายต่อฐานข้อมูล



    เฉลยคำถามท้ายบท [3]


    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน



    เฉลยคำถามท้ายบท [3]


    บทที่ 9

    1. สถาปัตยกรรมแบบ ฟอน นอยมานเป็นอย่างไร

    สถาปัตยกรรมที่มีโปรเซสเซอร์เพียงตัวเดียว

    2. การคิดแบบ PL เป็นอย่างไร

    คือคิดแบบแยกย่อยประบวนการเป็นขั้นตอนเล็กๆ เพื่อดำเนินการตามลำดับ

    3. การคิดแบบเซตเป็นอย่างไร

    คิดเป็นภาพรวมทั้งหมด หรือเป็นก้อนใหญ่ทั้งก้อนไปในทีเดียวกัน

    4. ตารางเทียมแบ่งออกเป็นกี่แบบ

    สามแบบคือ ตารางช่วย (Auxiliary Table) ตารางชั่วคราว (Temporal Table) ตารางเสมือน (Virtual Table)

    5. แบบจำลองในการเขียนโปรแกรมมีทั้งหมดกี่แบบ

    แบบเน้นกระบวนการ (Procedural Programming)แบบเน้นฟังก์ชัน (Functional Programming)

    แบบเน้นข้อกำหนด (Constraint Programming) แบบเน้นวัตถุ (OOP)

    6. ดาต้าโมเดลคืออะไร

    แบบจำลองข้อมูลลักษณะการเก็บข้อมูลในโลกของฐานข้อมูลสัมพันธ์

    7. คอลัมน์คืออะไร

    คือการแบ่งข้อมูลในแถวออกเป็นส่วนๆ

    8. แถวคืออะไร

    คือการแบ่งข้อมูลในตารางออกเป็นส่วนๆ

    9. คิวรีคืออะไร

    ในหนังสือเล่มนี้หมายถึงคำสั่งภาษา T-SQL ทั้งหมด

    10. โมเลกุลคืออะไร

    การเก็บค่าหลายๆ ค่าไว้ภายในคอลัมน์เดียว

    11. หน่วยข้อมูลแบบไอโซเมอร์คืออะไร

    หน่วยข้อมูลสองหน่วยที่มีข้อมูลเดี่ยวจำนวนเท่ากันและชนิดเดียวกัน

    12. ตัวแสดงแทนคืออะไร

    โค้ดให้ส่งค่ากลับเป็นค่างคงที่เพื่อให้โค้ดที่เรียกใช้สามารถรันได้เหมือนมีเมธอดที่เขียนเสร็จแล้วจริงๆ

    13. อะมีบาเทียบได้กับอะไร

    การทำงานของคิวรีที่สามารถแตกตัวออกเป็นตัวประมวลผลใหม่จำนวนมากและกระจายงานให้ทำพร้อมๆ กันได้

    14. Derived Table คืออะไร

    ตารางชั่วคราวที่เกิดจากการทำงานของคิวรี

     

    บทที่ 10

    1. ภาษา T-SQL ถูกออกแบบมาอย่างไร

    ให้มีรูปแบบคำสั่งคล้ายภาษามนุษย์ หรือภาษาธรรมชาติ เพื่อให้ผู้ใช้ที่ไม่ใช่โปรแกรมเมอร์หรือนักคอมพิวเตอร์ สามารถป้อนพิมพ์คิวรีเพื่อดึงข้อมูลจากฐานข้อมูลได้เอง

    2. คำสั่ง GO ทำหน้าที่อะไร

    กำหนดจุดสิ้นสุดของแบตช์

    3. คำสั่ง USE ทำหน้าที่อะไร

    กำหนดฐานข้อมูลที่ต้องการทำคิวรี

    4. เครื่องหมาย ; มีหน้าที่อะไร

    ระบุจุดสิ้นสุดของบรรทัดคำสั่ง

    5. เครื่องหมายขีดลบติดกันสองอัน (--) ใช้ทำหน้าที่อะไร

    กำหนดหมายเหตุหรือคอมเมนท์แบบ ANSI

    6. เครื่องหมาย @ มีหน้าที่อะไร

    มีไว้ใส่นำหน้าชื่อตัวแปร

    7. ขอบเขตของตัวแปรท้องถิ่นเป็นอย่างไร

    มีขอบเขตหรือมีชีวิตอยู่ภายในแบตช์ที่ประกาศมันเท่านั้น

    8. คำสั่ง Step over ใช้ทำอะไร

    รันโค้ดข้ามส่วนสพร็อกซ์ ฟังก์ชัน ทริกเกอร์ ที่ปรากฏอยู่ภายในคิวรี

    9. ตัวแปรแบบใดเก็บค่าเป็นโรวเซต

    ตัวแปรแบบตาราง (table variable)

    10. การกำหนดค่าตัวแปรด้วย SET และ SELECT แตกต่างกันอย่างไร

    คำสั่ง SET นำค่ามาจากค่าคงที่หรือนิพจน์ ส่วนคำสั่ง SELECT นำค่ามาจากตาราง

    11. คำสั่ง Begin/End มีหน้าที่อะไร

    ช่วยให้กำหนดบล็อกเพื่อให้คำสั่งต่างๆ ที่จะทำงานเมื่อเงื่อนไขของ IF เป็นจริงมีได้หลายบรรทัด

    12. คำสั่ง WAITFOR ใช้ทำอะไร

    ใช้ทำให้โปรแกรมหยุดรอตามเวลาที่กำหนด โดยช่วงที่หยุดรออาจกำหนดเป็นวินาที หรือกำหนดให้หยุดรอจนถึงเวลาที่กำหนด

    13. คำสั่ง CASE แตกต่างจากคำสั่ง IF อย่างไร

    คำสั่ง IF ใช้กับบล็อกของโค้ดภายนอกคิวรี ส่วนคำสั่ง CASE ใช้ตรวจสอบเงื่อนไขและทำงานภายในคิวรี

    14. ตัวแปรโกลบอลคืออะไร

    คือตัวแปรของระบบเพื่อใช้เรียกดูสถานะ

    15. ชื่อตัวแปรท้องถิ่นควรเขียนแบบใด

    ปาสคาล

    16. อินเตอร์เซคคืออะไร

    คือตัวกระทำทางเซต เมื่อ x = A ∩ B ค่าของ x จะเป็นหน่วยต่างๆ ที่มีซ้ำกันอยู่ในทั้ง A และ B

    17. คำสั่ง TOP ใช้ทำหน้าที่อะไร

    ใช้ร่วมกับคำสั่ง SELECT เพื่อกำหนดจำนวนแถวที่ต้องการให้ฉายแสดง

     

    บทที่ 11

    1. ท่านสามารถสร้างตารางในฐานข้อมูลได้กี่ตาราง

    สองพันล้านตาราง

    2. ในหนึ่งตารางเก็บข้อมูลได้กี่แถว

    เก็บได้ไม่จำกัดจนกว่าฮาร์ดดิสก์จะเต็ม

    3. ภายในหนึ่งตารางมีดรรชนีได้กี่ดรรชนี

    หนึ่งพันดรรชนี

    4. คำว่า dbo คืออะไร

    ย่อจาก Database Owner หมายถึงผู้สร้างฐานข้อมูลนั้น

    5. ตัวกำหนด IGNORE_DUP_KEY ทำหน้าที่อะไร

    ทำหน้าที่กำหนดว่าจะให้แสดงเออเรอร์เมื่อพบค่าในกุญแจซ้ำกันหรือไม่

    6. วิธีเรียกดูรายการออพเจ็กต์ที่ผูกอยู่กับตารางทำอย่างไร

    ทำได้โดยเรียกดูวิวชื่อ sys.dm_sql_referencing_entities

     

    บทที่ 12

    1. DT คืออะไร

    คือ Derived Table เป็นตารางเสมือนที่เกิดจากผลลัพธ์ของคำสั่ง SELECT

    2. คำสั่ง WHERE มีหน้าที่อะไร

    ใช้คัดกรองแถวข้อมูลใน DT ที่เกิดจากผลลัพธ์ของคำสั่ง SELECT

    3. คำสั่ง DISTINCT ทำหน้าที่อะไร

    กำจัดข้อมูลซ้ำภายใน DT

    4. การคัดกรองด้วยเงื่อนไขหลายอย่างทำอย่างไร

    ใช้คำสั่ง WHERE ร่วมกับตัวกระทำตรรกะ AND และ OR

    5. คำสั่ง AS ใช้ทำอะไร

    ใช้กำหนดชื่อเล่นให้คอลัมน์ของ DT

    6. การสุ่มดูข้อมูลในตารางทำอย่างไร

    ใช้คำสั่ง TABLESAMPLE หรือใช้คำสั่ง ORDER BY ร่วมกับฟังก์ชัน NEWID()

    7. ตรวจสอบหาค่า NULL ทำอย่างไร

    ใช้คำสั่ง IF NULL

    8. ตรวจสอบหาค่าที่ไม่ใช่ NULL ทำอย่างไร

    ใช้คำสั่ง IF NOT NULL

    9. คำสั่ง LIKE มีประโยชน์อย่างไร

    ค้นหาข้อความที่รู้ค่าเพียงบางส่วน หรือต้องการดูข้อมูลหลายๆ แถวที่มีข้อความคล้ายๆ กัน

    10. ตัวกำหนด DESC ทำหน้าที่อะไร

    เรียงลำดับกลับด้านจาก Z ไป A

    11. เมตาดาต้าชื่อ INFORMATION_SCHEMA.TABLES มีประโยชน์อย่างไร

    ใช้เรียกดูรายชื่อตารางทั้งหมดในฐานข้อมูลหนึ่งๆ

    12. วิธีเรียกดูรายชื่อคอลัมน์ทั้งหมดในตารางทำอย่างไร

    ใช้เมตาดาต้าชื่อ INFORMATION_SCHEMA.COLUMNS

    13. คำสั่ง UNION ALL ใช้ทำอะไร

    จับสอง DT จากสองคิวรีมารวมเป็น DT เดียว

    14. ตารางที่ UNION กันได้ต้องเป็นอย่างไร

    ต้องเป็นตารางที่เข้ากันได้ในทางยูเนียนหรือ Union Compatible Tables

    15. Cartesian product คืออะไร

    คือการจับคู่ทุกแบบหรือทุกความเป็นไปได้ระหว่างแถวข้อมูลในสองตาราง

    16. การจอยแบบใดให้ผลลัพธ์เหมือน Cartesian product

    INNER JOIN

    17. ฟังก์ชัน SUBSTING ทำหน้าที่อะไร

    นำตัวอักษรในสตริงมาแยกออกเป็นตัวๆ

    18. ฟังก์ชัน LEN มีหน้าที่อะไร

    ให้ข้อมูลความยาวของสตริง

    19. คำสั่ง WITH ใช้ทำอะไร

    ใช้สร้างคิวรีแบบ "นิพจน์ตารางร่วม" Common Table Expression

    20. แอกริเกต (Aggregate) คืออะไร

    คือการหาผลรวมของจำนวนเลขจากข้อมูลหลายๆ แถว

    21. การเปรียบเทียบชั่วโมงของเวลาสองเวลาทำอย่างไร

    ใช้ฟังก์ชัน DATEDIFF กำหนดพารามิเตอร์เป็น DAY แล้วคุณด้วย 24 คือ DATEDIFF(DATE, day1, day2) * 24

    22. การเปรียบเทียบนาทีของเวลาสองเวลาทำอย่างไร

    ใช้ฟังก์ชัน DATEDIFF กำหนดพารามิเตอร์เป็น DAY แล้วคุณด้วย 24 แล้วคุณด้วย 60 คือ DATEDIFF(DATE, day1, day2) * 24 * 60

    23. การสร้าง Pivot table ทำอย่างไร

    ทำได้โดยใช้คำสั่ง COALESCE และ ROLLUP

     

    บทที่ 13

    1. RC คืออะไร

    คือแคลคูลัสที่คอดด์พัฒนาขึ้นเพื่อใช้ทำงานกับฐานข้อมูลสัมพันธ์โดยเฉพาะ

    2. ลักษณะเด่นอย่างหนึ่งของ RC คืออะไร

    เน้นตัวแปรย่าน

    3. ตัวแปรย่านคืออะไร

    เป็นตัวแปรที่มีค่าเป็นทูเพิลในตาราง คือตัวแปรซึ่งเก็บอนุญาตให้เก็บได้เฉพาะทูเพิลในตารางเท่านั้น

    4. แคลคูลัสแบบที่เน้น RV เรียกว่าอะไร

    เรียกว่าแคลคูลัสภาคทูเพิล

    5. เพราะอะไรจึงต้องเสียเวลาเรียน RC

    เพราะภาษา T-SQL มีต้นกำเนิดมาจาก RC

    6. DT คืออะไร

    คือตารางเทียมซึ่งเกิดจากแถวและคอลัมน์ที่เป็นผลลัพธ์ของคิวรี

    7. ตัวแปรชี้ทูเพิลคืออะไร

    คือตัวแปรนี้ทำหน้าที่เหมือนมือชี้ที่คอยชี้ไล่ไปตามข้อมูลแต่ละแถว เพื่อตรวจดูว่าแถวที่กำลังชี้อยู่มีข้อมูลตรงกับเงื่อนไขหรือไม่

    8. การฉายแสดงคอลัมน์ทั้งหมดดีหรือไม่

    ไม่ดีเพราะตารางบางตารางอาจมีคอลัมน์เป็นร้อยทำให้ข้อมูลล้นจอหรือหน้ากระดาษและช้าเพราะมีปริมาณข้อมูลไหลจำนวนมาก

    9. ชื่อเล่นหรือ Alias มีประโยชน์อย่างไร

    ช่วยทำให้คิวรีกระชับและอ่านง่ายขึ้น

    10. การจอยแบ่งออกเป็นประเภทหลักกี่แบบ

    แบ่งออกเป็นสองแบบคือ “การจอยสามัญ” และ “การจอยมีเงื่อนไข”

    11. CROSS JOIN คืออะไร

    คือการจอยแบบคาร์ทีเซียนโดยไม่มีเงื่อนไข

    12. INNER JOIN คืออะไร

    เหมือน CROSS JOIN แต่ต้องระบุเงื่อนไขในการจอย

    13. การอ่าน RCE ควรอ่านทิศทางใด

    อ่านไล่จากขวาไปซ้าย

    14. วิวมีประโยชน์อย่างไร

    ทำให้คิวรีซับซ้อนน้อยลง

    15. เครื่องหมาย $ คืออะไร

    หมายถึง "มีปรากฏในแถว”

    16. การเขียน RCE ช่วยให้การสร้างคิวรีง่ายขึ้นเพราะอะไร

    เพราะการตรวจสอบความถูกต้องของคิวรีขณะอยู่ในรูปของ RCE ทำได้ง่ายกว่าตอนแปลเป็นภาษา T-SQL แล้ว

    17. RC มีวิธีคิดอย่างไร

    มีวิธีคิดอย่าง NP คือไม่เน้นกระบวนการคือใกล้เคียงกับการสั่งด้วยภาษาธรรมชาติ

     

    บทที่ 14

    1. ทูเพิลคืออะไร

    มีความหมายเดียวกับคำว่าแถวข้อมูล (Row) ในตาราง

    2. เซตคืออะไร

    คือรีเลชันที่ไม่มีทูเพิลซ้ำกัน

    3. แบ็กคืออะไร

    คือรีเลชันที่มีทูเพิลซ้ำกัน

    4. ตัวถูกดำเนินการแบบอะตอมคืออะไร

    หมายถึงตัวถูกดำเนินการที่เป็นหน่วยๆ เดียว แบ่งแยกไม่ได้

    5. ตัวดำเนินการในวิชา RA แบ่งออกเป็นกี่ประเภท

    สี่ คือ ตัวดำเนินการทางเซตธรรมดา ตัวดำเนินการที่ทำหน้าที่ตัดบางส่วนของความสัมพันธ์ ตัวดำเนินการซึ่งทำหน้าที่นำความสัมพันธ์สองชุดมารวมเข้าด้วยกัน ตัวดำเนินการเพื่อการเปลี่ยนชื่อ

    6. DT คืออะไร

    Derived Table รีเลชันเสมือนที่เกิดจากผลลัพธ์ของคิวรี มีความหมายเดียวกับ "ชุดผลลัพธ์" (Result Set ย่อ RS)

    7. ตัวกระทำทางเซตทั้งเจ็ดของคอดด์มีอะไรบ้าง

    ตัวคัดกรอง (Restrict) ตัวฉายแสดง (Project) การคูณ (Product) ยูเนียน (Union) อินเตอร์เซคชัน (Intersection) ดิฟเฟอร์เรนซ์ (Difference) การจอย (Join) การหาร (Divide)

    8. คำสั่ง WITH มีประโยชน์อย่างไร

    เป็นเครื่องมือเพื่อช่วยให้เขียนสูตรได้กระชับเข้า

    9. จงสำแดงนิยามของยูเนียน

    คือผลของ a ยูเนียน b คือทูเพิล t เมื่อ a และ b เป็นรีเลชันชนิดเดียวกันและประกอบด้วยทูเพิล t ในทั้งสองรีเลชัน

    10. จงสำแดงนิยามของอินเตอร์เซค

    เมื่อมีรีเลชัน a และ b ซึ่งเป็นรีเลชันชนิดเดียวกัน (คือมีแอตทริบิวต์ตรงกัน) การทำอินเตอร์เซคระหว่างสองรีเลชันนี้ คือ a อินเตอร์เซค b ย่อมได้ผลลัพธ์เป็นรีเลชันที่มีชนิดเดียวกัน ภายในรีเลชันประกอบด้วยทูเพิล t ซึ่งเป็น t ที่มีอยู่ทั้งในรีเลชัน a และรีเลชัน b

    11. ประโยชน์ของโปรเจคชันคืออะไร

    ใช้หา "เซตย่อยทางแนวตั้ง" ของรีเลชัน คือนำมาใช้เพื่อคัดกรองเฉพาะแอตทริบิวต์ที่ต้องการออกจากแอตทริบิวต์ทั้งหมดในรีเลชัน

    12. เมื่อพูดว่าจอยโดยไม่ระบุว่าเป็นการจอยแบบใดจะถือว่าคือการจอยแบบใด

    จอยสามัญ

    13. พีชคณิตสัมพันธ์ภาคเซตคืออะไร

    คือ RA ที่ถูกออกแบบมาให้ทำงานกับรีเลชันที่มีทูเพิลไม่ซ้ำกันเลย

    14. ตัวอักษรพาย (π) ใช้ทำหน้าที่อะไร

    แทนตัวดำเนินการโปรเจคชัน

    15. ตัวอักษรซิกมา (σ) ใช้ทำหน้าที่อะไร

    ใช้แทนตัวดำเนินการซีเลคชัน

    16. CE คืออะไร

    คือนิพจน์เพื่อการเปรียบเทียบ Condition Expression คล้ายคลึงกับนิพจน์เพื่อการเปรียบเทียบในภาษาคอมพิวเตอร์ แต่มีข้อจำกัดอยู่ว่าตัวถูกดำเนินการต้องเป็นค่าคงที่ หรือไม่ก็เป็นแอตทริบิวต์ในรีเลชัน

    17. ทำไมจึงต้องทำจอย

    เพราะได้แยกข้อมูลพาดพิงต่างๆ ออกเป็นรีเลชันย่อยหลายรีเลชันตอนทำนอร์มัลไลซ์

    18. เทรตาจอยคืออะไร

    การจอยที่กำหนดเงื่อนไขได้

    19. RAET คืออะไร

    Relative Algebra Expression Tree คือการเขียน RAE ให้เป็นแผนภูมิต้นไม้

    20. อักษร r (ตัวอักษรกรีก Rho) ใช้แทนอะไร

    ตัวดำเนินการเปลี่ยนชื่อ

    21. การทำอินเตอร์เซคชันอาจใช้วิธีใดแทนได้

    การหาผลต่าง

    22. การทำเทรตาจอยอาจใช้วิธีใดแทนได้

    การหาผลคูณคาร์ทีเซียนร่วมกับซีเลคชัน

    23. LE คืออะไร

    นิพจน์เชิงเส้น Linear Expression คือนิพจน์ที่แสดงการทำงานการเรียงตามลำดับของกระบวนการ

    24. LN คืออะไร

    สัญลักษณ์เชิงเส้น (Linear Notation) คือการกำหนดชื่อให้แก่โหนดต่างๆ ของต้นไม้ในแต่ละช่วงการทำงาน

    25. ซีเลคชันมีประโยชน์อย่างไร

    คัดกรองทูเพิลตามเงื่อนไขที่กำหนด

    26. คิวรีที่ให้ DT เป็นแบ็กดีกว่าเซตหรือไม่อย่างไร

    ดีกว่าเพราะทำงานเร็วกว่าและกินทรัพยากรของระบบน้อยกว่า

    27. ตัวดำเนินการใดที่ให้ผลลัพธ์เหมือนกันไม่ว่าจะทำกับเซตหรือแบ็ก

    อินเตอร์เซคชัน และดิฟเฟอร์เรนซ์

    28. ตัวดำเนินการใดที่ให้ผลลัพธ์ต่างกันเมื่อทำกับเซตและแบ็ก

    ยูเนียน

    29. กฎการสลับที่ของยูเนียนเป็นอย่างไร

    R u S = S u R

    30. กฎการกระจายสำหรับยูเนียนเป็นอย่างไร

    (R u S)-T = (R-T) u (S-T)

    31. เมื่อทำโปรเจคชันกับแบ็กและเซตแตกต่างกันหรือไม่อย่างไร

    แตกต่างกัน เมื่อทำโปรเจคชันแบบแบ็กจะย่อมให้ DT ที่มีทูเพิลที่ซ้ำกันได้ แต่เมื่อทำโปรเจคชันแบบเซตจะตัดทูเพิลซ้ำออกจาก DT

    32. ตัวดำเนินการเพิ่มจากของคอดด์มีกี่ตัว อะไรบ้าง

    มีหกตัวคือ ตัวตัดข้อมูลซ้ำ ตัวหาผลรวม ตัวจัดกลุ่ม ตัวเรียงข้อมูล ตัวเสริมโปรเจคชันและ Outerjoin

    33. Outerjoin คืออะไร

    คือจอยแบบพิเศษที่รวม DLT ไว้ใน DT ด้วย

     

    บทที่ 15

    1. คำสั่ง IN ทำหน้าที่อะไร

    ช่วยให้ดึงค่าที่กระจายอยู่หลายๆ แห่งในตารางได้ง่ายขึ้น

    2. ประโยชน์จริงๆ ของคำสั่ง IN คืออะไร

    คือการนำไปใช้ในคิวรีซ้อนคิวรี

    3. คิวรีย่อยที่คืนค่าเดี่ยวเหมาะใช้ทำอะไร

    ทำ SELECT เพื่อดึงเซตย่อยของแถวในตาราง

    4. คิวรีย่อยเพื่อการตรวจหาค่าคืออะไร

    คือคิวรีย่อยเพื่อที่ใช้คำสั่ง EXITS ทำหน้าที่ตรวจดูว่า SQEC มีค่าที่ต้องการหรือไม่โดยไม่สนใจว่า SQEC ส่งค่ากลับมากี่แถวหรือมีค่าอะไรบ้าง

    5. คิวรีหลายชั้นมีประโยชน์อย่างไร

    เปรียบเทียบค่ากับผลลัพธ์ที่มาจากการหาผลรวมและหาค่ากลับตรรกะ


    เฉลยคำถามท้ายบท [2]


    Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน



    เฉลยคำถามท้ายบท [2]


    บทที่ 5

    1. ERD มีประโยชน์อย่างไร

    แสดงภาพความสัมพันธ์ภายในเอนทิตี และระหว่างเอนทิตี

    2. ตีนกามีหน้าที่อะไร

    ใช้เพื่อแสดงความสัมพันธ์แบบหนึ่งต่อหลาย (one-to-many) หรือหลายต่อหลาย (many-to-many)

    3. ความสัมพันธ์แบบหนึ่งต่อหนึ่งพบได้ในกรณีใด

    การแปลงนอร์มัลฟอร์มระดับที่สี่เพื่อขจัดค่า NULL ออกจากตารางแม่

    4. ความสัมพันธ์แบบหลายต่อหลายคืออะไร

    หมายถึงทุกๆ แถวในตาราง ก อาจเชื่อมโยงกับหลายๆ แถวในตาราง ข

    5. สัญลักษณ์รูปวงกลมและขีดหนึ่งขีดใช้แทนอะไร

    แสดงความสัมพันธ์แบบศูนย์และหนึ่ง

    6. ความสัมพันธ์แบบจำแนกได้คืออะไร

    คือความสัมพันธ์แบบที่ตารางลูกถูกแยกแยะโดยตารางแม่ในบางส่วน และถูกกำหนดความผู้พันธ์ในอีกบางส่วน

    7. ความสัมพันธ์แบบจำแนกไม่ได้เป็นอย่างไร

    คือความสัมพันธ์แบบที่ตารางลูกไม่ขึ้นกับตารางแม่ คือกุญแจหลักของตารางลูกไม่ใช่กุญแจเดียวกับกุญแจหลักในตารางแม่

    8. ตารางผูกพันคืออะไร

    คือตารางที่มีกุญแจนอกเป็นกุญแจหลักที่มาจากตารางแม่

    9. กุญแจหลักมีหน้าที่อะไร

    ทำหน้าที่แยกแยะความแตกต่างระหว่างข้อมูลแถวต่างๆ ในตาราง

    10. กุญแจเอกลักษณ์คืออะไร

    หน้าที่แยกแยะความแตกต่างระหว่างข้อมูลแถวต่างๆ

     

    บทที่ 6

    1. นอร์มัลไลเซชันคืออะไร

    กระบวนการลดทอนความซ้ำซ้อนข้อข้อมูล หรือการตัดส่วนที่ซ้ำกันโดยไม่จำเป็นในตาราง

    2. อะนอมาลิคืออะไร

    รูปแบบที่ไม่พึงประสงค์ทำให้เกิดความผิดพลาดเมื่อเพิ่มลบหรือเปลี่ยนแปลงข้อมูล

    3. กุญแจเสนอคืออะไร

    คือคอลัมน์ที่อาจนำมาใช้ทำ PK ได้

    4. การพาดพิงหลายค่า (MVD) คืออะไร

    คือกรณีที่ตารางมีสองคอลัมน์ และคอลัมน์หนึ่งเป็น PK และอีกคอลัมน์หนึ่งมีข้อมูลแบบคอลเลคชัน

    5. การพาดพิงบางส่วน (PD) คืออะไร

    เกิดขึ้นเมื่อคอลัมน์ใดคอลัมน์หนึ่งมีภาวะ FFD กับคอลัมน์ที่เป็น PK ซึ่งเป็น CK

    6. นอร์มัลฟอร์มระดับที่หนึ่งทำได้อย่างไร

    ตัดข้อมูลที่ซ้ำกันเป็นกลุ่ม ทำให้สามารถจำแนกข้อมูลทุกแถวในทุกตารางได้ด้วย PK

    7. นอร์มัลฟอร์มระดับที่สองทำได้อย่างไร

    ทำให้คอลัมน์ที่ไม่ใช่กุญแจเป็น FFD ของคอลัมน์ที่เป็น PK และห้ามไม่ให้มี PD

    8. นอร์มัลฟอร์มระดับที่สามทำได้อย่างไร

    กำจัดคอลัมน์ที่พาดพิงทางอ้อมกับคอลัมน์ที่เป็น PK

    9. นอร์มัลฟอร์มแบบบอยซ์-คอดด์ทำได้อย่างไร

    ทำให้คอลัมน์ที่เป็นตัวกำหนดทั้งหมดในตารางกลายเป็นกุญแจเสนอ

    10. นอร์มัลฟอร์มระดับที่สี่มีเป้าหมายเพื่ออะไร

    กำจัด MVD

     

    บทที่ 7

    1. RDBMS คืออะไร

    คือซอฟต์แวร์ซึ่งทำหน้าที่ทุกอย่างที่เกี่ยวข้องกับฐานข้อมูล อาทิ การทำให้ผู้ใช้สามารถเข้าถึงข้อมูลในฐานข้อมูลเพื่อแก้ไข เพิ่ม ลบ และนำข้อมูลมาใช้ในลักษณะต่างๆ เช่นนำมาทำรายงานเป็นต้น

    2. สถาปัตยกรรมแบบไคลเอนเซอฟเวอร์เป็นอย่างไร

    สถาปัตยกรรมที่แยกระหว่างโปรแกรมผู้ให้บริการ (server) กับโปรแกรมผู้รับบริการ (client) โดยโปรแกรมผู้ให้บริการจะวิ่งอยู่ในคอมพิวเตอร์ที่ทำหน้าที่เป็นแม่ข่ายผู้ให้บริการและโปรแกรมผู้รับบริการจะวิ่งอยู่ในคอมพิวเตอร์เดสก์ท็อป

    3. การทำงานแบบไคลแอนท์/เซอฟเวอร์จะมีผลดีก็ต่อเมื่อเป็นอย่างไร

    เมื่อแอพลิเกชันฝั่งไคลแอนท์ไม่ได้ติดต่อกับตารางในฐานข้อมูลโดยตรง แต่ทำงานผ่านตัวกลางที่ทำหน้าที่เป็นตัวเชื่อมเช่นสพร็อซ์

    4. มิดเดิลแวร์เป็นอย่างไร

    ถ้าไคลแอนท์ติดต่อกับ DS ทางอ้อม โดยไคลแอนท์ติดต่อกับเซอฟเวอร์ ก เพื่อประมวลผลและเซอฟเวอร์ ก ติดต่อกับ DS อีกทอดหนึ่ง อย่างนี้ถือว่าเซอฟเวอร์ ก เป็นมิดเดิลแวร์

    5. สถาปัตยกรรมแบบ n-tier เป็นอย่างไร

    กรณีที่ไคลแอนท์รันแอพลิเกชันซึ่งทำงานประสานกับมิดเดิลแวร์หลายตัว

    6. SOA คืออะไร

    สถาปัตยกรรมที่เน้นเซอร์วิส ไคลแอนท์รันแอพลิเกชันซึ่งทำงานประสานกับเซอร์วิสหลายตัวจากหลายแหล่ง บางครั้งเป็นการเรียกหาเซอร์วิสผ่านเว็บด้วยโปรโตคอล SOAP

    7. SQL2008 สร้างอินสแตนซ์ของฐานข้อมูลได้กี่อินสแตนซ์

    50

    8. Query Optimizer มีหน้าที่อะไร

    ทำหน้าที่หาวิธีที่ดีที่สุดเพื่อจัดการกับฐานข้อมูลเพื่อให้ได้ผลลัพธ์ตามคิวรี

    9. ล็อกคืออะไร

    กลไกที่ใช้เพื่อป้องกันการขัดแย้งกันของข้อมูลเมื่อมีผู้ใช้มากกว่าหนึ่งรายเปลี่ยนแปลงข้อมูลเดียวกันพร้อมๆ กัน

    10. DML คืออะไร

    คำสั่งสามัญที่ใช้บ่อย ยกตัวอย่างเช่นคำสั่ง select, insert, update และ delete

    11. DDL คืออะไร

    คำสั่งที่ใช้สร้าง แก้ไข หรือจัดการตาราง ข้อกำหนด และออพเจ็กต์ต่างๆ ในฐานข้อมูล ยกตัวอย่างเช่นคำสั่ง create, drop และ alter

    12. ระบบปฏิบัติการ SQLOS คืออะไร

    ระบบปฏิบัติการที่อยู่ภายใน SQL2008

    13. Service Broker มีประโยชน์อย่างไร

    ช่วยให้นักพัฒนาไม่ต้องสร้างและบริหารคิวเอง เพราะ SB จะดูแลให้โดยอัตโนมัติ

    14. SMO คืออะไร

    คือชุดของออพเจ็กต์ใช้ทำหน้าที่เผยให้เห็นว่า SQL2008 มีการตั้งค่ากำหนดอะไรไว้บ้าง ผู้ใช้สามารถเขียน MC เพื่ออ่านค่า SMO หรือจะเปลี่ยนแปลงค่ากำหนดเหล่านั้นก็ได้

    15. BI คืออะไร

    การนำข้อมูลจากดาต้าแวร์เฮาส์ (ระบบ OLAP) มาวิเคราะห์เพื่อดูพฤติกรรมในอดีต พิจารณากระบวนการในปัจจุบัน และทำนายแนวโน้มในอนาคต บางครั้งอาจเรียกการกระทำนี้ว่าระบบเพื่อช่วยการตัดสินใจ (Decision Support System ย่อ DSS)

    16. SQL2008 มีเซอร์วิสใดที่เกี่ยวข้องกับ BI โดยตรง

    Integration Services (SSIS)Reporting Services (SSRS) Analysis Service (SSAS)

    17. SSMS คืออะไร

    คือโปรแกรม Microsoft SQL Management Studio ใช้เพื่อป้อนพิมพ์คิวรีและดำเนินการต่างๆ กับ SQL2008

    18. OE คืออะไร

    Object Explorer ออพเจ็กต์เอ็กซ์พลอเรอร์ทำหน้าที่แสดงออพเจ็กต์ต่างๆ ในฐานข้อมูล

    19. DW คืออะไร

    Document Windows หน้าต่างเอกสารเป็นหน้าต่างหลักของโปรแกรม SSMS สามารถใช้แสดงสิ่งต่างๆ ได้หลายอย่าง

    20. QE คืออะไร

    คิวรีเอดิเตอร์ Query Editor คือบริเวณสำหรับป้อนพิมพ์คิวรีในโปรแกรม SSMS

     

    บทที่ 8

    1. QO คืออะไร

    คือ Query Optimizer เป็นโปรแกรมภาคหนึ่งในเอนจินฐานข้อมูล มีหน้าที่วิเคราะห์และตรวจสอบคิวรี เพื่อหาทางทำให้การเข้าถึงข้อมูลเป็นไปโดยมีประสิทธิภาพสูงสุด คือกินทรัพยากรน้อยที่สุด

    2. ดรรชนีคืออะไร

    คือแฟ้มข้อมูลในฮาร์ดดิสก์ซึ่งมีข้อมูลที่คัดลอกมาจากตารางในฐานข้อมูล โดยคัดลอกมาเพียงบางคอลัมน์และเรียงลำดับแถวข้อมูลแล้ว

    3. ดรรชนีมีประโยชน์อย่างไร

    ทำให้คิวรีรวดเร็วขึ้นเพราะ QO จะใช้ดรรชนีร่วมกับข้อมูลบางส่วนในตารางจึงใช้เวลาน้อยลง

    4. PKI คืออะไร

    ดรรชนีกุญแจหลัก (Primary Key Indexing ย่อ PKI) คือดรรชนีที่เรียงข้อมูลตามคอลัมน์ที่เป็น PK

    5. FKI คืออะไร

    ดรรชนีกุญแจนอก (Foreign Key Indexing ย่อ FKI) คือการทำดรรชนีกับคอลัมน์ที่เป็น FK

    6. AI คืออะไร

    ดรรชนีเผื่อเลือก (Alternate Indexing ย่อ AI) คือการทำดรรชนีกับคอลัมน์ที่ไม่ใช่ PK และ FK

    7. SQL2008 จะสร้างดรรชนีชนิดใดให้โดยอัตโนมัติ

    PKI

    8. BTree มีคุณสมบัติเด่นอย่างไร

    แต่ละกิ่งก้านจะมีสองโหนด หรือพูดอีกอย่างหนึ่งคือโหนดแม่มีโหนดลูกได้แค่สองโหนด

    9. ISAM คืออะไร

    Indexed Sequential Access Method เป็นโครงสร้างข้อมูลเรียบง่ายที่ใช้การเข้าถึงแบบไล่จากโหนดแรกเรื่อยไปถึงโหนดสุดท้าย

    10. เอกซ์เทนท์คืออะไร

    ชื่อเรียกหน่วยเก็บข้อมูลพื้นฐานในโปรแกรม SQL2008

    11. เพจคืออะไร

    ชื่อเรียกหน่วยเก็บข้อมูลพื้นฐานในโปรแกรม SQL2008 ระดับรองจากเอกซ์เทนท์ เพจเป็นหน่วยเก็บข้อมูลพื้นฐานระดับต่ำสุดเพราะถัดจากระดับนี้จะเป็นตัวแถวข้อมูลจริงๆ

    12. ข้อมูลหนึ่งแถวมีคอลัมน์ได

    1,024 คอลัมน์

    13. คอลเลชันคืออะไร

    Collation คือกฎที่โปรแกรม SQL2008 ใช้ในการเรียงข้อมูลเมื่อทำดรรชนีและเปรียบเทียบเมื่อค้นข้อมูล

    14. โหนดรากคืออะไร

    โหนดที่อยู่ในระดับบนสุดในโครงสร้าง BTree

    15. TS คืออะไร

    Table Scan การค้นหาข้อมูลในตารางที่ไม่ได้ทำดรรชนี เป็นวิธีพื้นฐานที่สุดและช้าที่สุด

    16. ISC คืออะไร

    เหมือน TS ทุกอย่าง แต่ ISC เป็นการกวาดในดรรชนีซึ่งปรกติจะเล็กกว่าตารางจริงๆ มาก การทำงานของ ISC จึงรวดเร็วกว่า TS

    17. ISK คืออะไร

    การค้นข้อมูลที่ทำงานได้เร็วที่สุดและมีประสิทธิภาพสูงสุด

    18. RID คืออะไร

    ตัวชี้ที่โปรแกรม SQL2008 สร้างไว้ใช้อ้างอิงแถวข้อมูลในตาราง

    19. ฮีพคืออะไร

    คือตารางใดก็ตามที่ไม่มี CI

    20. CI คืออะไร

    คือดรรชนีที่สร้างไว้คู่กับ CT เป็นดรรชนีพื้นฐานที่ใช้กันมากที่สุด

    21. NCIH คืออะไร

    คือดรรชนีแบบ NCI ที่สร้างขึ้นไว้เพื่อทำงานคู่กับฮีพ