วันพฤหัสบดีที่ 31 พฤษภาคม พ.ศ. 2561

10 - Normalization

Normalization

วัตถุประสงค์ของนอร์มัลไลซ์

  • ลดความซ้ำซ้อนของข้อมูล  เมื่อลดความซ้ำซ้อนก็ทำให้ลดเนื้อหาที่ใช้ในการจัดเก็บข้อมูล
  • ลดปัญหาความไม่ถูกต้องของข้อมูล  เมื่อข้อมูลไม่เกิดความซ้ำซ้อนทำให้การปรับปรุงข้อมูลสามารถทำได้จากแหล่งข้อมูลเพียงแหล่งเดียว  
  • ลดความผิดพลาดที่อาจเกิดจากการปรับปรุงข้อมูล (update anomalies)

        Normalization คือ กระบวนการปรับปรุงโครงสร้างข้อมูลของฐานข้อมูลที่มีความซ้ำซ้อนให้อยู่ในรูปแบบที่เป็นบรรทัดฐาน (Normal Form) โดยการนอร์มัลไลเซชันมีได้ถึง 5 ระดับ  ซึ่งในระดับที่ 3 ก็จัดว่าเพียงพอสำหรับการออกแบบฐานข้อมูลในปัจจุบัน

  • 1NF  -  กำจัด repeating group (กำจัดกลุ่มของข้อมูลที่มีความซ้ำซ้อน) 
  • 2NF  -  กำจัด  partial dependency (กำจัดการขึ้นต่อกันบางส่วน)
  • 3NF  -  กำจัด  transitive dependency (กำจัดการขึ้นต่อกันของแอตทริบิวท์ที่ไม่ใช่คีย์หลัก)

First Normal Form (1NF)

  • ทุก Attribute ในแต่ละ record จะเป็น single value ไม่มี ค่าของกลุ่ม  ข้อมูลที่ซ้ำกัน (Repeating Group)  
  • ข้อมูลทุกแถว (Tuple) ต้องมีค่าไม่ซ้ำกัน




Second Normal Form (2NF)

  • ต้องเป็น First Normal Form (1NF) มาก่อน
  • ต้องไม่มี Partial Dependency (การขึ้นต่อกันบางส่วน)
        นอร์มัลไลเซชันระดับที่  2  (Second normal form : 2NF)  เป็นการลบ Attribute ที่ไม่ขึ้นกับทั้งส่วนของคีย์หลักออกไป  เพื่อให้Attribute อื่นทั้งหมดขึ้นตรงกับส่วนที่เป็นคีย์หลักทั้งหมดเท่านั้น




เราสามารถทำให้อยู่ในรูป 2NF ได้ดังนี้



Third Normal Form (3NF)

  • Relation นั้นจะต้องมีคุณสมบัติ 2NF
  • ต้องไม่มีความสัมพันธ์ระหว่าง Non-key Attribute หรือไม่มี Transitive Dependency
  • แอททริบิวต์ที่ไม่ใช่คีย์หลัก ต้องไม่ขึ้นต่อกันเอง

  • 1NF  ทุกแอททริบิวต์ในแต่ละแถวมีค่าของข้อมูลเพียงค่าเดียว
  • 2NF  รีเลชันนั้นต้องไม่มีความสัมพันธ์ระหว่างแอททริบิวต์แบบบางส่วน (แอททริบิวต์ทุกตัวต้องขึ้นกับคีย์หลักทุกตัว ไม่ขึ้นอยู่กับตัวใดตัวหนึ่ง)
  • 3NF  ทุกแอททริบิวต์ที่ไม่ใช่คีย์หลักไม่มีคุณสมบัติในการกำหนดค่าของแอททริบิวต์อื่น

Reference



วันจันทร์ที่ 21 พฤษภาคม พ.ศ. 2561

9 - Informal Design Guidelines for Relation Schemas

