วันพุธที่ 5 พฤศจิกายน พ.ศ. 2557

ความหมายของระบบฐานข้อมูล

ความหมายของระบบฐานข้อมูล

          ฐานข้อมูล หมายถึง แหล่งที่ใช้สำหรับเก็บรวบรวมข้อมูลซึ่งอยู่ในรูปแฟ้มข้อมูลมารวมไว้ที่เดียวกัน รวมทั้งต้องมีส่วนของพจนานุกรมข้อมูล (data dictionary) เก็บคำอธิบายเกี่ยวกับโครงสร้างของฐานข้อมูล และเนื่องจากข้อมูลที่จัดเก็บนั้นต้องมีความสัมพันธ์ซึ่งกันและกันทำให้สามารถสืบค้น (retrieval) แก้ไข (modified) ปรับปรุงเปลี่ยนแปลงโครงสร้าง ข้อมูล (update) และจัดเรียง (sort) ได้สะดวกขึ้นโดยในการกระทำการดังที่กล่าวมาแล้ว ต้องอาศัยซอฟต์แวร์ประยุกต์สำหรับจัดการฐานข้อมูล
    ระบบฐานข้อมูล หมายถึง ระบบการรวบรวมแฟ้มข้อมูลหลายๆ แฟ้มข้อมูลเข้าด้วยกัน โดยขจัดความซ้ำซ้อนของข้อมูลออก แล้วเก็บข้อมูลไว้ที่ศูนย์กลาง เพื่อการใช้งานร่วมกันในองค์กร ภายในระบบต้องมีส่วนที่เป็นโปรแกรมประยุกต์ที่สร้างขึ้นเพื่อเชื่อมโยงและใช้งานข้อมูลในฐานข้อมูล (database) และจะต้องมีการดูแลรักษาความปลอดภัยของข้อมูลเหล่านั้น มีการกำหนดสิทธิของผู้ใช้งานแต่ละคนให้แตกต่างกัน ตามแต่ความต้องการในการใช้งาน
    จากความหมายที่กล่าวมาข้างต้น ระบบฐานข้อมูลจะประกอบด้วยแฟ้มข้อมูลจำนวนหลายๆ แฟ้มดังตัวอย่างในรูป แฟ้มข้อมูลเหล่านี้ต้องมีการจัดระบบแฟ้มไว้อย่างดี กล่าวคือ ข้อมูลในแฟ้มข้อมูลเดียวกันต้องไม่มีการซ้ำซ้อนกัน แต่ระหว่างแฟ้มข้อมูลอาจมีการซ้ำซ้อนกันได้บ้าง และต้องเปิดโอกาสให้ผู้ใช้สามารถเข้าถึงข้อมูล และค้นหาได้ง่าย นอกจากนี้ยังสามารถ เพิ่มเติม หรือลบออกได้โดยไม่ทำให้ข้อมูลอื่นเสียหาย 

ชนิดของฟิลด์

ชนิดของฟิลด์

VARCHAR : สำหรับเก็บข้อมูลประเภทตัวอักษร ทุกครั้งที่เลือกชนิดของฟิลด์เป็นประเภทนี้ จะต้องมี การกำหนดความยาวของข้อมูลลงไปด้วย ซึ่งสามารถกำหนดค่าได้ตั้งแต่ 1 - 255 ฟิลด์ชนิดนี้ เหมาะ
สำหรับการเก็บข้อมูลสั้นๆ เช่น ชื่อ นามสกุล หรือหัวข้อต่างๆ เป็นต้น... ในส่วนฟิลด์ประเภทนี้ จะ สามารถเลือก "แอตทริบิวต์" เป็น BINARY ได้ โดยปกติแล้วการจัดเรียงข้อมูลเวลาสืบค้น (query) สำหรับ VARCHAR จะเป็นแบบ case-sensitive (ตัวอักษรใหญ่ และเล็กมีความหมายแตกต่างกัน) แต่ หากระบุ "แอตทริบิวต์" เป็น BINARY ปุ๊บ การสืบค้นจะไม่คำนึงตัวอักษรว่าจะเป็นตัวใหญ่ หรือตัวเล็ก

CHAR : สำหรับเก็บข้อมูลประเภทตัวอักษร แบบที่ถูกจำกัดความกว้างเอาไว้คือ 255 ตัวอักษร ไม่ สามารถปรับเปลี่ยนได้เหมือนกับ VARCHAR หากทำการสืบค้นโดยเรียงตามลำดับ ก็จะเรียงข้อมูล
แบบ case-sensitive เว้นแต่จะกำหนดแอตทริบิวต์เป็น BINARY ที่จะทำให้การเรียงข้อมูลเป็นแบบ non case-sensitive เช่นเดียวกับ VARCHAR

TINYTEXT : ในกรณีที่ข้อความยาวๆ หรือต้องการที่จะค้นหาข้อความ โดยอาศัยฟีเจอร์ FULL TEXT SEARCH ของ MySQL เราอาจจะเลือกที่จะไม่เก็บข้อมูลลงในฟิลด์ประเภท VARCHAR ที่มีข้อจำกัด
แค่ 256 ตัวอักษร แต่เราจะเก็บลงฟิลด์ประเภท TEXT แทน โดย TINYTEXT นี้ จะสามารถเก็บข้อมูล ได้ 256 ตัวอักษร ซึ่งมองเผินๆ ก็ไม่ต่างกับเก็บลงฟิลด์ประเภท CHAR หรือ VARCHAR(255) เลย แต่
จริงๆ มันต่างกันตรงที่ มันทำFULL TEXT SEARCH ได้

TEXT : สำหรับเก็บข้อมูลประเภทตัวอักษร เช่นเดียวกับ TINYTEXT แต่สามารถเก็บได้มากขึ้น โดย สูงสุดคือ 65,535 ตัวอักษร หรือ 64KB เหมาะสำหรับเก็บข้อมูลพวกเนื้อหาต่างๆ ที่ยาวๆ 

MEDIUMTEXT : เก็บข้อมูลประเภทตัวอักษร เช่นเดียวกับ TINYTEXT แต่เก็บข้อมูลได้ 16,777,215 ตัวอักษร

LONGTEXT : เก็บข้อมูลประเภทตัวอักษร เช่นเดียวกับ TINYTEXT แต่เก็บข้อมูลได้ 4,294,967,295 ตัวอักษร

TINYINT : สำหรับเก็บข้อมูลชนิดตัวเลขที่มีขนาด 8 บิต ข้อมูลประเภทนี้เราสามารถกำหนดเพิ่มเติม ในส่วนของ "แอตทริบิวต์" ได้ว่าจะเลือกเป็น UNSIGNED หรือ UNSIGNED ZEROFILL โดยจะมี ความแตกต่างดังนี้
      - UNSIGNED : จะหมายถึงเก็บค่าตัวเลขแบบไม่มีเครื่องหมาย แบบนี้จะทำใหสามารถเก็บค่าได้ ตั้งแต่ 0 - 255
      - UNSIGNED ZEROFILL : เหมือนข้างต้น แต่ว่าหากข้อมูลที่กรอกเข้ามาไม่ครบตามจำนวน หลักที่เรากำหนด ตัว MySQL จะทำการเติม 0 ให้ครบหลักเอง เช่น ถ้ากำหนดให้ใส่ได้ 3 หลัก แล้วทำการเก็บข้อมูล 25 เข้าไป เวลาที่สืบค้นดู เราจะได้ค่าออกมาเป็น 025 หากไม่เลือก "แอ ตทริบิวต์" สิ่งที่เราจะได้ก็คือ SIGNED นั่นก็คือต้องเสียบิตนึงไปเก็บเครื่องหมาย บวก/ลบ ทำ ให้สามารถเก็บข้อมูลได้อยู่ในช่วง -128 ถึง 127 เท่านั้น

SMALLINT : สำหรับเก็บข้อมูลประเภทตัวเลขที่มีขนาด 16 บิต จึงสามารถเก็บค่าได้ตั้งแต่ -32768 ถึง 32767 (ในกรณีแบบคิดเครื่องหมาย) หรือ 0 ถึง 65535 (ในกรณี UNSIGNED หรือไม่คิดเครื่องหมาย)
ซึ่งสามารถเลือก Attribute เป็น UNSIGNED และ UNSIGNED ZEROFILL ได้เช่นเดียวกับ TINYINT

MEDIUMINT : สำหรับเก็บข้อมูลประเภทตัวเลขที่มีขนาด 24 บิต นั่นก็หมายความว่าสามารถเก็บ ข้อมูลตัวเลขได้ตั้งแต่ -8388608 ไปจนถึง 8388607 (ในกรณีแบบคิดเครื่องหมาย) หรือ 0 ถึง 16777215
(ในกรณีที่เป็น UNSIGNED หรือไม่คิดเครื่องหมาย) ซึ่งสามารถเลือก Attribute เป็น UNSIGNED และ UNSIGNED ZEROFILL ได้เช่นเดียวกับ TINYINT

