ระบบฐานข้อมูลนักศึกษา ตอนที่ 3 ว่าด้วยการสร้างตาราง


ตอนนี้ เราจะต้องมาวิเคราะห์กันต่อครับ ว่าเราจะเก็บอะไรกันบ้างในแต่ละตาราง โดยแต่ละตารางจะต้องมีฟิลด์ต่างๆ ที่ต้องการจะเก็บ

สวัสดีครับทุกท่าน

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

ยกตัวอย่างเช่น

  • ตารางข้อมูลประวัติส่วนตัวทั่วไป (Table: Student) โดยที่ตารางนี้ เราจะกำหนดคุณสมบัติของตัว นศ. ว่าจะมีอะไรเก็บบ้าง เช่น

  • StudentID  รหัสนักศึกษา กี่ตำแหน่งก็ว่าไป

  • FirstName_Thai ชื่อภาษาไทย

  • LastName_Thai สกุลภาษาไทย

  • FirstName_Eng ชื่อภาษาอังกฤษ

  • LastName_Eng สกุลภาษาอังกฤษ

  • DOB วันเดือนปีเกิด

  • HomeAddress สถานที่อยู่ที่บ้าน

  • Province จังหวัดของภูมิลำเนา

  • PostalCode รหัสไปรษณีย์

  • Gender เพศ

  • .......อื่นๆ ที่จะเก็บโดยจะต้องควบคุมด้วยรหัสนักศึกษาได้

จากตารางชื่อ Student นี้ เราจะมีกุญแจหลัก (Primary Key) เป็นตัวควบคุมตารางนี้ คีย์หลักคืออะไร คีย์หลักเป็นตัวบอกว่า ข้อมูลฟิลด์ต่างๆในตารางนี้ จะต้องขึ้นตรงกับ รหัสนักศึกษานี้เท่านั้น ซึ่งคีย์หลักรหัสนักศึกษานี้ จะใช้ในการนำไปเชื่อมโยงในตารางอื่นๆ ต่อไป

ผมจะยกตัวอย่างตารางถัดไปนะครับ คือ ตารางรายวิชาเรียน (Table: Subject) โดยที่ตารางนี้ จะเก็บรายละเอียดเกี่ยวกับรายวิชาครับ ได้แก่

  • SubjectID รหัสรายวิชา กี่ตัวอักษรก็แล้วแต่ครับ ตามรูปแบบ

  • SubjectName ชื่อรายวิชา

  • SubjectUnit จำนวนหน่วยกิต

  • ...... อื่นๆ ที่จะเก็บโดยจะต้องควบคุมได้ด้วยรหัสวิชา

หากผมถามว่า ระหว่างตัว นศ. กับรายวิชา ควรจะมีความสัมพันธ์กันอย่างไร ทุกคนก็คงตอบเป็นเสียงเดียวกันว่า  สัมพันธ์กันด้วยการลงทะเบียนเรียนวิชานั้นๆ

ดังนั้น เราจะต้องมีอีกตารางเพื่อตอบสนองการลงทะเบียนเรียน (Table: Registration) นั่นคือ

  • StudentID รหัสนักศึกษา (จากตาราง Student)

  • SubjectID รหัสรายวิชา (จากตาราง Subject)

  • Semester/Year ภาคการศึกษาที่/ปีการศึกษา เก็บข้อมูลเช่น 1/2550, 2/2550 อะไรทำนองนี้

  • Grade ผลการเรียนที่ได้

จากตารางนี้จะเป็นว่าจะมีคีย์ในการควบคุมตาราง กี่คีย์ดีครับ นั่อคือ จะต้องสอดคล้องเงื่อนไขต่อไปนี้คือ

  1. นักศึกษาหนึ่งคนสามารถลงทะเบียนได้มากกว่าหนึ่งวิชาในหนึ่งภาคการศึกษา

  2. แต่ละรายวิชาจะต้องเปิดให้นักเรียนลงได้มากว่าหนึ่งคน

  3. และหากนักศึกษาคนนั้นตกในรายวิชานั้นๆ จะสามารถลงเพิ่มได้อีกในภาคการศึกษาอื่นด้วย

จากเงื่อนไขดังกล่าวทำให้เห็นว่า ในตารางการลงทะเบียนจะต้องมีคีย์หลักถึงสามตัวเลย คือ StudentID SubjectID และ Semester/Year เพื่อที่จะตอบสนองให้ข้อมูลเหล่านี้จะถูกเก็บได้ในตาราง

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

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

