หัวข้อ: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: ab2f6 ที่ 11 กรกฎาคม 2010, 16:16:17 (http://www.isanthai.com/db.jpg)
ผมไม่เข้าใจ การทำ NORMALLIZRELATION จากข้อมูลที่ผมมีเลยครับ ผมไม่เข้าใจที่อาจารย์สอนมากๆเลยครับ (เป็นหนูทดลองของอาจารย์ สอนครั้งแรกครับ) แล้วก็มีการเลือก key อีกครับ รบกวนพี่ๆช่วยแนะนำ ด้วยนะครับ ถ้างานเสร็จแล้ว ผมจะกลับมา +1 ให้ทุกคนครับ วันพุทธนี้ก็จะลองเอาไปส่งครับ ส่งทีละขั้นตอน หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: bompople ที่ 11 กรกฎาคม 2010, 16:20:29 โหหหหหห
ปิดข้อมูลมั้งครับ :P :-[ หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: ConfirmGroup ที่ 11 กรกฎาคม 2010, 16:21:54 มีอีเมลล์หละ ขาดเบอร์โทร
เิ๊ิอิ๊กกก :wanwan019: หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: ab2f6 ที่ 11 กรกฎาคม 2010, 16:25:41 โหหหหหห ปิดข้อมูลมั้งครับ :P :-[ อีเมล์ มั่ว คับ ไม่เป็นไรมั้งคับ หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: หนุ่มบ้านโคก ที่ 11 กรกฎาคม 2010, 16:30:03 การทำ NORMALLIZRELATION คือการลดความซ้ำซ้อนของข้อมูลในฐานข้อมูล แต่........ผมไม่เคยทำเลยเพราะเวลาที่จะเขียนระบบอะไรผมก็จะนึกเอาในหัวแล้วก็ทำ ๆๆๆ แก้ ๆๆ :P แล้วจะพูดทำไม :-X :-X
รอท่านอื่นก่อนน่ะครับ หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: thenetxx ที่ 11 กรกฎาคม 2010, 16:30:14 คือการแยกย่อยตารางครับ เพื่อรองรับ relation แบบ M-M หรือ 1-M ข้อมูลไหนที่มันซ้ำซ้อนใช้เหมือน ๆ เดิม ก็ให้แยก table ออกมาเท่านั้น
เช่น จังหวัด แยกออกมา เป็น table จังหวัด ก็จะมี field หลัก Table province -> province_id,province_name <<< จะมี 76 record Table speed Table isp Table spu แล้วtable user จะเก็บแต่ข้อมูลที่ unique ถ้าเป็นแบบ M-M ใน Table user จะเก็บแค่ user_id,user_name,age,email แล้วแยก relational เพิ่ม อีก 1 tbl อาจจะชื่อว่า user_info_relation เก็บ user_id,province_id,isp_id,speed_id,spu_id ครับ เวลาต้องการลิ้งข้อมูล ก็แค่เพิ่มเข้าไปใน user_info_relation เพื่อเก็บ id ของทุกอย่างครับ หากไม่ลิ้ง ก็ลบออก หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: thenetxx ที่ 11 กรกฎาคม 2010, 16:33:39 ในการเขียนโปรแกรมทั่วไป อาจไม่ค่อยต้องคำนึงจุดนี้ครับ
แต่หากวันนึง ธุรกิจมี Transaction ที่ต้องรองรับการใช้งานจำนวนมาก เป็นแสน เป็นล้าน records ถ้าไม่ทำ database ก็จะบวม และเปลือง resource ครับ อีกทั้งการ Backup ยังทำได้ช้ากว่ามาก ใช้เวลา query สูง สุดท้าย เครื่องก็จะกิน cpu และต้องเพิ่มเครื่องและอื่น ๆอีกมากมาย หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: เกมส์เกมส์.com ที่ 11 กรกฎาคม 2010, 16:40:04 ยังไม่เคยทำเลย ยังไม่เจอข้อมูบเยอะขนาดนั้นซะที
หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: ab2f6 ที่ 11 กรกฎาคม 2010, 16:41:04 คือการแยกย่อยตารางครับ เพื่อรองรับ relation แบบ M-M หรือ 1-M ข้อมูลไหนที่มันซ้ำซ้อนใช้เหมือน ๆ เดิม ก็ให้แยก table ออกมาเท่านั้น เช่น จังหวัด แยกออกมา เป็น table จังหวัด ก็จะมี field หลัก Table province -> province_id,province_name <<< จะมี 76 record Table speed Table isp Table spu แล้วtable user จะเก็บแต่ข้อมูลที่ unique ถ้าเป็นแบบ M-M ใน Table user จะเก็บแค่ user_id,user_name,age,email แล้วแยก relational เพิ่ม อีก 1 tbl อาจจะชื่อว่า user_info_relation เก็บ user_id,province_id,isp_id,speed_id,spu_id ครับ เวลาต้องการลิ้งข้อมูล ก็แค่เพิ่มเข้าไปใน user_info_relation เพื่อเก็บ id ของทุกอย่างครับ หากไม่ลิ้ง ก็ลบออก ยังงงนิดนึง แต่เป็นข้อมูลที่ดีมากเลยครับ ผมจะพยามยามทำความเข้าใจ แล้วนำมาทำครับ ขอบคุณมากๆๆครับ หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: ab2f6 ที่ 11 กรกฎาคม 2010, 16:42:51 ในการเขียนโปรแกรมทั่วไป อาจไม่ค่อยต้องคำนึงจุดนี้ครับ แต่หากวันนึง ธุรกิจมี Transaction ที่ต้องรองรับการใช้งานจำนวนมาก เป็นแสน เป็นล้าน records ถ้าไม่ทำ database ก็จะบวม และเปลือง resource ครับ อีกทั้งการ Backup ยังทำได้ช้ากว่ามาก ใช้เวลา query สูง สุดท้าย เครื่องก็จะกิน cpu และต้องเพิ่มเครื่องและอื่น ๆอีกมากมาย อาจารย์เขาให้ทำตามหลักสูตรที่ท่านสอน ผมก็ไม่เข้าใจเหมือนกันคับ ข้อมูลผมนิดเดียวเอง หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: @@@ ที่ 11 กรกฎาคม 2010, 20:54:50 user(รหัสสมาชิก,ชื่อผู้ใช้,อายุ,รหัสจังหวัด,อีเมล์,รหัสisp,รหัสspd,รหัสspu)
province(รหัสจังหวัด,ชื่อจังหวัด) isp(รหัสisp,ชื่อisp) spd(รหัสspd,ชื่อspd) spu(รหัสspu,ชื่อspu) ช้าไปมั้ยคับ :wanwan004: หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: Joejoe ที่ 11 กรกฎาคม 2010, 22:32:48 ง่ายๆ ครับการทำ NF คือการลดความซ้ำซ้อนของข้อมูล โดยกระบวนการ NF นั้นมี ตั้งแต่ระดับ 1NF จนไปถึง 5NF ( ใช้งานจริงๆ คงแค่ 2-3 NF เองครับในกรณีที่ข้อมูลไม่ซับซ้อนมาก) โดยวิธีการสังเกตุง่ายๆ ครับคือ หาก talbe ไหนมีข้อมูลที่ซ้ำซ้อนอยู่แสดงว่า ต้องมีการดำเนินการ NF ในขั้นต่อไปครับ เพราะอะไร ลองนึกดูนะครับว่า หากข้อมูลใดใน table ที่ไม่มีการ NF เลย ข้อมูลที่เก็บก็จะมีความซ้ำซ้อนกันมาก (ลองดูจากโจทย์ที่ได้มานะครับ ตัวอย่างก็ จังหวัดขอนแก่น มีเยอะมากซ้ำซ้อน) หากวันใดวันหนึ่ง มีการแก้ไข เปลี่ยนแปลงสักนิด record อื่น ๆ ที่มีข้อมุลแบบเดียวกันไม่ต้องไปตามแก้กันทุก record หรือครับ จริงไหม ?? ตัวอย่างง่าย ๆ ครับ เช่น ในโจทย์ที่ท่านได้มามี สมาชิก ที่อยู่จังหวัด ข่อนแก่น อยู่ ประมาณ 8 record ( หรืออาจมีมากกว่านั้น ) สมมติว่า ต้องการแก้ไข จาก จังหวัดขอนแก่น เป็น จ.ขอนแก่น ท่านไม่ต้องตามไปแก้กันครบทุก record ตามจำนวนสมาชิกที่อยู่ จังหวัดขอนแก่น หรือครับ ( นึกออกแล้วใช่ปะคับ ) ดังนั้น คุณควรแยกออกมา โดย แยกเก็บจังหวัดออกเป็นอีก table หนึ่ง โดยเก็บเฉพาะ รหัสจังหวัด และ ชื่อจังหวัด ก็จะได้ provinceid (PK), provincename เราก็จะมีจังหวัดขอนแก่น เพียง record เดียว อ่าวแล้วจะ เชื่อมโยง และเอาไปใช้กันยังไงละ ?? ก็แบบนี้ครับ ใน table ของสมาชิกแทนที่จะเก็บเป็นชื่อจังหวัด ก็เลือกเก็บเป็นรหัสของจังหวัดแทน ( ก็จะเป็น FK ) ทีนี่ถ้าต้องการแก้ไขจาก จังหวัดขอนแก่น เป็น จ.ขอนแก่น ก็ไปแก้ที่เดียวครับ ที่ table province ทีนี้ข้อมูลสมาชิกก็จะถูกต้อง และตรงกันแล้วครับ เพราะทุกตารางที่ทำการ NF ออกมาจะมีความสัมพันธ์ของข้อมูลกัน อย่างที่หลายๆ ท่านได้อธิบายไปแล้ว 1-m , M-M อ่อ ส่วนการเลือก PK ง่ายๆ ครับ ต้องเลือกหรือกำหนด ให้ PK โดยที่ PK จะต้องไม่มีการซ้ำซ้อนกันครับ ตัวอย่างเช่น จากโจทย์ สิ่งที่ไม่ซ้ำซ้อนใน table สมาชิก ก็คือ รหัสสมาชิกครับ *PK is Primarykey คีย์หลัก หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: freedom ที่ 11 กรกฎาคม 2010, 22:59:10 เรียนที่ไหนเนี่ย ?
หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: เฮียเล้ง ที่ 11 กรกฎาคม 2010, 23:31:49 เอาแบบง่ายๆคือ
แทนที่จะใส่ "ข่อนแก่น" ให้ใส่ 1 แทน แล้วจะให้ 1 แปลว่าไร ก็ไปสร้างอีกตาราง ex. 1=ขอนแก่น, 2=กทม ทีนี้สมมุติเขียนผิด "ขอนแก่" จะแก้เป็น "ขอนแก่น" ก็แก้ที่ 1=ขอนแก่ เป็น 1=ขอนแก่น แทน แก้ที่เดียว ไม่ต้องวนแก้ทุก record ประหยัดการทำงานไปเยอะ เป็น 1 ในวิธีการ normalization ที่พี่ๆ ข้างบนบอกนั้นแหละ แล้วก็ทำแบบนี้กับข้อมูลทุกฟิวที่ซ้ำๆ กันแบบนี้ หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: imodernlamp ที่ 12 กรกฎาคม 2010, 00:27:30 เอาง่ายๆ สั้นๆ DB Normalize ทำให้มันเป็นปกติแบบชาวบ้านเค้าคับ :P
โดยแบ่งการ Normalize ได้เป็นระดับ ซึ่งถามว่าควรจะ Normalize ให้อยู่ระดับใดแล้วแต่จุดประสงค์การใช้งานครับ 1NF: ข้อมูลในแต่ละแถว,คอลัมภ์มีแค่ 1 ค่า ถ้ามองในมุม Excel ถ้าใน 1 ช่องมีข้อมูลแค่บรรทัดเดียวก็ถือเป็น 1NF แล้ว (ตามตารางที่ให้มาก็ถือว่าเป็น 1NF แล้ว) 2NF: Table 1(รหัสสมาชิก, ชื่อผู้ใช้, อายุ, จังหวัด, อีเมลล์, ISP, SPD, SPU) 3NF: Table 1(รหัสสมาชิก, ชื่อผู้ใช้, อายุ, จังหวัด, อีเมลล์, ISP, SPD, SPU) BCNF: Table 1(รหัสสมาชิก, อายุ, จังหวัด, อีเมลล์, ISP, SPD, SPU) Table 2(รหัสสมาชิก, ชื่อผู้ใช้) 4NF: Table 1(รหัสสมาชิก, อายุ, จังหวัด, อีเมลล์, ISP, SPD, SPU) Table 2(รหัสสมาชิก, ชื่อผู้ใช้) 5NF: Table 1(รหัสสมาชิก, อายุ, จังหวัด, อีเมลล์, ISP, SPD, SPU) Table 2(รหัสสมาชิก, ชื่อผู้ใช้) อ้างอิงจาก Link นี้ลองศึกษาดูนะครับ http://std.kku.ac.th/5150200504/Nomalization.pdf ปล. เสริมอีกนิดนึง การเพิ่มพวกรหัสทั้งหลายเช่นรหัสสมาชิก รหัสจังหวัด รหัส ISP ไม่ใช่การ Normalize นะครับ เป็นการกำหนด Attribute ที่อยู่ตั้งแต่ step DB Design เพื่อให้โครงสร้างของ DB ดีขึ้นครับ ผิดถูกช่วยชี้แนะด้วยครับ :P หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: puiiz_zz ที่ 12 กรกฎาคม 2010, 00:41:34 ผู้มีความรู้ทั้งนั้นเลย
หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: ohmohm ที่ 12 กรกฎาคม 2010, 00:44:10 แถมๆ http://www.itboyd.com/blog/2008/11/data-duplicate/
หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: หนึ่งสุดหล่อ ที่ 12 กรกฎาคม 2010, 00:49:55 การทำ Normalization ก็คือการจัดระเบียบให้กับฐานข้อมูล เพื่อประโยชน์หลายๆอย่าง เช่นเพิ่มความเร็วในการ query (ทั้ง add edit delete) และลดความซ็ำซ้อนกันในฐานข้อมูล บางครั้งข้อมูลนิดเดียวมันมองไม่ออก ขอให้นึกถึงข้อมูลประชากรไทย สมมุติว่าไม่มีการออกแบบที่ดีเลย แล้วดันเก็บชื่อจังหวัดผิดไปหลายคน แล้วไม่เหมือนกันอีก เช่นแค่ใส่ว่า กรุงเทพฯ กรุงเทพ กทม ก็ไม่เหมือนกันแล้ว จะเกิดปัญหาขึ้นทันที จะต้องใช้เวลานานมากในการแก้ไข เลยมีคนนึงคิดระบบ NF ขึ้นมาเพื่อเป็นตัวช่วยเหลือในการออกแบบดาต้าเบส 1NF - ทุก ๆ field ในแต่ละ record จะเป็น single value นั่นคือ ในตารางหนึ่ง ๆ จะไม่มี ค่าของกลุ่ม ข้อมูลที่ซ้ำกัน (Repeating Group) 2NF - ต้องเป็น First Normal Form (1NF) และต้องมี key (บางตำรา อาจจะเรียกว่า index) ที่ทุก Non-key จะต้องขึ้นอยู่ (depends on) กับ key นี้ และมีเพียง key เดียวในหนึ่งตาราง ซึ่งเรียกว่า Primary Key การที่ทุกตาราง (Table) ต้องมี Key ก็เพราะเราต้องการให้แน่ใจว่าทุกข้อมูลใน record ต่าง ๆ สามารถค้นหาได้โดยใช้ key 3NF - ต้องเป็น Second Normal Form (2NF) และ ไม่มี Transitive dependence หรือ เป็นการขจัดแอตตริบิวที่ไม่เป็นคีย์ที่ขึ้น ( Transitive dependent ) ตรงกับแอตตริบิวอื่นที่ไม่ใช่คีย์หลักออกไป เพื่อให้แอตตริบิวที่ไม่ใช่คีย์หลักต้องขึ้นตรงกับทั้งส่วนที่เป็นคีย์หลัก และไม่ขึ้นกับแอตตริบิวอื่นที่ไม่ใช่คีย์หลัก BCNF - ต้องเป็น 3NF และไม่มี attribute อื่นในรีเลชันที่สามารถระบุค่าของ attribute ที่เป็นคีย์หลัก หรือส่วนหนึ่งส่วนใดของคีย์หลักในกรณีที่คีย์หลักเป็นคีย์ผสม 4NF - ต้องอยู่ในรูปแบบ BCNF และเป็นรีเลชันที่ไม่มีความสัมพันธ์ในการระบุค่าของ attribute แบบหลายค่า โดยที่ attribute ที่ถูกระบุค่าเหล่านี้ไม่มีความสัมพันธ์กัน (Independently Multivalued Dependency) 5NF - ต้องอยู่ในรูปแบบ 4NF และไม่มี Symmetric Constraint กล่าวคือ หากมีการแตกรีเลชันออกเป็นรีเลชันย่อย (Projection) และเมื่อทำการเชื่อมโยงรีเลชันย่อยทั้งหมด (Joint) จะไม่ก่อนให้เกิดข้อมูลใหม่ที่ไม่เหมือนรีเลชั่นเดิม (Spurious Tupes) ในการแตกรีเลชันออกมาจากรูปแบบ 4NF นั้น ถ้าทำการเชื่อมโยงรีเลชันย่อยนั้นใหม่ หากไม่มีข้อมูลที่แตกต่างไปจากรีเลชันเดิม ก็จะสามารถแตกรีเลชันนั้นได้ แต่ถ้าหากแตกเป็นรีเลชันย่อยแล้วเกิดข้อมูลไม่เหมือนกับรีเลชันเดิม ก็ไม่ควรแตกรีเลชัน และให้ถือว่ารีเลชันเดิมอยู่ใน 5NF แล้ว เอาไปใช้งานจริงๆ แค่ได้ 2-3NF ก็เกินพอแล้ว แต่ถ้าเอาไปเพื่อเรียน ยังไงก็ต้องทำให้ได้ทุก NF ครับ ปล. อาจารย์ไม่เก่ง แล้วเพื่อนๆที่เรียนล่ะครับ ไม่มีใครรู้เรื่องเลยเหรอ :wanwan017: หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: ZyZee ที่ 12 กรกฎาคม 2010, 01:01:59 แล้วตารางแบบนี้เรียกว่าอะไรหรอครับ
คน สี ผมบ๊อบ สีน้ำเงิน ผมบ๊อบ สีแดง Jane สีเขียว Jane สีเหลือง Jane สีแดง หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: sanotti ที่ 12 กรกฎาคม 2010, 01:04:24 ดูจากตารางแล้ว ไม่เห็นวัตถุประสงค์ ก็ทำ Normalize ไม่ได้เช่นกันครับ เพราะการทำ Normalize ต้องอิงวัตถุประสงค์ในการใช้งานดาต้าเบสเป็นหลัก เห็นแค่นี้ตอบไปผิดวัตถุประสงค์จะพาลโดนหักคะแนนเปล่าๆ :wanwan044:
แต่ถ้าเป็นผมจะทำประมาณ 2 ตาราง user info ISP table ลองไปแยกเองนะครับไม่น่ายาก หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: ab2f6 ที่ 12 กรกฎาคม 2010, 01:18:01 หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: ab2f6 ที่ 12 กรกฎาคม 2010, 01:24:31 ง่ายๆ ครับการทำ NF คือการลดความซ้ำซ้อนของข้อมูล โดยกระบวนการ NF นั้นมี ตั้งแต่ระดับ 1NF จนไปถึง 5NF ( ใช้งานจริงๆ คงแค่ 2-3 NF เองครับในกรณีที่ข้อมูลไม่ซับซ้อนมาก) โดยวิธีการสังเกตุง่ายๆ ครับคือ หาก talbe ไหนมีข้อมูลที่ซ้ำซ้อนอยู่แสดงว่า ต้องมีการดำเนินการ NF ในขั้นต่อไปครับ เพราะอะไร ลองนึกดูนะครับว่า หากข้อมูลใดใน table ที่ไม่มีการ NF เลย ข้อมูลที่เก็บก็จะมีความซ้ำซ้อนกันมาก (ลองดูจากโจทย์ที่ได้มานะครับ ตัวอย่างก็ จังหวัดขอนแก่น มีเยอะมากซ้ำซ้อน) หากวันใดวันหนึ่ง มีการแก้ไข เปลี่ยนแปลงสักนิด record อื่น ๆ ที่มีข้อมุลแบบเดียวกันไม่ต้องไปตามแก้กันทุก record หรือครับ จริงไหม ?? ตัวอย่างง่าย ๆ ครับ เช่น ในโจทย์ที่ท่านได้มามี สมาชิก ที่อยู่จังหวัด ข่อนแก่น อยู่ ประมาณ 8 record ( หรืออาจมีมากกว่านั้น ) สมมติว่า ต้องการแก้ไข จาก จังหวัดขอนแก่น เป็น จ.ขอนแก่น ท่านไม่ต้องตามไปแก้กันครบทุก record ตามจำนวนสมาชิกที่อยู่ จังหวัดขอนแก่น หรือครับ ( นึกออกแล้วใช่ปะคับ ) ดังนั้น คุณควรแยกออกมา โดย แยกเก็บจังหวัดออกเป็นอีก table หนึ่ง โดยเก็บเฉพาะ รหัสจังหวัด และ ชื่อจังหวัด ก็จะได้ provinceid (PK), provincename เราก็จะมีจังหวัดขอนแก่น เพียง record เดียว อ่าวแล้วจะ เชื่อมโยง และเอาไปใช้กันยังไงละ ?? ก็แบบนี้ครับ ใน table ของสมาชิกแทนที่จะเก็บเป็นชื่อจังหวัด ก็เลือกเก็บเป็นรหัสของจังหวัดแทน ( ก็จะเป็น FK ) ทีนี่ถ้าต้องการแก้ไขจาก จังหวัดขอนแก่น เป็น จ.ขอนแก่น ก็ไปแก้ที่เดียวครับ ที่ table province ทีนี้ข้อมูลสมาชิกก็จะถูกต้อง และตรงกันแล้วครับ เพราะทุกตารางที่ทำการ NF ออกมาจะมีความสัมพันธ์ของข้อมูลกัน อย่างที่หลายๆ ท่านได้อธิบายไปแล้ว 1-m , M-M อ่อ ส่วนการเลือก PK ง่ายๆ ครับ ต้องเลือกหรือกำหนด ให้ PK โดยที่ PK จะต้องไม่มีการซ้ำซ้อนกันครับ ตัวอย่างเช่น จากโจทย์ สิ่งที่ไม่ซ้ำซ้อนใน table สมาชิก ก็คือ รหัสสมาชิกครับ *PK is Primarykey คีย์หลัก ความรู้สุดยอดมาเลยครับ ความรู้แตกฉานเลยครับ หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: ab2f6 ที่ 12 กรกฎาคม 2010, 01:25:04 user(รหัสสมาชิก,ชื่อผู้ใช้,อายุ,รหัสจังหวัด,อีเมล์,รหัสisp,รหัสspd,รหัสspu) province(รหัสจังหวัด,ชื่อจังหวัด) isp(รหัสisp,ชื่อisp) spd(รหัสspd,ชื่อspd) spu(รหัสspu,ชื่อspu) ช้าไปมั้ยคับ :wanwan004: ไม่ช้าครับ ขอบคุณมากๆครับ หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: ab2f6 ที่ 12 กรกฎาคม 2010, 01:27:57 เอาง่ายๆ สั้นๆ DB Normalize ทำให้มันเป็นปกติแบบชาวบ้านเค้าคับ :P โดยแบ่งการ Normalize ได้เป็นระดับ ซึ่งถามว่าควรจะ Normalize ให้อยู่ระดับใดแล้วแต่จุดประสงค์การใช้งานครับ 1NF: ข้อมูลในแต่ละแถว,คอลัมภ์มีแค่ 1 ค่า ถ้ามองในมุม Excel ถ้าใน 1 ช่องมีข้อมูลแค่บรรทัดเดียวก็ถือเป็น 1NF แล้ว (ตามตารางที่ให้มาก็ถือว่าเป็น 1NF แล้ว) 2NF: Table 1(รหัสสมาชิก, ชื่อผู้ใช้, อายุ, จังหวัด, อีเมลล์, ISP, SPD, SPU) 3NF: Table 1(รหัสสมาชิก, ชื่อผู้ใช้, อายุ, จังหวัด, อีเมลล์, ISP, SPD, SPU) BCNF: Table 1(รหัสสมาชิก, อายุ, จังหวัด, อีเมลล์, ISP, SPD, SPU) Table 2(รหัสสมาชิก, ชื่อผู้ใช้) 4NF: Table 1(รหัสสมาชิก, อายุ, จังหวัด, อีเมลล์, ISP, SPD, SPU) Table 2(รหัสสมาชิก, ชื่อผู้ใช้) 5NF: Table 1(รหัสสมาชิก, อายุ, จังหวัด, อีเมลล์, ISP, SPD, SPU) Table 2(รหัสสมาชิก, ชื่อผู้ใช้) อ้างอิงจาก Link นี้ลองศึกษาดูนะครับ [url]http://std.kku.ac.th/5150200504/Nomalization.pdf[/url] ปล. เสริมอีกนิดนึง การเพิ่มพวกรหัสทั้งหลายเช่นรหัสสมาชิก รหัสจังหวัด รหัส ISP ไม่ใช่การ Normalize นะครับ เป็นการกำหนด Attribute ที่อยู่ตั้งแต่ step DB Design เพื่อให้โครงสร้างของ DB ดีขึ้นครับ ผิดถูกช่วยชี้แนะด้วยครับ :P ขอบคุณมากๆครับ ข้อมูลแจ่มเลยครับ ปล.ในนี้มีแต่เทพ จริงๆๆครับ ไม่ผิดหวังเลยอาศัยอยู่ที่นี่ หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: ab2f6 ที่ 12 กรกฎาคม 2010, 01:30:31 การทำ Normalization ก็คือการจัดระเบียบให้กับฐานข้อมูล เพื่อประโยชน์หลายๆอย่าง เช่นเพิ่มความเร็วในการ query (ทั้ง add edit delete) และลดความซ็ำซ้อนกันในฐานข้อมูล บางครั้งข้อมูลนิดเดียวมันมองไม่ออก ขอให้นึกถึงข้อมูลประชากรไทย สมมุติว่าไม่มีการออกแบบที่ดีเลย แล้วดันเก็บชื่อจังหวัดผิดไปหลายคน แล้วไม่เหมือนกันอีก เช่นแค่ใส่ว่า กรุงเทพฯ กรุงเทพ กทม ก็ไม่เหมือนกันแล้ว จะเกิดปัญหาขึ้นทันที จะต้องใช้เวลานานมากในการแก้ไข เลยมีคนนึงคิดระบบ NF ขึ้นมาเพื่อเป็นตัวช่วยเหลือในการออกแบบดาต้าเบส 1NF - ทุก ๆ field ในแต่ละ record จะเป็น single value นั่นคือ ในตารางหนึ่ง ๆ จะไม่มี ค่าของกลุ่ม ข้อมูลที่ซ้ำกัน (Repeating Group) 2NF - ต้องเป็น First Normal Form (1NF) และต้องมี key (บางตำรา อาจจะเรียกว่า index) ที่ทุก Non-key จะต้องขึ้นอยู่ (depends on) กับ key นี้ และมีเพียง key เดียวในหนึ่งตาราง ซึ่งเรียกว่า Primary Key การที่ทุกตาราง (Table) ต้องมี Key ก็เพราะเราต้องการให้แน่ใจว่าทุกข้อมูลใน record ต่าง ๆ สามารถค้นหาได้โดยใช้ key 3NF - ต้องเป็น Second Normal Form (2NF) และ ไม่มี Transitive dependence หรือ เป็นการขจัดแอตตริบิวที่ไม่เป็นคีย์ที่ขึ้น ( Transitive dependent ) ตรงกับแอตตริบิวอื่นที่ไม่ใช่คีย์หลักออกไป เพื่อให้แอตตริบิวที่ไม่ใช่คีย์หลักต้องขึ้นตรงกับทั้งส่วนที่เป็นคีย์หลัก และไม่ขึ้นกับแอตตริบิวอื่นที่ไม่ใช่คีย์หลัก BCNF - ต้องเป็น 3NF และไม่มี attribute อื่นในรีเลชันที่สามารถระบุค่าของ attribute ที่เป็นคีย์หลัก หรือส่วนหนึ่งส่วนใดของคีย์หลักในกรณีที่คีย์หลักเป็นคีย์ผสม 4NF - ต้องอยู่ในรูปแบบ BCNF และเป็นรีเลชันที่ไม่มีความสัมพันธ์ในการระบุค่าของ attribute แบบหลายค่า โดยที่ attribute ที่ถูกระบุค่าเหล่านี้ไม่มีความสัมพันธ์กัน (Independently Multivalued Dependency) 5NF - ต้องอยู่ในรูปแบบ 4NF และไม่มี Symmetric Constraint กล่าวคือ หากมีการแตกรีเลชันออกเป็นรีเลชันย่อย (Projection) และเมื่อทำการเชื่อมโยงรีเลชันย่อยทั้งหมด (Joint) จะไม่ก่อนให้เกิดข้อมูลใหม่ที่ไม่เหมือนรีเลชั่นเดิม (Spurious Tupes) ในการแตกรีเลชันออกมาจากรูปแบบ 4NF นั้น ถ้าทำการเชื่อมโยงรีเลชันย่อยนั้นใหม่ หากไม่มีข้อมูลที่แตกต่างไปจากรีเลชันเดิม ก็จะสามารถแตกรีเลชันนั้นได้ แต่ถ้าหากแตกเป็นรีเลชันย่อยแล้วเกิดข้อมูลไม่เหมือนกับรีเลชันเดิม ก็ไม่ควรแตกรีเลชัน และให้ถือว่ารีเลชันเดิมอยู่ใน 5NF แล้ว เอาไปใช้งานจริงๆ แค่ได้ 2-3NF ก็เกินพอแล้ว แต่ถ้าเอาไปเพื่อเรียน ยังไงก็ต้องทำให้ได้ทุก NF ครับ ปล. อาจารย์ไม่เก่ง แล้วเพื่อนๆที่เรียนล่ะครับ ไม่มีใครรู้เรื่องเลยเหรอ :wanwan017: เพื่อนหรอครับ ไม่มีใครรู้เรื่องเลย ยังไม่มีใครทำ NF ผ่านเลยครับ หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: jiw ที่ 12 กรกฎาคม 2010, 02:21:18 ง่ายๆ ครับการทำ NF คือการลดความซ้ำซ้อนของข้อมูล โดยกระบวนการ NF นั้นมี ตั้งแต่ระดับ 1NF จนไปถึง 5NF ( ใช้งานจริงๆ คงแค่ 2-3 NF เองครับในกรณีที่ข้อมูลไม่ซับซ้อนมาก) โดยวิธีการสังเกตุง่ายๆ ครับคือ หาก talbe ไหนมีข้อมูลที่ซ้ำซ้อนอยู่แสดงว่า ต้องมีการดำเนินการ NF ในขั้นต่อไปครับ เพราะอะไร ลองนึกดูนะครับว่า หากข้อมูลใดใน table ที่ไม่มีการ NF เลย ข้อมูลที่เก็บก็จะมีความซ้ำซ้อนกันมาก (ลองดูจากโจทย์ที่ได้มานะครับ ตัวอย่างก็ จังหวัดขอนแก่น มีเยอะมากซ้ำซ้อน) หากวันใดวันหนึ่ง มีการแก้ไข เปลี่ยนแปลงสักนิด record อื่น ๆ ที่มีข้อมุลแบบเดียวกันไม่ต้องไปตามแก้กันทุก record หรือครับ จริงไหม ?? ตัวอย่างง่าย ๆ ครับ เช่น ในโจทย์ที่ท่านได้มามี สมาชิก ที่อยู่จังหวัด ข่อนแก่น อยู่ ประมาณ 8 record ( หรืออาจมีมากกว่านั้น ) สมมติว่า ต้องการแก้ไข จาก จังหวัดขอนแก่น เป็น จ.ขอนแก่น ท่านไม่ต้องตามไปแก้กันครบทุก record ตามจำนวนสมาชิกที่อยู่ จังหวัดขอนแก่น หรือครับ ( นึกออกแล้วใช่ปะคับ ) ดังนั้น คุณควรแยกออกมา โดย แยกเก็บจังหวัดออกเป็นอีก table หนึ่ง โดยเก็บเฉพาะ รหัสจังหวัด และ ชื่อจังหวัด ก็จะได้ provinceid (PK), provincename เราก็จะมีจังหวัดขอนแก่น เพียง record เดียว อ่าวแล้วจะ เชื่อมโยง และเอาไปใช้กันยังไงละ ?? ก็แบบนี้ครับ ใน table ของสมาชิกแทนที่จะเก็บเป็นชื่อจังหวัด ก็เลือกเก็บเป็นรหัสของจังหวัดแทน ( ก็จะเป็น FK ) ทีนี่ถ้าต้องการแก้ไขจาก จังหวัดขอนแก่น เป็น จ.ขอนแก่น ก็ไปแก้ที่เดียวครับ ที่ table province ทีนี้ข้อมูลสมาชิกก็จะถูกต้อง และตรงกันแล้วครับ เพราะทุกตารางที่ทำการ NF ออกมาจะมีความสัมพันธ์ของข้อมูลกัน อย่างที่หลายๆ ท่านได้อธิบายไปแล้ว 1-m , M-M อ่อ ส่วนการเลือก PK ง่ายๆ ครับ ต้องเลือกหรือกำหนด ให้ PK โดยที่ PK จะต้องไม่มีการซ้ำซ้อนกันครับ ตัวอย่างเช่น จากโจทย์ สิ่งที่ไม่ซ้ำซ้อนใน table สมาชิก ก็คือ รหัสสมาชิกครับ *PK is Primarykey คีย์หลัก +1000 จขกท ยังดีครับ ของผมเรียน เรื่องนี้ เป็นภาคอังกิด แม่เจ้าเลยยยย อาจารย์ก็สอนไม่รู้เรื่อง ต้องนั่งอ่าน text เอง พระเจ้าจอร์จเลย :wanwan003: หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: GigBoT ที่ 12 กรกฎาคม 2010, 02:29:14 ง่ายๆ ครับการทำ NF คือการลดความซ้ำซ้อนของข้อมูล โดยกระบวนการ NF นั้นมี ตั้งแต่ระดับ 1NF จนไปถึง 5NF ( ใช้งานจริงๆ คงแค่ 2-3 NF เองครับในกรณีที่ข้อมูลไม่ซับซ้อนมาก) โดยวิธีการสังเกตุง่ายๆ ครับคือ หาก talbe ไหนมีข้อมูลที่ซ้ำซ้อนอยู่แสดงว่า ต้องมีการดำเนินการ NF ในขั้นต่อไปครับ เพราะอะไร ลองนึกดูนะครับว่า หากข้อมูลใดใน table ที่ไม่มีการ NF เลย ข้อมูลที่เก็บก็จะมีความซ้ำซ้อนกันมาก (ลองดูจากโจทย์ที่ได้มานะครับ ตัวอย่างก็ จังหวัดขอนแก่น มีเยอะมากซ้ำซ้อน) หากวันใดวันหนึ่ง มีการแก้ไข เปลี่ยนแปลงสักนิด record อื่น ๆ ที่มีข้อมุลแบบเดียวกันไม่ต้องไปตามแก้กันทุก record หรือครับ จริงไหม ?? ตัวอย่างง่าย ๆ ครับ เช่น ในโจทย์ที่ท่านได้มามี สมาชิก ที่อยู่จังหวัด ข่อนแก่น อยู่ ประมาณ 8 record ( หรืออาจมีมากกว่านั้น ) สมมติว่า ต้องการแก้ไข จาก จังหวัดขอนแก่น เป็น จ.ขอนแก่น ท่านไม่ต้องตามไปแก้กันครบทุก record ตามจำนวนสมาชิกที่อยู่ จังหวัดขอนแก่น หรือครับ ( นึกออกแล้วใช่ปะคับ ) ดังนั้น คุณควรแยกออกมา โดย แยกเก็บจังหวัดออกเป็นอีก table หนึ่ง โดยเก็บเฉพาะ รหัสจังหวัด และ ชื่อจังหวัด ก็จะได้ provinceid (PK), provincename เราก็จะมีจังหวัดขอนแก่น เพียง record เดียว อ่าวแล้วจะ เชื่อมโยง และเอาไปใช้กันยังไงละ ?? ก็แบบนี้ครับ ใน table ของสมาชิกแทนที่จะเก็บเป็นชื่อจังหวัด ก็เลือกเก็บเป็นรหัสของจังหวัดแทน ( ก็จะเป็น FK ) ทีนี่ถ้าต้องการแก้ไขจาก จังหวัดขอนแก่น เป็น จ.ขอนแก่น ก็ไปแก้ที่เดียวครับ ที่ table province ทีนี้ข้อมูลสมาชิกก็จะถูกต้อง และตรงกันแล้วครับ เพราะทุกตารางที่ทำการ NF ออกมาจะมีความสัมพันธ์ของข้อมูลกัน อย่างที่หลายๆ ท่านได้อธิบายไปแล้ว 1-m , M-M อ่อ ส่วนการเลือก PK ง่ายๆ ครับ ต้องเลือกหรือกำหนด ให้ PK โดยที่ PK จะต้องไม่มีการซ้ำซ้อนกันครับ ตัวอย่างเช่น จากโจทย์ สิ่งที่ไม่ซ้ำซ้อนใน table สมาชิก ก็คือ รหัสสมาชิกครับ *PK is Primarykey คีย์หลัก +1000 จขกท ยังดีครับ ของผมเรียน เรื่องนี้ เป็นภาคอังกิด แม่เจ้าเลยยยย อาจารย์ก็สอนไม่รู้เรื่อง ต้องนั่งอ่าน text เอง พระเจ้าจอร์จเลย :wanwan003: หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: chanun ที่ 12 กรกฎาคม 2010, 04:11:39 ตอนเรียนจำได้งงเหมือนกัน ตอ้งไปหาอ่านในห้องสมุด มีเพียบเลย
หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: ohmohm ที่ 14 กรกฎาคม 2010, 23:10:14 แล้วถ้าแบบนี้จะอยู่ใน normal form ไหนเอย
มีตาราง ที่มี 2 columns อันหนึ่งเก็บหมายเลขประชาชน อีกอันเก็บและหมายเลขประชาชนของคู่สมรส ถ้าควบคุมโปรแกรมไม่ดี แทนที่โยงไปคู่สมรส แล้วคู่สมรสโยงกลับมาหาตัว กลายเป็นคู่สมรสโยงไปหาคนอื่น แล้วคนอื่นโยงไปคนอื่นเรื่อยๆ ( เป็นวงเลย ) หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: capuchinotae ที่ 15 กรกฎาคม 2010, 00:02:32 ([url]http://www.isanthai.com/db.jpg[/url]) ผมไม่เข้าใจ การทำ NORMALLIZRELATION จากข้อมูลที่ผมมีเลยครับ ผมไม่เข้าใจที่อาจารย์สอนมากๆเลยครับ (เป็นหนูทดลองของอาจารย์ สอนครั้งแรกครับ) แล้วก็มีการเลือก key อีกครับ รบกวนพี่ๆช่วยแนะนำ ด้วยนะครับ ถ้างานเสร็จแล้ว ผมจะกลับมา +1 ให้ทุกคนครับ วันพุทธนี้ก็จะลองเอาไปส่งครับ ส่งทีละขั้นตอน จากรูปนะครับ เมื่อทำการ normalize แล้วมันจะได้ออกมาประมาณแบบนี้ครับ (แล้วแต่เคสนะครับ ต้องดูด้วยว่าจะให้ DB มันรองรับงานแบบไหน) [Customer] - ตารางลูกค้า โยง FK ไปหาตารางจังหวัดเพื่อที่จะลดความซ้ำซ้อนของข้อมูล -CustomerId > PK -Name -Age -ProvinceId > FK[Province] [Province] - ตารางจังหวัด -ProvinceId > PK -ProvinceName [ISP] - ตารางผู้ให้บริการ -ISPId > PK -ISPName [SPD] - ตารางดาวน์โหลดสปีด -SPDId -> PK -SPDName [SPU] - ตารางอัพโหลดสปีด -SPUId > PK -SPUName แบบที่ 1 [ISP_Details] - ตารางรายละเอียดของผู้ให้บริการว่า ลูกค้าคนใดสมัครอินเทอร์เน็ตกับผู้ให้บริการรายใด เอามาเป็นคีย์หลักคู่กัน และเชื่อมไปยังตาราง SPD & SPU การเชื่อมแบบนี้จะทำให้ ลูกค้าหนึ่งคนสามารถสมัครใช้บริการกับผู้ให้บริการแต่ละรายได้แค่แพ็คเกจเดียว -CustomerId > PK, FK[Customer] -ISPId > PK, FK[ISP] -SPDId > FK[SPD] -SPUId > FK[SPU] แบบที่ 2 [ISP_Details] - ตารางรายละเอียดของผู้ให้บริการว่า ลูกค้าคนใดสมัครอินเทอร์เน็ตกับผู้ให้บริการรายใด และเชื่อมไปยังตาราง Customer & ISP & SPD & SPU การเชื่อมแบบนี้จะทำให้ ลูกค้าหนึ่งคนสามารถสมัครใช้บริการกับผู้ให้บริการแต่ละรายได้หลายแพ็คเกจ -ISP_Detail_Id > PK -CustomerId > FK[Customer] -ISPId > FK[ISP] -SPDId > FK[SPD] -SPUId > FK[SPU] การเรียกใช้ถ้าจะให้ออกมาเหมือนในรูปก็เขียน Query ให้มัน Join กันก็แค่นั้น หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: raimai ที่ 15 กรกฎาคม 2010, 00:39:35 เรียนคาบแรก อ.คงลองภูมิละมั้งครับ ไม่มีใครเรียนครั้งเดียวแล้วทำได้หรอกครับ ขนาดเรียนทั้งเทอมยังทำผิดเลย 555 ค่อยๆพยายามทำความเข้าใจไปครับทีละขั้นทีละตอน
หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: ab2f6 ที่ 15 กรกฎาคม 2010, 00:47:50 ขอบคุณพี่ๆๆทุกท่านที่ช่วยเหลือผม
วันนี้ผมลองเอาไปส่งอาจารย์ ผมรู้สึกว่าอาจารย์จะไม่เข้าใจเหมือนที่พี่ๆๆแนะนำผมเลยครับ (สงสัยอาจารย์จะไม่เคยนำไปใช้งานจริง แค่อิงตามหนังสือ) ผลก็คือ ยังไม่ผ่านครับ แต่ไม่เป็นไรครับ เพราะผมว่าพี่ๆๆ ในไทยเสียว เทพมากๆๆครับ +1 ให้ทุกม่านครับ ปล.ใครยังไม่ได้ + บอกด้วยนะครับ เผื่อตกหล่น หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: medieval ที่ 15 กรกฎาคม 2010, 01:59:16 ขอบคุณพี่ๆๆทุกท่านที่ช่วยเหลือผม วันนี้ผมลองเอาไปส่งอาจารย์ ผมรู้สึกว่าอาจารย์จะไม่เข้าใจเหมือนที่พี่ๆๆแนะนำผมเลยครับ (สงสัยอาจารย์จะไม่เคยนำไปใช้งานจริง แค่อิงตามหนังสือ) ผลก็คือ ยังไม่ผ่านครับ แต่ไม่เป็นไรครับ เพราะผมว่าพี่ๆๆ ในไทยเสียว เทพมากๆๆครับ +1 ให้ทุกม่านครับ ปล.ใครยังไม่ได้ + บอกด้วยนะครับ เผื่อตกหล่น เด้กไทย แต่อาจารย์อิงหนังสือเยอะจริง ผมก็เป็นคนหนึ่งที่เจอ เวลาถามไม่รู้เรื่อง ต้องไปไล่อ่านเอง สอนก็สอนอ่านเอาจากหนังสือ เหอๆ ทำไมไม่บอกว่า ไปอ่านหนังสือมา จบละมานั่งอ่านให้ฟัง บ่นชักนิดหน่อย >:( หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: capuchinotae ที่ 15 กรกฎาคม 2010, 06:59:06 ขอบคุณพี่ๆๆทุกท่านที่ช่วยเหลือผม เคยเจออยู่ครับ อาจารย์สอน VB ผมต้องไปนั่งสอนเพื่อนแทนเลยอะ คือเขาอ่านให้ฟังจากหนังสือเลยอะ บ้ามากวันนี้ผมลองเอาไปส่งอาจารย์ ผมรู้สึกว่าอาจารย์จะไม่เข้าใจเหมือนที่พี่ๆๆแนะนำผมเลยครับ (สงสัยอาจารย์จะไม่เคยนำไปใช้งานจริง แค่อิงตามหนังสือ) ผลก็คือ ยังไม่ผ่านครับ แต่ไม่เป็นไรครับ เพราะผมว่าพี่ๆๆ ในไทยเสียว เทพมากๆๆครับ +1 ให้ทุกม่านครับ ปล.ใครยังไม่ได้ + บอกด้วยนะครับ เผื่อตกหล่น แล้วแถมทำข้อสอบเพื่อนผมหายอีก ผลว่ากลายเป็น F ซะงั้น งงกันเป็นแถบอะ แต่ดีนะไม่เกิดกับผม หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: SekRanger ที่ 15 กรกฎาคม 2010, 07:28:55 กำลังจะถามพอดีว่าอยู่แถวไหน นึกว่าอยู่แถวสมุทรปราการ ยินดีไปติวให้ฟรีๆ
เพราะเราน่าจะเรียนมาจากสายเดียวกัน (เนียนลดอายุตัวเอง :wanwan023:) หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: เฮียเล้ง ที่ 15 กรกฎาคม 2010, 09:51:51 เด้กไทย แต่อาจารย์อิงหนังสือเยอะจริง ผมก็เป็นคนหนึ่งที่เจอ เวลาถามไม่รู้เรื่อง ต้องไปไล่อ่านเอง สอนก็สอนอ่านเอาจากหนังสือ เหอๆ ทำไมไม่บอกว่า ไปอ่านหนังสือมา จบละมานั่งอ่านให้ฟัง บ่นชักนิดหน่อย >:( จริงๆ แล้วในต่างประเทศ อาจารย์ไม่สอนด้วยซ้ำ คือบอกหนังสือมาเล่มนึง อ่านแล้วมีไรสงสัยให้มาถาม โดยหน้าที่หลักของอาจารย์คือ ทำวิจัย นั้นเอง เค้าเีรียกว่า Research University ซึ่ง ม. ผมก็กำลังจะเป็นแบบนั้นในอีกไม่กี่ปี ผมว่าก็ดีเหมือนกันนะ ในเมื่อปกติ จารย์ ก็สอนตามหนังสืออยู่แล้ว ก็ให้เด็กไปอ่านเองเลยดีกว่า :P หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: kobkung ที่ 15 กรกฎาคม 2010, 11:18:48 หุหุ ได้ความรู้ ทำมาตั้งนานไม่เคยรู้ว่ามันเรียกว่าอะไร แต่ตัวนี้ใช้หากินมาเป็นสิบปี
ผมลืมทฤษฎีไปหมดละ คืนครูหมด เดี๋ยวอาจารย์ไม่มีสอนคนอื่น จำอย่างเดียว one to many ๆๆๆ :P ชอบอ่านตามบอร์ด ไม่เน้นทฤษฎีจนหน้ามึน ศัพท์แสงไม่ไฮโซเกินไป :wanwan019: หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: porjung ที่ 15 กรกฎาคม 2010, 11:49:50 สุดยอดเลยกระทู้นี้ เหมือนได้ขุดสมองกล้ับมาอีกครั้งนึงเลย :wanwan017: :wanwan017:
หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: Joejoe ที่ 16 กรกฎาคม 2010, 02:10:50 ใจเย็นๆ ครับ ไม่ทราบว่าคุณเจ้าของกระทู้ทำยังไงไปสงครับ ต้องดูวัตถุประสงค์ของโจทย์และคำตอบที่อาจารย์อยากได้ด้วยนะครับ
เพราะถ้าผมคิดไม่ผิดคือ อ. คงอยากให้ทำเป็น step ๆ นะครับ ตั้งแต่ 1NF - 5NF เพราะ อ. ก็คงอยากให้ นักศึกษาได้รู้ปัญหาของแต่ละระดับของ NF เพราะว่าหลังจาก ที่เราได้ทำการ NFแต่ละระดับไปแล้วพบว่าปัญหายังคงมีอยู่ ดังทฤษฏีที่ NF นั้นระบุไว้ เรา ต้องทำการ NF ในระดับต่อไปเพื่อเป็นการแก้ปัญหาให้ถูกต้อง และตรงจุดที่สุด ไม่ใชว่าทำแบบ NF ทั้งหมดแล้วไปส่งแบบไม่แสดงวิธีการ NF เป็นลำดับขั้นตอนตาม 1NF-5NF แบบนี้ ข้อมูลอาจจะถูก แต่ว่า วัตถุประสงค์ที่อาจารย์ให้ทำนั้นคือ ต้องการให้ นศ ได้รู้ปัญหาในแต่ละขั้นตอน แต่ละ NF ว่าเกิดปัญหาอะไรขี้นบ้าง และควรจะแก้ปัญหาต่อไปอย่างไร หรือไม่ คือว่านั้นคงเป็นประเด็นที่ อ. คงอยากให้ทำแบบนั้นมากกว่า ( ถ้าเจ้าของ กระทู้ทำแล้ว ก็ขอโทษด้วยนะครับ ) ตัวอย่าง เช่นว่า ตามโจทย์ นั้นคือ 1 NF แล้ว เราต้องแสดงปัญหาว่า ในระดับ 1NF นั้นมีปัญหาอะไรเกิดขึ้นบ้าง เพื่อที่จะได้ทำระดับ 2NF ต่อ โดยอ้างอิงจากทฤษฎีของแต่ละ NF ที่กำลังทำอยู่นะครับ หลังจากนั้นให้เราทำการ NF ในระดับที่ 2NF ต่อ เหมือนเดิมครับ ให้อ้างอิงกับทฤษฏี 2NF ไว้ครับ เพื่อยังคงให้เห็นปัญหาอยู่ว่าใน ระดับที่ 2 หลังจากที่เราได้ทำการ NF ไปแล้วยังมีปัญหาอะไรอยู่อีก ให้ทำแบบนี้ไปเรื่อย ๆ ครับ เหมือนเราได้โจทย์มา 1 ข้อ แต่เราแยกคำตอบออกเป็นหลายๆ คำตอบ ตาม NFครับ อย่าลืมนะครับไม่ใช่แยก Table ออกมา เหมือนเป็นผ่านการ NF มาแล้วหลายระดับแล้วไปส่ง นั้นอาจเป็นการตอบโจทย์แบบผิดวัตถุประสงค์ก็ได้ครับ อ่านโจทย์และมองคำตอบของโจทย์คร่าว ๆ แล้ววิเคราะห์เป็นขั้นเป็นตอนครับผม เพราะการเรียนกับการทำงานจริง ไม่ค่อยเหมือนกันหรอกครับ อ่อ แล้วอย่างที่ผมเคยอธิบายไปแล้วนั้น เป็นเพียงพื้นฐานความเข้าใจเบื้องต้น เพื่อที่จะนำไปคิดร่วมกับ ทฤษฏีต่างๆ ของ แต่ละระดับของ NFอีกทีครับเพราะแต่ละ NF ยังคงมีปัญหาที่เป็นเอกลักษณ์ในตัวของมันอยู่ หวังว่าคงช่วยเจ้าของกระทู้ได้นะครับ ผิดพลาดประการใดก็ขออภัยด้วยครับผม แต่ตอนนี้ผมง่วง แล้ว ไปนอนแล้วครับ :-X หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: numanuel ที่ 16 กรกฎาคม 2010, 02:26:56 ผมผ่าน data base เมื่อเทอมที่แล้ว แบบว่าไม่รู้เรื่องเลย ตอนทำโปรเจคคงต้องมาศึกษาใหม่อีกที :-X
หัวข้อ: Re: ช่วยผมเรื่อง ฐานข้อมูลด้วยครับ เรียนไม่รู้เรื่องครับ เลยทำไม่ได้ เริ่มหัวข้อโดย: picharnan ที่ 16 กรกฎาคม 2010, 04:48:27 ในการเขียนโปรแกรมทั่วไป อาจไม่ค่อยต้องคำนึงจุดนี้ครับ แต่หากวันนึง ธุรกิจมี Transaction ที่ต้องรองรับการใช้งานจำนวนมาก เป็นแสน เป็นล้าน records ถ้าไม่ทำ database ก็จะบวม และเปลือง resource ครับ อีกทั้งการ Backup ยังทำได้ช้ากว่ามาก ใช้เวลา query สูง สุดท้าย เครื่องก็จะกิน cpu และต้องเพิ่มเครื่องและอื่น ๆอีกมากมาย ขอเสริหน่อยล่ะกันนะครับ คือว่าทุกวันนี้ถ้ามีการสร้าง relation ระหว่าง table มากๆ เราก็จะต้องมีการ join table มากๆ หรือถ้าทำ sub query ก็ต้องหลายรอบ ทำให้ในการ query ทีหนึ่งต้องใช้ทรัพทยากรมาก ถ้าระบบใหญ่มากๆอาจจะใช้เวลานานมากจนอาจทำให้ user รำคาญ จะเห็นว่าถึงจะลดความซ้ำซ้อนของข้อมูลได้ ก็มีผลเสียไปถึงความเร็วนั้นเองครับ วิธีการแก้ก็คือ noSQL ครับ เป็นการ query ครั้งเดียวได้ข้อมูลมาทั้งหมด แต่ผลเสียก็มีอีกหล่ะเปลืองทรัพยากรในการเก็บข้อมูลมากกว่าแบบ Relation เสริมแค่นี้หล่ะกันครับ เผื่ออยากจะต้องการข้อดี-ข้อเสีย |