INT : สำหรับเก็บข้อมูลประเภทตัวเลขที่มีขนาด 32 บิต หรือสามารถเก็บข้อมูลได้ตั้งแต่ -2147483648 ไปจนถึง 2147483647 ครับ (ในกรณีแบบคิดเครื่องหมาย) หรือ 0 ถึง 4294967295 (ในกรณีที่เป็น
UNSIGNED หรือไม่คิดเครื่องหมาย) ซึ่งสามารถเลือก Attribute เป็น UNSIGNED และ UNSIGNED ZEROFILL ได้เช่นเดียวกับ TINYINT 

BIGINT : สำหรับเก็บข้อมูลประเภทตัวเลขที่มีขนาด 64 บิต สามารถเก็บข้อมูลได้ตั้งแต่ - 9223372036854775808 ไปจนถึง 9223372036854775807 เลยทีเดียว (แบบคิดเครื่องหมาย) หรือ 0 ถึง 18446744073709551615 (ในกรณีที่เป็น UNSIGNED หรือไม่คิดเครื่องหมาย) ซึ่งสามารถเลือก Attribute เป็น UNSIGNED และ UNSIGNED ZEROFILL ได้เช่นเดียวกับ TINYINT 

FLOAT[(M,D)] : ที่กล่าวถึงไปทั้งหมด ในตระกูล INT นั้นจะเป็นเลขจำนวนเต็ม หากเราบันทึกข้อมูล ที่มีเศษทศนิยม มันจะถูกปัดทันที ดังนั้นหากต้องการจะเก็บค่าที่เป็นเลขทศนิยม ต้องเลือกชนิดขอฟิลด์ เป็น FLOAT โดยจะเก็บข้อมูลแบบ 32 บิต คือมีค่าตั้งแต่ -3.402823466E+38 ไปจนถึง -1.175494351E- 38, 0 และ 1.175494351E-38 ถึง 3.402823466E+38

DOUBLE[(M,D)] : สำหรับเก็บข้อมูลประเภทตัวเลขทศนิยม เช่นเดียวกับ FLOAT แต่มีขนาดเป็น 64 บิต สามารถเก็บได้ตั้งแต่ -1.7976931348623157E+308 ถึง -2.2250738585072014E-308, 0 และ
2.2250738585072014E-308 ถึง 1.7976931348623157E+308

DECIMAL[(M,D)] : สำหรับเก็บข้อมูลประเภทตัวเลขทศนิยม เช่นเดียวกับ FLOAT แต่ใช้กับข้อมูลที่ ต้องการความละเอียดและถูกต้องของข้อมูลสูง ข้อสังเกต เกี่ยวกับข้อมูลประเภท FLOAT, DOUBLE และ DECIMAL ก็คือ เวลากำหนดความ ยาวของข้อมูลในฟิลด์ จะถูกกำหนดอยู่ในรูปแบบ (M,D) ซึ่งหมายความว่า ต้องมีการระบุว่า จะให้มี ตัวเลขส่วนที่เป็นจำนวนเต็มกี่หลัก และมีเลขทศนิยมกี่หลัก เช่น ถ้าเรากำหนดว่า FLOAT(5,2) จะ หมายความว่า เราจะเก็บข้อมูลเป็นตัวเลขจำนวนเต็ม 5 หลัก และทศนิยม 2 หลัก ดังนั้นหากทำการใส่ ข้อมูล 12345.6789 เข้าไป สิ่งที่จะเข้าไปอยู่ในข้อมูลจริงๆ ก็คือ 12345.68 (ปัดเศษให้มีจำนวนหลัก ตามที่กำหนดไว้)

DATE : สำหรับเก็บข้อมูลประเภทวันที่ โดยเก็บได้จาก 1 มกราคม ค.ศ. 1000 ถึง 31 ธันวาคม ค.ศ. 9999 โดยจะแสดงผลในรูปแบบ YYYY-MM-DD

DATETIME : สำหรับเก็บข้อมูลประเภทวันที่ และเวลา โดยจะเก็บได้ตั้งแต่ 1 มกราคม ค.ศ. 1000 เวลา 00:00:00 ไปจนถึง 31 ธันวาคม ค.ศ. 9999 เวลา 23:59:59 โดยรูปแบบการแสดงผล เวลาที่ทำการสืบค้น
(query) ออกมา จะเป็น YYYY-MM-DD HH:MM:SS 