ดังนั้น ลองออกแบบตารางอื่นๆ กันดูนะครับ

มีปัญหาเขียนไว้นะครับผม

ขอบคุณมากครับ

เม้ง สมพร ช่วยอารีย์

หมายเลขบันทึก: 90868เขียนเมื่อ 18 เมษายน 2007 02:47 น. ()แก้ไขเมื่อ 23 มิถุนายน 2012 12:20 น. ()สัญญาอนุญาต: จำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (18)

สวัสดีครับพี่เม้ง

พี่เม้งมีโปรเจคใหม่อีกแล้ว :D ช่วงนี้ยุ่งๆวุ่นๆไม่ค่อยได้เข้ามาทักทาย พี่สบายดีนะครับ แต่พี่ก็คงจะยุ่งเหมือนกันมั้งครับ เพราะไม่ค่อยเข้าไปทักทายบล็อกเลขของต้นเลย (อ้อกะว่าเสาร์นี้เขียนเรื่องศูนย์ เสาร์ต่อไปเรื่องจำนวนเฉพาะครับ ขอโฆษณา) ช่วงนี้บล็อกเลขต้นยิ่งเป็นฟังก์ชั่นลดอยู่ด้วยครับ :D

อ่านบล็อกนี้แล้วเหมือนตอนที่ต้องมานั่งเรียน IS เลยครับ ฮ่าๆๆๆ ตอนนี้ลืมไปหมดแล้ว แล้วพี่จะสอนเขียน Data Flow Diagram ด้วยไหมครับ จะได้มาจองที่นั่งครับ :D

ขอบพระคุณครับ

ต้น

P

สวัสดีครับน้องต้น

  • ใช่ครับช่วงนี้ ก็ยุ่งๆเหมือนกันครับผม แต่ก็เข้าไปอ่านของต้นอยู่ครับ
  • ในบล็อกคณิตศาสตร์ครับ แต่ไม่ได้ฝากไว้ครับ
  • กำลังจะเขียนซักบทความด้วย เกี่ยวกับการคำนวณหาค่า PI แบบวิธีการสุ่ม หรือว่าวิธีการใช้วงกลมครับ
  • ดีครับผม รออ่านอยู่ครับ เรื่องเลขศูนย์ หากไม่มีเลขตัวนี้ก็หนักเหมือนกันครับ
  • พี่ว่าหลายคนเข้าไปช่วยอยู่ค่อยๆ เป็นค่อยๆ ไปครับ ทำไว้ตามแผนที่เคยคุยกันไว้ครับ ซึมลึกครับ
  • ส่วนบทความนี้เขียนไว้ให้อ่านกัน เรื่องฐานข้อมูลครับ พอดีท่าน อ.แฮนดี้ ขอมาครับ
  • สำหรับ DFD data flow diagram ก็ไว้ทยอยๆ ดูๆ ไปครับผม เพราะจริงๆ แล้วเรื่องนี้ ก็มีประโยชน์นำไปใช้กับงานด้านอื่นได้เยอะเหมือนกันครับ
  • ต้นสบายดีนะครับน้อง รักษาสุขภาพเช่นกันครับ
  • โชคดีนะครับผม
  • ขอบคุณสำหรับโปรเจคใหม่
  • ได้เล่นน้ำสงกรานต์กันบ้างหรือเปล่า?
  • มีบรรยากาศวันสงกรานตืที่ทำงานพี่ค่ะ เชิญคลิกที่นี่ค่ะ
P

สวัสดีครับพี่อัมพร

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

ตามมาอ่าน และลงหลักฐานขอบคุณครับ
    จะติดตามต่อไป  ว่างเมื่อไรเขียนต่อก็แล้วกัน
ดูแลสุขภาพด้วยนะครับ
         จาก พี่บ่าว.

ขอบคุณ ครับ อิอิ มี ตัวอย่าง เรื่อง DB ล่ะ ไพมารี่ คี ๆ ๆ ๆ ๆ ๆ ๆ
P

สวัสดีครับพี่บ่าว

  • ขอบคุณมากครับพี่บ่าว ค่อยๆ ทยอยเขียนให้นะครับ
  • คือไม่ได้ไปเปิดหนังสือด้านนี้มานานครับ คั้นเอามาในหัวจากกากที่พอจะตกหลงเหลืออยู่บ้างครับผม
  • โชคดีนะครับ
P

สวัสดีครับคุณบู้บี้จัง

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

