ผมมีตารางข้อมูลของข้อมูลวิชาเลือกนักเรียน ซึ่งแต่ละเทอมมี 3 วิชา
ปัญหามีมีอยู่ว่าเวลาผมจะค้นหาข้อมูลนักเรียนที่มีวิชาเลือกเนี่ย ผมต้องทำแบบนี้
SELECT * FROM subject_member WHERE member_now_1=(รหุัสวิชา) OR member_now_2=(รหุัสวิชา) OR member_now_3=(รหุัสวิชา);
ผมคิดว่าถ้าเขียนแบบนี้ มันจะไม่ค่อยเป็น dynamic สักเท่าไหร่นะครับ
ผมอยากทราบว่า ระหว่าง
WHERE member_now LIKE %(รหุัสวิชา)%;
แต่ผมกังวลว่ามันจะมีผลต่อความเร็วในการ query ข้อมูลออกมา และไม่สะดวกเวลาค้นหาเป็นสายชั้นด้วย
หรือถ้ามีวิธีอื่นที่น่าสนใจก็เสนอกันได้นะครับ
ขอบคุณมากครับ _/\_
database ออกแบบผิดนะครับ ไม่ควรทำ database แบบนี้ควรสร้าง bride table แยกวิชาเลือกออกมาถึงจะถูกนะครับ ทำแบบนี้แทบไม่ได้ใช้ SQL เลย ถ้ายังดึงดันใช้โปรแกรมมิ่งต่อไปแล้วพอปริมาณข้อมูลเพิ่มขี้นมามากๆ พอแรมมันเต็มเราจะไม่สามารถ query ข้อมูลได้อีกนะครับ
ขอบคุึณสำหรับคำแนะนำครับ
ผมก็กำลังคิดทำแบบนั้นเหมือนกัน เพื่อจะได้นำฐานข้อมูลไปใช้กับโครงกา่รอื่นได้ด้วย
ตอนนี้ผมคิดว่าจะแบ่งตารางนี้ออกเป็นสามส่วนคือ
แต่ก็มีปัญหาเหมือนที่ผมตั้งคำถามนั่นล่ะครับ
อีกอย่างคือ เคื่องที่ีเป็น db server กับ web server เป็นเครื่องเดียวกัน เลยไม่ได้เแคร์อะไรมากในตอนแรกน่ะครับ -_-"
บล็อกส่วนตัวที่อัพเดตตามอารมณ์และความขยัน :P
แยก member_now_X ออกไปเป็นอีกตารางหนึงครับ
normalize เถอะครับ จะได้ไม่เป็นภาระลูกน้อง = = (เหยด)
เอ่อ... ไม่ได้กวนอะไรนะครับ แต่ normalize หมายถึงอะไรครับ = ="
บล็อกส่วนตัวที่อัพเดตตามอารมณ์และความขยัน :P
เชิญครับ
ขอบคุณครับ
ตอนนี้ผมแยกรหัสวิชาเลือกของแต่ละคนเป็นอีกตารางแล้ว โดยให้มี id ที่สัมพันธ์ แล้วแต่ละฟิลด์ ก็จะเป็น id ของวิชาที่ชี้ไปในตารางรายวิชา ประมาณนี้
แบบนี้พอจะเป็น normalize ยังครับ?
บล็อกส่วนตัวที่อัพเดตตามอารมณ์และความขยัน :P
เริ่มต้นได้ดีครับ ยังงงๆกับตาราง member_mcourse อยู่ครับ น่าจะย่อยมาได้อีกครับ ตอนเรียนผมลืมไปเยอะเลย normalize กับแบบลึกซึ้งมาก
ขอบคุณครับ
คือที่จริงไอ้เจ้า now_x กับ term1_x เนี่ย ผมไว้เก็บ id ของวิชาที่จะเรียนวิชาเลือกน่ะครับ เลือกได้สามวิชาต่อเทอมน่ะครับ
บล็อกส่วนตัวที่อัพเดตตามอารมณ์และความขยัน :P
น่าจะแยกเป็น ENROLL, SEMESTER ครับ จะได้ใช้ในการเรียกดูย้อนหลังรายภาคการศึกษาและก็จัดการวิชาได้อิสระกว่าครับ
STUDENT -> ENROLL(ลงทะเบียน) <- SUBJECT(วิชา) <- SEMESTER(ภาคการศึกษา) แล้วค่อยเข้ามา SELECT ดูว่าลงทะเบียนไปกี่วิชาแล้วครับ (นอกนั้นคงเป็นแยกตารางของอาจารย์ออกไปครับ)
คือถ้ามันยุ่งๆหรือไม่จำเป็นขนาดนั้นก็ไม่ต้องตามผมก็ได้ครับ ไม่ว่ากัน
พอเจอ data เยอะๆจะร้อง denormalize เถอะครับ จะได้ไม่เป็นภาระลูกหลาน