TIMESTAMP[(M)] : สำหรับเก็บข้อมูลประเภทวันที่ และเวลาเช่นกัน แต่จะเก็บในรูปแบบของ YYYYMMDDHHMMSS หรือ YMMDDHHMMSS หรือ YYYYMMDD หรือ YYMMDD แล้วแต่ ว่าจะระบุค่า M เป็น 14, 12, 8 หรือ 6 ตามลำดับ สามารถเก็บได้ตั้งแต่วันที่ 1 มกราคม ค.ศ. 1000 ไป จนถึงประมาณปี ค.ศ. 2037 

TIME : สำหรับเก็บข้อมูลประเภทเวลา มีค่าได้ตั้งแต่ -838:59:59 ไปจนถึง 838:59:59 โดยจะแสดงผล ออกมาในรูปแบบ HH:MM:SS YEAR[(2/4)] : สำหรับเก็บข้อมูลประเภทปี ในรูปแบบ YYYY หรือ YY แล้วแต่ว่าจะเลือก 2 หรือ 4 (หากไม่ระบุ จะถือว่าเป็น 4 หลัก) โดยหากเลือกเป็น 4 หลัก จะเก็บค่าได้ตั้งแต่ ค.ศ. 1901 ถึง 2155 แต่ หากเป็น 2 หลัก จะเก็บตั้งแต่ ค.ศ. 1970 ถึง 2069 ข้อสังเกต ค่าที่เก็บในข้อมูลประเภท TIMESTAMP และ YEAR นั้นจะมีความสามารถพอๆ กับ การเก็บข้อมูลวันเดือนปี และเวลา ด้วยฟิลด์ชนิด VARCHAR แต่ต่างกันตรงที่ จะใช้เนื้อที่เก็บข้อมูล น้อยกว่า... ทว่า ฟิลด์ประเภท TIMESTAMP นั้นจะมีข้อจำกัดในเรื่องของเวลาที่สามารถเก็บได้ คือ จะต้องอยู่ในระหว่าง 1 มกราคม ค.ศ. 1000 ไปจนถึงแถวๆ ค.ศ. 2037 อย่างที่บอก แต่หากเก็บเป็น VARCHAR นั้นจะไม่ติดข้อจำกัดนี้ ฟิลด์ชนิด YEAR ก็เช่นกันครับ... ใช้เนื้อที่แค่ 1 ไบต์เท่านั้นในการ เก็บข้อมูล แต่ข้อจำกัดจะอยู่ที่ ปี ค.ศ. 1901 ถึง 2155 เท่านั้น (หรือ ค.ศ. 1970 ถึง 2069 ในกรณี 2 หลัก) แต่หากเก็บเป็น VARCHAR จะได้ตั้งแต่ 0000 ถึง 9999 เลย อันนี้เลยอยู่ที่ความจำเป็นมากกว่าครับ (แต่ ด้วยความที่ว่า ปัจจุบันฮาร์ดดิสก์ราคาถูกมากๆ ผมเลยไม่ติดใจอะไรที่จะใช้ VARCHAR แทน เพื่อ ความสบายใจ อิอิ เพราะสมมติว่ากินเนื้อที่ต่างกัน 3 ไบต์ ต่อ 1 ระเบียน มีข้อมูล 4 ล้านระเบียน ก็เพิ่ง ต่างกัน 12 ล้านไบต์ หรือ 12 เมกะไบต์เท่านั้นเอง ซึ่งหากเทียบกับปริมาณข้อมูลทั้งหมดของข้อมูล 4 ล้านระเบียน ผมว่ามันต้องมีอย่างน้อยเป็นกิกะไบต์ ดังนั้นความแตกต่างที่ไม่กี่เมกะไบต์จึงไม่มากมาย)

TINYBLOB : สำหรับเก็บข้อมูลประเภทไบนารี ได้แก่ ไฟล์ข้อมูลต่างๆ, ไฟล์รูปภาพ, ไฟล์มัลติมีเดีย เป็นต้น คือไฟล์อะไรก็ตามที่อัพโหลดผ่านฟอร์มอัพโหลดไฟล์ในภาษา HTML โดย TINYBLOB นั้น
จะมีเนื้อที่ให้เก็บข้อมูลได้ 256 ไบต์

BLOB : สำหรับเก็บข้อมูลประเภทไบนารี เช่นเดียวกับ TINYBLOB แต่สามารถเก็บข้อมูลได้ 64KB

