You are on page 1of 9

INT203 Information Management I

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,

CONSTRAINT PKCourse PRIMARY KEY (CourseNo),


CONSTRAINT UniqueCrsDesc UNIQUE (CrsDesc) )
o CREATE TABLE Course
( CourseNo CHAR (6) PRIMARY KEY,
CrsDesc VARCHAR (250) UNIQUE,
CrsUnits SMALLINT )

*ถ้ าเขียนแบบแรก จะมีการกำหนดชื่อ Constraint ทำให้ เวลาไปดูใน document ของ


constraint ทัง้ หมด จะทำให้ เข้ าใจได้ ง่ายว่ าหมายถึง column ไหน เพราะถ้ าเขียนแบบที่สอง
ชื่อ Constraint จะเป็ นรูปแบบที่เครื่องสร้ างให้ คือเป็ น 00001 อะไรอย่ างนี ้

- ถ้ าเป็ นรูปแบบ M-N Relationship คือ แบบ Many-to-Many


o สามารถเขียนในรู ปแบบ ER ได้
o แต่ในการเขียนโปรแกรมจริ งๆ ไม่สามารถทำได้
o จึงต้ องใช้ เป็ น One-to-Many สองตัว
o เช่น ความสัมพันธ์ระหว่าง Course กับ Student จะเป็ น Many-to-Many
 แต่เวลาเขียนโปรแกรมจริ งๆ จะต้ องมีตารางมาคัน ่ กลาง
Course สัมพันธ์กบั Enrollment แบบ One-to-Many
Student สัมพันธ์กบั Enrollment แบบ One-to-Many
- กรณีที่มีการ Reference กันของตารางอยู่ เช่น Student สัมพันธ์อยู่กบั Address
แล้ วเกิดต้ องการลบข้ อมูลที่มีการ ref. อยู่ จะมี 3 แบบให้ เลือกใช้
o Restrict ลบไม่ได้ ถ้ าข้ อมูล row นันยั
้ งถูก reference อยู่
o Cascade เมื่อลบ row แล้ วมันจะไปลบ row ที่ทำการ reference มาหา row ที่ถกู ลบด้ วย
o Nullify ลบแล้ ว จะ set ข้ อมูลที่ ref. เป็ น Null
o Default ลบแล้ ว จะ set ข้ อมูลกลับไปเป็ นค่า default
- วิธีกำหนด Action (Restrict/Cascade/Nullify/Default)
CREATE TABLE Enrollment
( OfferNo INTEGER NOT NULL,
StdSSN CHAR(11) NOT NULL,
EnrGrade DECIMAL(3,2),

CONSTRAINT FKOfferNo FOREIGN KEY (OfferNo)


REFERENCES Offering
ON DELETE RESTRICT
ON UPDATE CASCADE )
- Subset Operator
o Restrict
 เลือกมาบาง record
o Project
 เลือกมาบาง column
- Cross Product
o เช่น { A, B, C } X { 1, 2 }
จะได้ { { A, 1 }, { A, 2 }, { B, 1 }, { B, 2 }, { C, 1 }, { C, 2 } }
o SELECT *
FROM Table1, Table2
WHERE Table1.x = Table2.y

- การ 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

You might also like