Professional Documents
Culture Documents
DB สรุป
DB สรุป
DB สรุป
CHAPTER 1
- Entity คือ หัวข้ อที่เราต้ องการจะเก็บลงฐานข้ อมูล (Table)
เช่น ฐานข้ อมูลของมหาวิทยาลัย
มีตาราง Student (นักศึกษา), Faculty (อาจารย์), Courses (รายวิชา)
ตารางเหล่านี ้ คือ Entity
- Attribute คือ หัวข้ อย่อยๆ ที่เราต้ องการจะเก็บของแต่ละ Entity (หรื อเรี ยกว่า Column)
- Relationship คือ ความสัมพันธ์ระหว่างตาราง / ระหว่าง Entity
- Data คือ ข้ อมูลดิบที่ยงั ไม่ผ่าน Process ใดๆ
- Information คือ ข้ อมูลที่ผ่านการประมวลผลแล้ ว (ผ่านการวิเคราะห์แล้ ว)
- ข้ อมูลที่เราเก็บลงฐานข้ อมูล = Data
- ข้ อมูลที่ดงึ มาจากฐานข้ อมูล = Information (เช่น แสดงรายชื่อนักศึกษาที่อายุมากกว่า 18 ปี )
- DB Characteristic
1. Persistent (คงอยู่) : ต้ องคงอยู่ห้ามสูญหาย
2. Inter-related : ต้ องมีความสัมพันธ์กนั ระหว่างข้ อมูล
3. Shared : ต้ องสามารถใช้ DB ร่วมกัน (ผ่าน Network)
- DBMS (Database Management System) : โปรแกรมจัดการ DB
o ต้ อง support
Data acquisition (การได้ มาซึง่ ข้ อมูล)
Dissemination (การแพร่ กระจาย)
Storage (การจัดเก็บ)
Maintenance (การรักษาสภาพ)
Retrieval (การกู้คืน)
Formatting
- DBMS มีหลายระดับ
o Enterprise DBMS : ฐานข้ อมูลขนาดใหญ่สำหรับใช้ ในระดับองค์กร หรื อบริ ษัทใหญ่ๆ
เช่น Oracle
o Desktop DBMS : ฐานข้ อมูลขนาดเล็ก สำหรับใช้ ในระบบเล็กๆ ไม่ใหญ่มาก
เช่น MS Access, SQLite, MySQL
o Embedded DBMS : ฐานข้ อมูลที่ติดตังถาวรอยู
้ ่ในอุปกรณ์
เช่น SQLite ใน iPhone
- Features of DBMS
o DB Definition มีการกำหนดโครงสร้ างของตารางและความสัมพันธ์ก่อนใช้ งาน
o Nonprocedural access การเข้ าถึงข้ อมูลไม่ต้องเป็ นขันเป็
้ นตอน
(ใช้ งานได้ โดยไม่ต้องเขียนโปรแกรมเป็ น )
o Application development ใช้ App.ในการ insert ข้ อมูล / นำเสนอผ่าน report
o Procedural Language Interface มีภาษาที่ใช้ ในกรณีที่มีเงื่อนไข
o Transaction processing การจัดการ Transaction เป็ นตัวๆ ไป
o Database Tuning
- DB Definition
o DDL (Data Definition Language) : คำสัง่ จัดการ Entity
เช่น สร้ างตาราง CREATE TABLE
แก้ ไขตาราง ALTER TABLE
o DML (Data Manipulation Language): คำสัง่ จัดการข้ อมูลแต่ละ record
เช่น เลือกข้ อมูล SELECT
เพิ่มข้ อมูล INSERT
แก้ ไขข้ อมูล UPDATE
o DCL (Data Control Language) : คำสัง่ ควบคุมการเข้ าถึงข้ อมูลใน DB
เช่น กำหนดสิทธิ์การเข้ าถึงข้ อมูล GRANT
- เหตุผลที่ต้องมี Procedural Language Interface
o ในกรณีที่ต้องการให้ มีการทำงานแบบ Batch Processing (ทำงานอื่น ขณะที่ CPU ว่าง)
o ในกรณีที่ต้องการให้ มีระบบอัตโนมัติ เช่น ระบบ SMS ตอบรับอัตโนมัติ
o ให้ มีประสิทธิภาพดีขึ ้น
- ตัวอย่างของ Transaction processing
สมมติวา่ มี balance = 30
Process 1 Update balance 20
Process 2 Withdraw balance 10
Process 3 Display balance
โดยมอง 3 Process เป็ น 1 Transaction
วิธีนี ้ ทำให้ ถ้ามี process ใด process หนึง่ เกิดผิดพลาดขึ ้นมา ข้ อมูลจะ roll back กลับไป
เหมือนกับก่อนที่จะเริ่ มทำ transaction
วิธีนี ้ ทำให้ มีความถูกต้ อง + ปลอดภัยมากขึ ้น (ช่วยจัดการกรณีที่มีหลาย user ใช้ งานพร้ อมกัน)
- DB Technology Evolution
o 1ST generation (1960s)
เก็บข้ อมูลลงใน File
ต้ องเขียนโปรแกรมไป access ทีละ File
ND
o 2 generation (1970s)
เก็บข้ อมูลในลักษณะของ Hierarchy (เข้ าถึงข้ อมูลเป็ นลำดับ) หรื อแบบ Network
Navigation
แบบ Network Navigation จะ Link ไปยังตัวอื่น ได้ เร็วกว่าแบบ Hierarchy
RD
o 3 generation (1980s)
เป็ นแบบ relational
ใช้ ในปั จจุบนั
TH
o 4 generation (1990s)
เป็ นแบบ Object Oriented (OO)
- DBMS ที่นิยมใช้ ในปั จจุบน
ั
o Enterprise DBMS
Oracle
SQL Server
DB2
(Open source) MySQL, Firebird, PostgreSQL
o Desktop DBMS
Microsoft Access
FoxPro, Paradox, Approach, FileMaker Pro
- Data Independence : ถ้ าแก้ ไขโครงสร้ าง DB แล้ ว จะไม่สง่ ผลกระทบต่อ Application
- Tree Schema Architecture
o External Level
o Conceptual Level
o Internal Level
* ข้ อดีของ Tree Schema Architecture คือ ถ้ าแก้ ไขส่ วน Conceptual Level แล้ ว ส่ วนอื่นๆ ก็
ยังสามารถทำงานต่ อไปได้ อย่ างไม่ มีปัญหา
CHAPTER 2
- Traditional Life Cycle เป็ นขันตอนการพั
้ ฒนา Software (มีลกั ษณะเป็ น Waterfall)
o Preliminary Investigation : เข้ าไปคุยกับ user คร่าวๆ ว่ามีปัญหาอะไร และต้ องการอะไร
สิ่งที่ได้ กลับมา คือ
Problem statement (ปั ญหา)
Feasibility Study (การวิเคราะห์ความเป็ นไปได้ )
o Systems Analysis : การวิเคราะห์ (สอบถาม user อย่างเจาะลึก)
สิ่งที่ได้ กลับมา คือ
System requirement (ระบบต้ องการอะไรบ้ าง)
o Systems Design : การออกแบบ
o Systems Implementation : เริ่ มเขียนโปรแกรม
o Maintenance : การดูแลรักษา
- การพัฒนาแบบอื่นๆ
o Spiral : สร้ างจากเล็กๆ แล้ วค่อยๆ ไปใหญ่
o Rapid application development (การสร้ าง Prototype) : ใช้ GUI เข้ ามาช่วยสร้ าง
- ข้ อมูลที่ดีมีคณ
ุ ภาพ ต้ องมี
o Completeness ครบถ้ วน
o Lack of ambiguity ไม่กำกวม
o Timeliness ตรงเวลา
o Correctness ถูกต้ อง
o Consistency สอดคล้ องกัน
o Reliability น่าเชื่อถือ
- Features of CASE Tools
o Diagramming (พวก ERD: Entity-Relationship Diagram)
o Documentation
User Manual : ไว้ ให้ user ดูวิธีการใช้
System Design : ไว้ ให้ คนอื่นดู เวลามาพัฒนาต่อ
o Analysis
o Prototyping
CHAPTER 3
- CREATE TABLE Student
( StdSSN CHAR (11),
StdFirstName VARCHAR (50),
StdLastName VARCHAR (50),
StdMajor CHAR (6),
StdGPA DECIMAL (3,2) )
- Table หรื อเรี ยกว่า Relation / Record-type / File
- Row หรื อเรี ยกว่า Tuple / Record
- Column หรื อเรี ยกว่า Attribute / Field
- Integrity Rules
o Primary Key เป็ น Entity integrity
ข้ อมูลห้ ามซ้ำ (Traceable)
ข้ อมูลห้ ามเป็ นค่าว่าง (ค่า Null)
o Foreign Key เป็ น Referential integrity
ค่าในคอลัมน์ที่เป็ น foreign key นัน้ จะต้ องตรงกับค่าในอีกตารางหนึง่
o Super Key
1 คอลัมน์ หรื อหลายคอลัมน์ที่รวมกันแล้ วมีความ unique คือไม่ซ้ำกันเลย
o Candidate Key
ใช้ แทน Primary Key ได้
Super key ที่น้อยที่สด
ุ ที่สามารถบ่งบอกความแตกต่างของแต่ละ record ได้
- การกำหนด Integrity Rule ต่างๆ
o CREATE TABLE Course
( CourseNo CHAR (6),
CrsDesc VARCHAR (250),
CrsUnits SMALLINT,
- การ Join
o Natural Join
การรวมตารางโดยอัตโนมัติ คือ มันจะไปหาเองว่า field ไหนที่ชื่อเหมือนกัน
SELECT *
FROM Student NATURAL JOIN Address
o Inner Join
การรวมตารางโดยเราเป็ นคนกำหนดว่าจะรวมตารางโดยเช็ค field ไหนกับ field ไหน
SELECT *
FROM Student JOIN Address ON Student.AddrID = Address.AddressID
o Outer Join
การรวมตารางโดยให้ แสดงข้ อมูลที่ไม่ตรงกับเงื่อนไขด้ วย
แบ่งเป็ น 3 แบบ
FULL OUTER JOIN แสดงหมดทุกๆ ค่า ทังซ้ ้ ายและขวา
LEFT OUTER JOIN แสดง row ที่ตรงตามเงื่อนไข + row อื่นๆ ของตาราง
ด้ านซ้ ายที่ไม่ตรงตามเงื่อนไข
RIGHT OUTER JOIN แสดง row ที่ตรงตามเงื่อนไข + row อื่นๆ ของตาราง
ด้ านขวาที่ไม่ตรงตามเงื่อนไข
- Traditional Set Operator
o UNION
o INTERSECT
o MINUS
CHAPTER 4
- SELECT … column … เลือก field ไหนมาแสดงบ้ าง
FROM ... table … เลือกจากตารางไหน
WHERE … condition … เงื่อนไขในการเลือกมาแต่ละ row
GROUP BY ... column … จัดกลุม่ ตาม field ไหน
HAVING … condition … เงื่อนไขในการเลือกมาแต่ละ group
ORDER BY … column … เรี ยงลำดับตาม field ไหน
- การกำหนดชื่อ column สำหรับแสดงผล
o SELECT FacSalary*1.1 AS IncreasedSalary
FROM Faculty
o SELECT FacSalary*1.1 IncreasedSalary
FROM Faculty
- การเอาวันที่มาคำนวณ
o SELECT * FROM Faculty
WHERE to_number(to_char(FacHireDate, ‘YYYY’)) > 1996
- การเลือกเฉพาะ record ที่มีค่าใน column ที่พจิ ารณาตรงกับค่ าที่กำหนดเอาไว้
o SELECT *
FROM Student
WHERE StdMajor = ‘JR’ OR StdMajor = ‘SR’
o SELECT *
FROM Student
WHERE StdMajor IN (‘JR’,’SR’)
- การหาจากช่ วงของวันที่
o SELECT * FROM Faculty
WHERE FacHireDate BETWEEN ‘1-Jan-1999’ AND ’31-Dec-2000’
- การเช็คว่ า field นัน้ มีค่าเป็ น null หรือเปล่ า
o SELECT * FROM Offering
WHERE FacSSN IS NULL
- การใช้ GROUP BY
o การจัดกลุม่ ตาม column ที่เลือก
o SELECT StdMajor, AVG(StdGPA) AS AvgGPA
FROM Student
GROUP BY StdMajor
- การใช้ HAVING
o ใช้ กรองข้ อมูลที่ได้ จากการจัดกลุม่ (GROUP BY)
o SELECT StdMajor, AVG(StdGPA) AS AvgGPA
FROM Student
GROUP BY StdMajor
HAVING AVG(StdGPA) > 3.1
- ฟั งก์ ชันที่ใช้ ได้ ใน GROUP BY
o COUNT(*) หาจำนวน row ทังหมด
้
o COUNT(column) หาจำนวน row ทังหมดในคอลั
้ มน์ที่เลือก โดยนับเฉพาะ row ที่ข้อมูลไม่
มีคา่ เป็ น null (สามารถใช้ DISTINCT ได้ )
o AVG(column) หาค่าเฉลี่ยของข้ อมูลในคอลัมน์ที่เลือก (สามารถใช้ DISTINCT ได้ )
o SUM(column) หาผลรวมของข้ อมูลในคอลัมน์ที่เลือก (สามารถใช้ DISTINCT ได้ )
o MIN(column) หาค่าที่น้อยที่สดุ ในคอลัมน์ที่เลือก
o MAX(column) หาค่าที่มากที่สดุ ในคอลัมน์ที่เลือก
- การเลือกข้ อมูลโดยตัดตัวที่ซ้ำออกไป
o SELECT DISTINCT FacCity, FacState
FROM Faculty
- การเรียงลำดับข้ อมูล
o ใช้ คำสัง่ ORDER BY ตามด้ วยชื่อคอลัมน์ที่จะใช้ เรี ยงลำดับ
o มีสองแบบคือ เรี ยงจากน้ อยไปมาก (ASC) และแบบเรี ยงจากมากไปน้ อย (DESC)
o โดยปกติถ้าไม่กำหนด ASC หรื อ DESC ค่าเริ่ มต้ น (default) ของมันคือ ASC
o SELECT *
FROM Student
ORDER BY StdGPA