MEDIUMBLOB : สำหรับเก็บข้อมูลประเภทไบนารี เช่นเดียวกับ TINYBLOB แต่เก็บข้อมูลได้ 16MB

LONGBLOB : สำหรับเก็บข้อมูลประเภทไบนารี เช่นเดียวกับ TINYBLOB แต่เก็บข้อมูลได้ 4GB ข้อสังเกต ข้อมูลประเภท BLOB นั้น แม้จะมีประโยชน์ในเรื่องของการเก็บข้อมูลประเภท BINARY ให้อยู่กับตัวฐานข้อมูล ทำให้สะดวกเวลาสืบค้นก็ตาม แต่มันก็ทำให้ฐานข้อมูลมีขนาดใหญ่ เกินความจำเป็นด้วย ทำให้เกิดความไม่สะดวกในการสำรองฐานข้อมูลในกรณีที่ มีข้อมูลอัพโหลดไป เก็บมากๆ โดยปกติแล้ว จะใช้วิธีการอัพโหลดไปเก็บไว้ในโฟลเดอร์ แล้วเก็บลิงก์ไปยังไฟล์เหล่านั้น เป็นฟิลด์ชนิด VARCHAR มากกว่า


SET : สำหรับเก็บข้อมูลที่เป็นกลุ่มของข้อมูลที่ยอมให้เลือกได้ 1 ค่าหรือหลายๆ ค่า ซึ่งสามารถกำหนด ได้ถึง 64 ค่า


ข้อดีและข้อเสียของการใช้ฐานข้อมูล

ข้อดีของการใช้ฐานข้อมูล


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

1.2 ข้อมูลที่จัดเก็บมีความทันสมัย เมื่อข้อมูลในระบบฐานข้อมูลได้รับการดูแลปรับปรุงอย่างต่อเนื่อง ทำให้ข้อมูลที่จัดเก็บเป็นข้อมูลที่มีความทันสมัย ตรงกับเหตุการณ์ในปัจจุบัน และตรงกับความต้องการอยู่เสมอ

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

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

1.5 ใช้ข้อมูลร่วมกันได้ เนื่องจากระบบการจัดการฐานข้อมูลสามารถจัดให้ผู้ใช้แต่ละคนเข้าใช้ข้อมูลในแฟ้มที่มีข้อมูลเดียวกันได้ในเวลาเดียวกัน เช่น ฝ่ายบุคคลและฝ่ายการเงิน สามารถที่จะใช้ข้อมูลจากแฟ้มประวัติพนักงานในระบบฐานข้อมูลได้พร้อมกัน

1.6 ควบคุมมาตรฐานของข้อมูลได้ เมื่อข้อมูลต่างๆ ในหน่วยงานถูกรวบรวมเข้ามา ผู้บริหารระบบฐานข้อมูลสามารถที่จะวางมาตรฐานในการรับข้อมูล แสดงผลข้อมูล ตลอดจนการจัดเก็บข้อมูลได้ เช่น การกำหนดรูปแบบของตัวเลขให้มีทศนิยม 2 ตำแหน่งสำหรับค่าที่เป็นตัวเงิน การกำหนดรูปแบบของการรับ และแสดงผลสำหรับข้อมูลที่เป็นวันที่ นอกจากนี้การที่ข้อมูลมีมาตรฐานเดียวกัน ทำให้สามารถแลกเปลี่ยนข้อมูลระหว่างระบบได้อย่างสะดวก

1.7 จัดทำระบบการรักษาความปลอดภัยของข้อมูลได้ ผู้บริหารระบบฐานข้อมูลสามารถกำหนดรหัสผ่านเข้าใช้งานข้อมูลของผู้ใช้แต่ละราย โดยระบบการจัดการฐานข้อมูลจะทำการตรวจสอบสิทธิ์ในการทำงานกับข้อมูลทุกครั้ง เช่น การตรวจสอบสิทธิ์ในการเรียกดูข้อมูล   การลบข้อมูล  การปรับปรุงข้อมูล   และการเพิ่มข้อมูลในแต่ละแฟ้มข้อมูล