Informal Design Guidelines for Relation Schemas

        ในบทความนี้จะกล่าวถึง Guidelines ของการออกแบบ Relation Schemas ซึ่งมีอยู่ 4 Guidelines ซึ่งจะทำให้ Database นั้นดียิ่งขึ้น




Informal Design Guidelines for Relation Schemas
  • Measures of quality 
            - Making sure attribute semantics are clear: ให้แน่ใจว่า ความหมายของแต่ละ attribute มีความชัดเจน
            - Reducing redundant information in tuples: ลดความ ซําซ้อนของข้อมลูใน tuples
            - Reducing NULL values in tuples
            - Disallowing possibility of generating spurious (false) tuples: ไม่อนุญาตให้เกิด spurious tuples คือ tuples ที่ผิดพลาด เช่น ได้ข้อมูลเกินจากความเป็นจริงหลังจากรวมข้อมูลจากหลาย Table หรือ Relation

Imparting Clear Semantics to Attributes in Relations
  • Semantics of a relation 
            - Meaning resulting from interpretation of attribute values in a tuple: ความหมายที่สะท้อนถึง relation มาจากการแปลความหมายของค่า ข้อมูล attribute ต่างๆที่อยู่ใน tuple
  • Easier to explain semantics of relation
            - Indicates better schema design: จะต้องอธิบายความหมายของ relation แต่ละ relation ได้ง่าย

Guideline 1

  • Design relation schema so that it is easy to explain its meaning: ต้องออกแบบให้สามารถอธิบายความหมายของ relation แต่ละ relation ได้ง่าย 
  • Do not combine attributes from multiple entity types and relationship types into a single relation: ต้องไม่รวม attribute ที่มาจากหลาย domain ไว้ใน relation เดียว





Redundant Information in Tuples and Update Anomalies 
  • Grouping attributes into relation schemas 
            - Significant effect on storage space: การรวมข้อมูลที่มาจากหลาย domain ไว้ด้วยกันมีผลกระทบโดยตรงทําให้ เปลืองเนื้อที่ในการจัดเก็บข้อมูล
  • Storing natural joins of base relations leads to update anomalies: การจัดเก็บข้อมูลที่อยู่ต่าง domain ถึงแม้จะมีความสัมพันธ์กันในลักษณะ natural joins ก็สามารถนําไปสู่ปัญหา update anomalies ได้ (ปัญหาการปรับปรุงข้อมูลที่ทําให้ข้อมูลมีลักษณะผิดปกติ)
  • Types of update anomalies: 
           - Insertion
            - Deletion 
            - Modification 

Guideline 2

  • Design base relation schemas so that no update anomalies are present in the relations: ต้องออกแบบไม่ให้เกิด update anomalies ในแต่ละ relation
  • If any anomalies are present: ถ้าหลีกเลี่ยงไม่ได้ 
            - Note them clearly: ให้บันทึกไว้ให้ชัดเจน 
            - Make sure that the programs that update the database will operate correctly: ให้แน่ใจว่าโปรแกรมจะ ปรับปรุงข้อมูลในฐานข้อมูลได้ถูกต้อง




NULL Values in Tuples
  • May group many attributes together into a “fat” relation
            - Can end up with many NULLs การรวมข้อมูลจากหลาย domain มาไว้ด้วยกันจะส่งผลให้มีข้อมูลที่มีค่าเป็ น NULL เกิดขึ้นใน relation
  • Problems with NULLs: ปัญหาการจัดเก็บค่า NULL ทําให้ เกิด
            - Wasted storage space: เปลืองเนื้อที่ในการจัดเก็บข้อมูล
            - Problems understanding meaning: การเก็บข้อมูลที่เป็นค่า NULL อาจจะส่งผลในแง่ไม่สื่อความหมาย หรือเข้าใจความหมายได้ยาก 

Guideline 3

  • Avoid placing attributes in a base relation whose values may frequently be NULL หลีกเลี่ยงการจัดเก็บ attribute ที่มีโอกาสจัดเก็บค่า NULL จํานวนมากๆ
  • If NULLs are unavoidable: แต่ถ้าหลีกเลี่ยงไม่ได้ 
            - Make sure that they apply in exceptional cases only, not to a majority of tuples ขอให้เป็นกรณียกเว้น อย่าให้เป็นกรณีส่วนใหญ่ หรือกรณีทั่วไป 




Generation of Spurious Tuples
  • NATURAL JOIN
            - Result produces many more tuples than the original set of tuples in EMP_PROJ
            - Called spurious tuples การรวมข้อมูล (relation) ที่มีความสัมพันธ์กัน แต่เลือก attribute ที"เป็ น ตัวเชื่อมความสัมพันธ์ไม่เหมาะสม จะทําให้เกิด spurious tuples
            - Represent spurious information that is not valid: การที่มีข้อมูล spurious เกิดขึ้นนั้นหมายความว่า ออกแบบไม่ถูกต้อง


Guideline 4
  • Design relation schemas to be joined with equality conditions on attributes that are appropriately related
            - Guarantees that no spurious tuples are generated ต้องออกแบบให้ relation ที่มีการรวมข้อมูลจาก relation อื่น (Join) โดยเลือก attribute ที่เหมาะสม ซึ่งควรอยู่ในลักษณะ equi join จะทํา ให้ไม่เกิด spurious tuples
  • Avoid relations that contain matching attributes that are not (foreign key, primary key) combinations ให้หลีกเลี่ยงการนํา attribute ที่ไม่ใช่ foreign key หรือ primary key มาเป็น ตัวเชื่อมโยง ระหว่าง 2 relation


Reference
Fundamentals of Database Systems Sixth Edition : Ramez Elmasri, Shamkant B. Navathe
http://www.cs.science.cmu.ac.th/course/204222/lib/exe/fetch.php?media=ch15_fd_normalization.pdf

8 - Insert Data to database

 Insert data in DBMS (SQLite)

        ในบทความนี้ จะพูดถึงการนำข้อมูลเข้าไปยัง Database ซึ่งในที่นี้คือ SQLite โดยการใช้งานนี้ จะเขียนโดยใช้ภาษา Python ในการเข้าไปจัดการข้อมูล และใช้โปรแกรม DB Browser for SQLite ในการเข้าไปดูข้อมูล
        

        


        การใช้งาน SQLite ผ่าน Python จำเป็นจะต้องใช้ Library ในการใช้งาน จึงต้องใช้คำสั่ง import sqlite3 ในการใช้งานทุกครั้ง โดยการสร้างตารางจะอยู่ในรูปแบบด้านล่าง ซึ่งเป็นการสร้างตารางที่มีชื่อว่า Names




        จากนั้นจึงสร้างตารางขึ้นมาใหม่โดยให้มีการเชื่อมต่อกันโดยใช้ KEY

        จะเห็นได้ว่า บรรทัดที่ 18 FOREIGN KEY(StudentID) REFERENCES Names(StudentID) เป็นการเชื่อมโยงข้อมูลของ Table Grade_Pri อ้างอิงไปถึง StudentID ของ Table Names 



ข้อควรระวัง
  • ปัญหาความเข้ากันได้ของ Python แต่ละเวอร์ชัน
  • การใส่ข้อมูลผิดพลาด
  • การ Coding ที่ผิดพลาด

7 - Learn with SQL Language

SQL Tutorial

        ทดลองการใช้งานภาษา SQL ผ่านทาง https://www.w3schools.com/sql/default.asp โดยทางเว็บไซต์จะมีการแบ่งหัวข้อคำสั่งเป็นส่วน และอธิบายเป็นตัวอย่าง ทำให้สามารถเข้าใจได้ง่ายขึ้น

คำสั่งที่ได้ศึกษาไปแล้ว


SQL SELECT
เลือกเฉพาะบางคอลัมน์
SELECT column1, column2, ...
FROM table_name;

