[Internship True]วันแรก

ก็ไม่มีอะไรมาก นั่งงงรอพี่เลี้ยงมารับ 11 โมงกว่าๆ แต่พี่เลี้ยงลาสงกรานต์ ก็เลยได้อ่านเอกสารเกี่ยวกับ International Roaming

ปัญหาของ Group by

ดูโครงสร้างตารางกันก่อนมีตาราง CONSISTS (เก็บข้อมูลการสั่งไอศครีม แต่ละถ้วย) กับ STOCKS (เก็บข้อมูลของสินค้า) ลองสร้างโจทย์เล่นๆ กัน คือ หายอดขายของไอศครีม แต่ละชิ้นว่ามีการสั่งไปจำนวนกี่ครั้ง โดยจะต้องแสดงไอศครีมที่ยังไม่ได้ถูกสั่งด้วย SQL แบบแรกที่ลองเขียนขึ้น แต่ข้อมูลไอศครีม (STOCK_TYPE = 1) มีทั้งหมด 19 ชนิด แสดงว่ามันตกหล่นไป 5 อย่าง เมื่อเราลองเปลี่ยน Alias ใน SQL มัน GROUP BY จาก C.STOCK_ID เป็น S.STOCK_ID แล้วผลที่ได้ คือ มีทั้งหมด 19 แถวออกมา (เลือกตัวที่จะ GROUP BY ผิดทีนี่ยาวเลย)

แนวข้อสอบเกี่ยวกับการ Recovery

จากภาพกำหนดใน T1, T2, T3, T4 และ T5 หมายถึง Transaction ต่างๆ ในระบบ Tc และ Tf ซึ่งหมายถึงเวลาที่ระบบ DBMS ทำการตรวจสอบสถานภาพการทำงานของ Transaction ต่างๆ สมมติว่าระบบเกิดความขัดข้อง(System failure) ณ เวลาที่ Tfและมีจุดตรวจสอบ(Check Point)ครั้งสุดท้าย กระทำขึ้น ณ เวลา Tc จงตอบคำถามต่อไปนี้ โดยอาศัยข้อมูลต่างๆของแต่ละ Transaction ประกอบดังนี้ เมื่อระบบเกิดความขัดข้อง(System failure) แต่ละ Transaction จะมีการจัดการอย่างไร ยอดเงินของนาย ก และ นาย ข หลังระบบ recovery เสร็จมีค่าเท่าไหร่ มี Transaction ไหนบ้างที่พนักงานธนาคารต้องมากรอกข้อมูลเข้าไปให้อี่กรอบเพื่อให้ Transaction สมบูรณ์

แนวข้อสอบเกี่ยวกับ Isolation level

อันนี้เป็น Blog ที่เขียนไว้นานมากแล้วที่ blogspot โดยผมได้ย้ายมาลง WordPress ตอนช่วงปี 2013 นะครับ ^__^ ลองอ่านดูกันได้เลย โดยเป็นโจทย์ที่ช่วงให้เข้าใจเกี่ยวกับ Isolation level มากขึ้นครับ หาก DBA ตั้งค่า ISOLATION LEVEL ที่ตัวระบบจัดการฐานข้อมูล ในระดับต่างๆแล้ว ณ เวลาที่ k ผลรวมของทุก Account ของ Ti จะมีค่าที่ได้เท่าไหร่ โดยแต่ละ Account มีค่าต่างๆ ดังนี้ READ-UNCOMMITTED READ-COMMITED  REPETABLE-READ SERIALIZABLE 

Circular Queue

วันนี้ผมนำเสนอแปลกๆ นะ บทความวันนี้เสนอเรื่อง Circular Queue โดยนำเสนอในรูปแบบ Q&A นะครับ ลองติดดามได้นะครับ ^__^ Q: ทำไมถึงต้องมี Circular QueueA: เพราะ ว่างการใช้ queue แบบเดิม จะทำให้เสียเนื้อที่ใส่ส่วนด้านหน้าไป โดยเปล่าประโยชน์ หลังจากที่ enqueue ออกแล้ว ถึงแล้วว่าจะมีการสร้าง queue ใหม่ชึ้นมา ระบบก็จะจองเนื้อที่ในหน่วงความจำใหม่แทน ลองดูแผนภาพประกอบ Q: แล้วใช้ Circular Queue จะแก้ปัญหาในข้อที่แล้วได้อย่างไรA: ลองเปลี่ยนวิธีการเขียนจากการเขียนที่เรามองว่าคิว คือ แถวยาวๆ มามองให้เป็นวงกลม โดยมีการปรับเปลี่ยนในส่วนของโปรแกรม เพื่อสามารถที่จะทำ Circular Queue ลองดูแผนภาพประกอบ Q: แล้วเราจะรู้ได้อย่างไร ว่า Queue มันเต็ม หรือยัง หรือตอนนี้ยังใส่ได้อีกเท่าไหร่A: ขอตอบแยกเป็นข้อๆ ดังนี้ครับ ถ้าเป็น array ลองใช้ค่า index ให้เป็นประโยชน์ หรือจะสร้างตัวแปรอีกอันนึงขึ้นมานับก็ได้ ถ้าเป็น linked list ก็ต้องสร้างตัวแปรขึ้นมานับ ถึงแม้ว่าlinked list จะมีโอกาสที่จะเต็มยาก แต่ถ้าเป็นงานใหญ่ๆ ก็มีโอกาสเต็มได้เหมือนกัน ลอง Implement Code ผมมีการใช้ interface queueADT เพื่อกำหนดกรอบการทำงานว่า Circular Queue มีการทำงานอะไรบ้าง โดยตัว Interface queueADT สามารถนำไปใช้ต่อได้ ถ้านำไป implement queue แบบอื่นๆครับ ต่อมาเป็นการ Implement ArrayCirQueue โดยมีการอธิบายรายละเอียดใน Session ถัดไปครับ อธิบาย Code ทีละส่วน Data Member เพิ่มเติม: ใช้ head, tail และ qsize เป็นมือที่คอยจัดการภายใน…