Profilo di LaployLoy Business Intelligenc...FotoBlogElenchiAltro Strumenti Guida

Blog


22 settembre

ทำความรู้จัก 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


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

15 agosto

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

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 ได้ทันทีโดยไม่มีค่าใช้จ่ายเพิ่มเติม

 

14 agosto

ดัชนีหนังสือ 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                  



11 agosto

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


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


01 luglio

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


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 ที่สร้างขึ้นไว้เพื่อทำงานคู่กับฮีพ