เลือกทั้งหมด
SELECT * FROM table_name;


SQL SELECT DISTINCT
เลือกเฉพาะค่าที่ต่างกันในคอลัมน์นั้นๆ โดยค่าที่ออกมาจะไม่ซ้ำกัน
SELECT DISTINCT column1, column2, ...
FROM table_name;

SQL WHERE
ใช้ในการค้นหาค่าในตารางที่ต้องการ
SELECT column1, column2, ...
FROM table_name
WHERE condition#เช่น WHERE Country='Mexico';

SQL AND, OR and NOT
เป็น Operator สำหรับการใช้ในเงื่อนไข

SELECT * FROM Customers
WHERE condition1 AND condition2 AND condition3 ...
#เช่น WHERE Country='Germany' AND City='Berlin';

SQL ORDER
เป็นคำสั่งช่วยเรียงลำดับโดยใช้ตารางนั้นๆ
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;

SQL INSERT INTO
เป็นคำสั่งใส่ข้อมูลลงในตารางตามที่ต้องการ
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

SQL NULL
ฟิลด์ที่มีค่าเป็น Null คือฟิลด์ที่ไม่มีค่า

SQL UPDATE
คำสั่งอัพเดตค่าในฟิลด์ตามเงื่อนไขที่กำหนด
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

SQL DELETE
คำสั่งลบข้อมูลตามเงื่อนไขที่กำหนด
DELETE FROM table_name
WHERE condition;

นอกจากนี้ยังมีคำสั่งอื่นๆ ซึ่งสามารถเข้าไปดูเพิ่มเติมได้

6 - DBMS First time

Try DBMS

Related image


        Xampp คือ โปรแกรมสำหรับจำลองเครื่องคอมพิวเตอร์ส่วนบุคคลของเรา ให้ทำงานในลักษณะของ WebServer นั่นคือเครื่องคอมพิวเตอร์ของเราจะเป็นทั้งเครื่องแม่ และเครื่องลูกในเครื่องเดียวกัน ทำให้ไม่ต้องเชื่อมต่อกับ Internet ก็สามารถทดสอบเว็บไซต์ที่สร้างขึ้นได้
        โดยตัวโปรแกรมประกอบด้วย Apache, PHP, MySQL, PHP MyAdmin, Perl ซึ่งเป็นโปรแกรมพื้นฐานที่รองรับการทำงาน CMS ซึ่งเป็นชุดโปรแกรม สำหรับออกแบบเว็บไซต์ที่ได้รับความนิยมในปัจจุบัน โดยรองรับระบบปฏิบัติการหลายตัว เช่น Windows, Linux, Apple  ทำงานได้ทั้งบนระบบปฏิบัติการแบบ 32 bit และ 64 bit


ดังนั้น เราจึงเริ่มทดลองใช้ MySQL จากโปรแกรมนี้ โดยดาวน์โหลดตัวโปรแกรมได้ที่



วันอาทิตย์ที่ 20 พฤษภาคม พ.ศ. 2561

5 - What's a Database?

Database คืออะไร?

