วันพฤหัสบดีที่ 13 มีนาคม พ.ศ. 2557

เฉลยคำตอบแบบทดสอบก่อนเรียนเรื่อง ฐานข้อมูล

เฉลยคำตอบ

เฉลยคำตอบแบบทดสอบระหว่างเรียน เรื่องระบบฐานข้อมูล

เฉลยคำตอบ

แบบทดสอบระหว่างเรียน เรื่อง ระบบฐานข้อมูล

แบบทดสอบระหว่างเรียน เรื่อง ระบบฐานข้อมูล

แบบทดสอบก่อนเรียนเรื่อง ระบบฐานข้อมูล

แบบทดสอบก่อนเรียนเรื่อง ระบบฐานข้อมูล

วันพฤหัสบดีที่ 6 มีนาคม พ.ศ. 2557

ภาษา PHP เบื้องต้น

การเขียนโปรแกรมภาษา PHP จะต้องเขียนอยู่ในBlock ของคำสั่งของ PHP เสมอ โดยใน
รูปแบบของ 3 แนวทางดังต่อไปนี้
1. <?.........?>
2. <?php……………………………………?>
3. <script language=’php’>………</script>

การแสดงผลลัพธ์ของภาษา PHP มีแนวทางให้เราเลือกใช้ทั้งหมด3 แนวทางเช่นเดียวกัน
ดังนี้
1.echo”ข้อความที่ต้องการแสดง……………”;
2. print”ข้อความที่ต้องการแสดง……………”;
3. printf(“ข้อความที่ต้องการแสดง………….”);

ในการเขียน comment ของภาษา PHP มีแนวทางให้เราเลือกใช้ทั้งหมด 3 แนวทาง
เช่นเดียวกันดังนี้
1.// ครั้งละ 1 บรรทัด
2.# ครั้งละ 1 บรรทัด
3./*…………………*/ หลายบรรทัด

สัญลักษณ์ต่างๆ ที่ควรรู้
==  หมายความว่า  เท่ากับ
!=  หมายความว่า  ไม่เท่ากับ
<  หมายความว่า  น้อยกว่า
>  หมายความว่า  มากกว่า
<=  หมายความว่า น้อยกว่าหรือเท่ากับ
>=  หมายความว่า  มากกว่าหรือเท่ากับ
+=  หมายความว่า  ค่าที่มีอยู่ + ค่าหลัง =


สรุปฟังก์ชั่นPHPที่ใช้ในการเข้าถึง MySQL

1. ฟังก์ชั่น เชื่อมต่อไปยัง MySQL Serve
mysql_connect ("hostname", "username", "password")

2. ฟังก์ชั่นเลือกฐานข้อมูลที่ต้องการใช้งาน
mysql_select_db("database name", การเชื่อมต่อ)
3. คำสั่ง SQL ไปประมวลผลยังฐานข้อมูล
mysql_query("คำสั่ง", การเชื่อมต่อ)
4. อ่านข้อมูลจาก Result set โดยส่งค่าคืนเป็นข้อมูลชนิด array มี index เป็นฟิลด์ต่างๆของ
เรคคอร์ด
mysql_fetch_array(result)
5.ปิดการเชื่อมต่อกับ MySQL Server
mysql_close(การเชื่อมต่อ)

ฟังก์ชั่น PHP และ MySQLที่เกี่ยวข้อง

mysql_num_rows() 
ผลลัพธ์เป็นตัวเลข ที่แสดงจำนวนเรคคอร์ดทั้งหมดตามคำสั่งSQL ที่ได้เขียนเอาไว้

trim( )
เป็นการตัดช่องว่าง (Space) ทั้งด้านหน้า และ ด้านหลังของข้อมูลที่ป้อนเข้าไป เป็นการป้องกัน
ปัญหาการใช้งาน - Human Error


addslashes ()
ก่อนนำคำค้นไปแทรกในคำสั่ง select ใช้ฟังก์ชั่น addslashes()จะใส่เครื่องหมาย backslash(\) 
หน้าตัวอักษรที่อาจเป็นปัญหา . ตัวอักษรเหล่านั้นได้แก่ single quote ('), double quote ("), 
backslash (\) and NULL (the NULL byte).

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



วันอังคารที่ 4 มีนาคม พ.ศ. 2557

ชนิดความสัมพันธ์ของระบบฐานข้อมูล

ความสัมพันธ์ระหว่างเทเบิลมีด้วยกันทั้งหมด 3 ลักษณะคือ
▫ ความสัมพันธ์แบบ 1:1 (One-to-One)
▫ ความสัมพันธ์แบบ 1:N (One-to-Many)
▫ ความสัมพันธ์แบบ M:N (Many-to-Many)

1. ความสัมพันธ์แบบ 1:1 (One-to-One)

      เป็นความสัมพันธ์ที่ 1 เรคอร์ดในเทเบิลใดๆ สามารถจับคู่กับเรคอร์ดในอีกเทเบิลได้เพียงเรคอร์ด
เดียวเท่านั้น แบบตัวต่อตัว



2. ความสัมพันธ์แบบ 1:N (One-to-Many)

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



3. ความสัมพันธ์แบบ M:N (Many-to-Many)

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





วันจันทร์ที่ 3 มีนาคม พ.ศ. 2557

คำสั่ง SQL ในการสร้างฐานข้อมูล


*คำสั่ง SQL เบื้องต้น

การเลือกข้อมูลทั้งหมดของ Table 
SELECT * FROM [table Name]

SQL WHERE 
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) คำสั่ง SQL WHERE สามารถระบุเงื่อนไขในการเลือกข้อมูลได้ 1 เงื่อนไข หรือมากกว่า 1 เงื่อนไข