1.8 ควบคุมความถูกต้องของข้อมูลได้   ปัญหาเรื่องความขัดแย้งกันของข้อมูลที่มีความซับซ้อน เป็นปัญหาหนึ่งในเรื่องความถูกต้องของข้อมูล ซึ่งเมื่อได้มีการกำจัดความซับซ้อนของข้อมูลออก ปัญหาเรื่องความถูกต้องของข้อมูลที่อาจเกิดขึ้นได้ เช่น อายุโดยปกติของคนงาน ควรอยู่ระหว่าง 18 – 60 ปี ถ้าหากในระบบฐานข้อมูล ปรากฏมีพนักงานที่มีอายุ 150 ปีซึ่งเป็นไปไม่ได้ในทางปฏิบัติที่หน่วยงานจะมีการว่าจ้างคนงานที่มีอายุเกิน 60 ปี และอายุของคนในปัจจุบันไม่ควรเกิน 100 ปี ผู้บริหารระบบฐานข้อมูลสามารถกำหนดกฎเกณฑ์ในการนำเข้าข้อมูล และระบบจัดการฐานข้อมูลจะคอยควบคุมให้มีการนำเข้าข้อมูล เป็นไปตามกฎเกณฑ์ให้มีความถูกต้อง


ข้อเสียของการใช้ฐานข้อมูล

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

1.2 เกิดการสูญเสียข้อมูลได้ เนื่องจากข้อมูลต่างๆ ภายในฐานข้อมูลจะถูกจัดเก็บอยู่ในที่เดียวกัน ดังนั้นถ้าที่เก็บข้อมูลเกิดมีปัญหา อาจทำให้ต้องสูญเสียข้อมูลทั้งหมดในฐานข้อมูลได้ ดังนั้นการจัดทำฐานข้อมูลที่ดีจึงต้องมีการสำรองข้อมูลไว้เสมอ

ตัวอย่างฐานข้อมูล

ตัวอย่างฐานข้อมูล

1. ฐานข้อมูลในโรงเรียน จะเป็นการรวบรวมข้อมูลเกี่ยวกับนักเรียน ครู ภารโรง พัสดุ    สิ่งของ ฯลฯ อาจบันทึกข้อมูลลงกระดาษ แบบฟอร์มหรือจัดเก็บลงคอมพิวเตอร์ เมื่อมีการจัดเก็บข้อมูลอย่างเป็น ระเบียบ การค้นหาก็ทำได้ง่าย

2. ฐานข้อมูลของร้านค้า เมื่อมีการจัดเก็บข้อมูลเกี่ยวกับสินค้าและลูกค้าอย่างเป็นระบบดีแล้ว การ จัดการก็ง่าย สินค้ามีกี่รายการ ต้นทุน กำไรเท่าไร ก็ดูได้ทันที ในโลกธุรกิจ การมีข้อมูลจำนวนมากและมี การจัดการที่ดี มีผลต่อความได้เปรียบในการทำธุรกิจและการประสบความสำเร็จ
3. ฐานข้อมูลบัญชีครัวเรือน จะเป็นการรวบรวมข้อมูลเกี่ยวกับรายรับ-รายจ่ายในการใช้เงินในแต่ละวันของครัวเรือน ค่าใช้จ่ายที่เกี่ยวข้อง ฯลฯ อาจบันทึกข้อมูลลงกระดาษ แบบฟอร์มหรือจัดเก็บลงคอมพิวเตอร์ เมื่อมีการจัดเก็บข้อมูลอย่างเป็น ระเบียบ การค้นหาก็ทำได้ง่าย

4. ฐานข้อมูลสมาชิกสหกรณ์ จะเป็นการรวบรวมข้อมูลเกี่ยวกับเงินที่ได้รับจากการออมเงินของสมาชิกในแต่ละวัน และจะมีการบันทึกอย่างต่อเนื่อง หากมีค่าใช้จ่ายเกี่ยวกับสหกรณ์ก็จะมีการลงบันทึกไว้และมีการเก็บใบเสร็จไว้เป็นหลักฐาน ฯลฯ อาจบันทึกข้อมูลลงกระดาษ แบบฟอร์มหรือจัดเก็บลงคอมพิวเตอร์ เมื่อมีการจัดเก็บข้อมูลอย่างเป็น ระเบียบ การค้นหาก็ทำได้ง่าย

5. ฐานข้อมูลระบบห้องสมุด ยืม-คืน จะเป็นการจัดการเกี่ยวกับการยืม-คืนหนังสือ ให้ง่ายต่อการค้นหา จะมีข้อมูลที่เกี่ยวข้อง เัช่น ข้อมูลหนังสือ ข้อมูลการยืม ข้อมูลการคืน 
รหัสและประเภทหนังสือ ฯลฯ ทำให้ค้นหาได้ง่ายขึ้น