Image result for database

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

        ระบบฐานข้อมูล (Database System) คือ ระบบที่รวบรวมข้อมูลต่าง ๆ ที่เกี่ยวข้องกันเข้าไว้ด้วยกันอย่างมีระบบมีความสัมพันธ์ระหว่างข้อมูลต่าง ๆ ที่ชัดเจน ในระบบฐานข้อมูลจะประกอบด้วยแฟ้มข้อมูลหลายแฟ้มที่มีข้อมูล เกี่ยวข้องสัมพันธ์กันเข้าไว้ด้วยกันอย่างเป็นระบบและเปิดโอกาสให้ผู้ใช้สามารถใช้งานและดูแลรักษาป้องกันข้อมูลเหล่านี้ ได้อย่างมีประสิทธิภาพ โดยมีซอฟต์แวร์ที่เปรียบเสมือนสื่อกลางระหว่างผู้ใช้และโปรแกรมต่าง ๆ ที่เกี่ยวข้องกับการใช้ฐานข้อมูล เรียกว่า ระบบจัดการฐานข้อมูล หรือ DBMS (data base management system) 
        ระบบฐานข้อมูล มีหน้าที่ช่วยให้ผู้ใช้เข้าถึงข้อมูลได้ง่ายสะดวกและมีประสิทธิภาพ การเข้าถึงข้อมูลของผู้ใช้อาจเป็นการสร้างฐานข้อมูล การแก้ไขฐานข้อมูล หรือการตั้งคำถามเพื่อให้ได้ข้อมูลมา โดยผู้ใช้ไม่จำเป็นต้องรับรู้เกี่ยวกับรายละเอียดภายในโครงสร้างของฐานข้อมูล 

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

Reference
http://www.comsrt.net63.net
http://www.spvc.ac.th
https://www.kdnuggets.com/wp-content/uploads/database-wordcloud.jpg

4 - What's a CSV file !?

CSV ไฟล์คืออะไร?

Image result for csv file

        CSV ย่อมาจาก Comma Separated Value เป็นไฟล์ข้อความประเภทหนึ่งที่ใช้สำหรับเก็บข้อมูลในรูปแบบตาราง ใช้เครื่องหมายจุลภาค หรือคอมม่า (,) ในการแบ่งแต่ละคอลัมภ์  โดยปกติเราสามารถบันทึกไฟล์จาก Microsoft Excel ออกมาเป็น CSV ไฟล์ได้โดยตรง หรือ อาจได้ไฟล์ CSV จากการ export ไฟล์จากระบบฐานข้อมูลอื่นๆ
        ไฟล์ CSV นี้ยังไม่มีรูปแบบมาตรฐาน แต่ RFC 4180 ให้การรับรอง ไฟล์ CSV นี้มีการใช้งานอย่างแพร่หลาย และมีรูปแบบที่ใกล้เคียงกับ delimiter-separated formats รูปแบบที่มีการคั่นด้วยตัวคั่น เช่น การเก็บข้อมูลที่มี tab คั่น จะเรียก tab-separated values หรือ การเก็บข้อมูลที่มี space คั่น จะเรียก space-separated values ซึ่ง ไฟล์ CSV มี comma คั่น จึงเรียกรูปแบบไฟล์ CSV ว่า Comma-separated values ไฟล์ CSV จะมีนามสกุลไฟล์ *.CSV ไม่ว่าจะมีตัวคั่นเป็น tab, space หรือ comma จะมีนามสกุลไฟล์ตัวเดียวกันคือ *.csv

Image result for csv file

        โดยปกติ สำหรับผู้ใช้งานทั่วไป มักจะใช้โปรแกรม Microsoft Excel ในการเปิด เพื่อให้แสดงผลในรูปแบบตาราง และทำให้ดูและอ่านออกได้ง่าย และสะดวกมากขึ้น แต่เรายังสามารถใช้โปรแกรมอื่นๆ เปิดไฟล์ CSV ได้อีกด้วย เช่น โปรแกรม Text Editor ต่างๆ

จุดเด่นของไฟล์ CSV File
  • รองรับการใช้งานกับโปรแกรมฐานข้อมูลต่างๆ รวมทั้ง Microsoft Excel
  • ไฟล์ที่ได้มีขนาดเล็กมาก
  • รองรับการเปิดไฟล์ด้วยโปรแกรม Text Editor รวมทั้ง Microsoft Word
Reference
https://i0.wp.com/www.linuxstall.com/wp-content/uploads/2012/01/read-csv-file-perl.png
https://www.homeandlearn.co.uk/php/images/updates/excel_csv.gif
http://www.technointrend.com/csv-file/
https://th.wikipedia.org/wiki/Comma-separated_values


บทความใหม่ที่แนะนำ

10 - Normalization