SELECT Column1, Column2, Column3,... FROM Table-Name WHERE [Field] = 'Value

SQL ORDER BY 
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยจัดเรียงข้อมูลตามต้องกา

SELECT ... FROM [Table-Name] ORDER BY [Field] [ASC/DESC],[Field] [ASC/DESC],...

**ASC = น้อยไปหามาก
    DESC = มากไปหาน้อย

SQL ALIAS 
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดย ALIAS คือการสร้างชื่อจำลองขึ้นมาใหม่ โดยสามารถจำลองชื่อได้ทั้งชื่อ Field และชื่อ Table

SELECT Column1 AS Alias1,Column2 AS Alias2,Column3 AS Alias3,... FROM [Table-Name1] Table Alias

SQL - SUM  
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยหาค่าผลรวมของฟิวด์รูปแบบโค้ด

SELECT SUM(Column/Field) AS [New-Field] FROM [Table-Name]

SQL OR AND 
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table
) การเชื่อมวลีสำหรับเงื่อนไขต่าง ๆ 

SELECT Column1,Column2,Column3,... FROM [Table-Name] WHERE [Field] = 'Value' [AND/OR] [Field] = 'Value'

SQL LIMIT 
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) ที่สามารถกำหนดจำนวน Record ที่แสดงผลออกมาได้

SELECT Column1, Column2, Column3,... FROM [Table-Name] ORDER BY [Fields] [ASC/DESC] LIMIT [Int-Start] , [Int-End]

SQL เพิ่มข้อมูลเข้าสู่ตาราง
INSERT INTO <ชื่อตาราง>(ฟิลด์1,ฟิลด์2,ฟิลด์3) VALUES(ข้อมูล1,ข้อมูล2, ข้อมูล3);

SQL คำสั่งลบข้อมูลในตาราง
DELETE  FROM <ชื่อตาราง> WHERE <เงื่อนไข>;

SQL คำสั่งแก้ไขข้อมูลในตาราง
UPDATE <ชื่อตาราง> SET <ฟิลด์> = <ข้อมูล> WHERE <เงื่อนไข>;
SQL คำสั่งที่ใช้ในการ search คือ LIKE
SELECT * FROM table_name WHERE $field_search LIKE '$search';

**$field_search = ฟิลด์ที่ต้องการค้นหา     
**$search = คำที่ต้องการค้นหา
LIKE '%$search' แปลว่า ลงท้ายด้วย $search
LIKE '$search%' แปลว่า ขึ้นต้นด้วย $search
LIKE '%$search%' แปลว่า มีคำว่า $search (ช้าสุด)

SQL การใช้ limit ในการ Select ตาราง
select * from table_name limit 0, 5;

**คำอธิบาย  limit 0, 5
0 หมายถึง ให้เริ่มแสดงจาก record ที่ 0 (record แรก)หรือหมายถึงเริ่มแสดงที่เรคคอร์ดที่เท่าไหร่
5 หมายถึง ให้แสดงเป็นจำนวน 5 record หรือหมายถึงนับว่าจะเอากี่เรคคอร์ด จาก 0

SQL ในการ Insert
Insert into table_name (field_name1, field_name2) values ('$data1', '$data2');

SQL ในการ Update
Update table_name set field_name1='$data1', field_name2='$data2';

SQL ในการ Delete
Delete from table_name where field_name='$variable' ;



วันจันทร์ที่ 27 มกราคม พ.ศ. 2557

การจัดระเบียบฐานข้อมูล (Normalization)




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

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

การทำให้ตารางเข้าสู่ 1NF
                ในระดับ 1NF จะมีกฎอยู่ว่า ห้ามไม่ให้มีช่องข้อมูลที่เก็บค่ามากกว่าหนึ่งค่าอยู่ จากตัวอย่างในรูปที่1 ก็จะได้ว่าให้แตกข้อมูลในตารางทางซ้ายออกเป็นเรคคอร์ดย่อยๆตามตารางทางด้านขวา



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

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




จะเห็นได้ว่าข้อมูลลดความ ซ้ำซ้อนลงได้มาก จากตัวอย่างในรูปที่ 2 บน ที่มีข้อมูลทั้งหมด84 ช่อง จะเหลือเพียง64ช่องเท่านั้น (นับจากตารางสินค้าและตารางการขาย ในรูปที่ 2 และตารางใบกำกับสินค้าและตารางลูกค้าในรูปที่ 3) แต่ในขณะเดียวกัน ก็จะมีจำนวนตารางเพิ่มขึ้นด้วยจาก1ตารางเป็น4ตาราง โครงสร้างก็มีความซับซ้อน มากขึ้น ทำให้การใช้งานอาจจะสับสนได้ นอกจากนั้นการที่มีตารางย่อยๆหลายตารางอาจทำให้การเข้าถึงข้อมูลช้าลงด้วย ดังนั้น การจะทำถึงขั้นใด หรือ ทำให้สมบูรณ์เพียงไรนั้นก็ขึ้นอยู่กับลักษณะข้อมูลที่จะใช้