สวัสดีครับพี่บางทราย

  • ขอบคุณมากนะครับพี่
  • พอดีผมคุยกับ อ.แฮนดี้ ท่านอาจารย์ กำลังเริ่มจัดทำในเรื่องนี้อยู่ครับ ผมก็เลยเขียนไว้เรื่อยๆ ครับ
  • ต้องรื้อเนื้อหาที่เคยทำมานะครับ
  • ขอบคุณพี่มากๆ นะครับ

ตอนนี้ผมก็ทำ ฐานข้อมูลนักศึกษาอยู่เหมือนกันครับ ตัวฐานข้อมูลเสร็จแล้วแล้วครับเลยว่าอยากจะพัฒนาต่อให้เป็นโปรแกรมครับ (ตัวฐานข้อมูลิใช้ access ทำครับ) เลยว่าจะใช้ vb ในการทำโปรแกรมครับ แต่คราวนี้ผมไม่ค่อยเก่ง vb ครับ ผมเชื่อม vbกับฐานข้อมูลไม่เป็นครับพี่ๆในบอร์ดช่วยแนะนำผมที่ครับว่าจะต้องทำอย่างไรดีหรือว่าแนะนำหนังสือ/web ที่ให้ความรู้เกี่ยวกับเรื่องนี้ทีครับปวดหัวมากๆเลย งานไม่เดินมาหลายอาทิตย์แล้ว ผมพึ่งอยู่วิทคอม ปี2 ทำไมได้งานยากจัง

สวัสดีครัีบ

ลองค้นหาในอินเทอร์เน็ตก่อนดีไหมครับ ศึกษาคู่มือ VB ที่เกี่ยวข้องกับ access น่าจะช่วยได้ครัีบ

ทดลองศึกษาและทำตามตัวอย่างก่อนนะครับ ส่วนหน้าตาโปรแกรมนั้น ออกแบบได้ตามที่คิดว่าเหมาะกับผู้ใช้ ให้คิดว่าตัวเองเป็นผู้ใช้ แล้วจากนั้นก็ค่อยปรับปรุงครับ

สำหรับการได้งานยาก นั้นนับว่าโชคดีนะครับ เพราจะทำให้เรารู้มากขึ้นในการเรียนรู้ แล้ววันหนึ่งจะทราบเองครับ ว่าโชคดีอย่างไร

โชคดีนะครับ

ขอบคุณครับผม แต่ว่าหาในเน็ตนิครับ พี่พอจะแนะนำได้ไหมครับว่า เข้าหน้าเวฟบอร์ดไหน ครับ

แล้วก็เรื่องหนังสอครับพี่ แนะนำหน่อยได้ไหมครับว่าจะเลือกซื้อหนังอะไรดี เอาแบบเป็นชื่อหนังสือได้ยิ่งดีครับ ขอบคุณครับสำหรับคำแนะนำดีๆครับ

ตอนนี้กำลังจะทำฐานข้อมูลนักศึกษาค่ะ

search หาข้อมูลการทำฯ

เลยติดตามอ่านอยู่นะค่ะ แต่ก็ยังงง ๆ อยู่

สวัสดีคะ

อยากถามเกี่ยวกับการระบบฐานข้อมูลการลงทะเบียนของนักเรียนคะ ว่าเราต้องเตรียมตารางข้อมูลของอะไรบ้างและแต่ละข้อมูลมีรายละเอียดยังไงบ้างคะ

สวัสดีครับคุณเม้ง

ผมสนใจบล็อกนี้มากอ่ะครับ

เพราะผมกำลังจะหัดทำฐานข้อมูล นศ.ระดับโรงเรียนพาณิชย์อ่ะครับ

ช่วยเขียน ตอนที่ 4 และตอนต่อๆ ไป หน่อยได้ไหมครับ

ขอบคุณครับ

สวัสดีครับทุกท่าน

      เบื้องต้นให้ทำความเข้าใจในการสร้างระบบฐานข้อมูลก่อนนะครับ และออกแบบการไหลของข้อมูลก่อนด้วยนะครับ ระบบตารางควรจะมีการเชื่อมโยงโดยไม่ทำให้เกิดความขัดแย้งต่อการเชื่อมโยงคำถามในอนาคตด้วยนะครับ

แล้วผมจะมาต่อให้นะครับ วันนี้ยุ่งมากหน่อยครับ

ขอบคุณมากๆ นะครับ ที่สนใจครับ

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท