คือเวลาเขียน ER Diagram โอเค เข้าใจ เขียนได้ แต่พอจะแปลงมาเป็น query string เอ่อ....งง เลยครับ มีใครพอจะมีตัวอย่างบ้างครับ ผมพยายามหาใน google เป็นภาษาอังกฤษแล้วก็ยังไม่ได้อยู่ดี... สงสัยมากเลยตอนนี้ จะทำเช่นไร....
ถ้าเป็น PaPaSEK Wed, 12/09/2012 - 09:02 ถ้าเป็น SQL ความสัมพันธ์ที่คุณกล่าวถึงมันเป็นความสัมพันธ์เชิง concept ครับ เวลาเขียน SQL ก็ไม่จำเป็นต้องใช้ operator อะไรพิเศษ มันอยู่ที่การใช้ constraint ในการควบคุมข้อมูลที่เข้ามาไม่ให้ซ้ำกันมากกว่า เช่น [table company] 1:M [table employee] ที่ table company ตั้ง company.companycode เป็น PK เพื่อให้ companycode ไม่ซ้ำกันใน table ที่ table employee ตั้ง employee.companycode + employee.employeecode เป็น UK เพื่อให้ companycode + employeecode จับคู่กันได้อย่างละครั้ง (เพราะต่างบริษัทอาจมี employeecode เหมือนกัน) เวลาเขียน SQL SELECT * FROM company, employee WHERE company.companycode=employee.companycode ก็เขียนธรรมดาๆ แบบนี้เองครับ มันก็ออกเป็น 1:M แต่ถ้าเราไม่คุมข้อมูลที่จะถูก INSERT เข้ามาใน table แล้วปล่อยให้ข้อมูลมันซ้ำซ้อน เขียนให้ตายก็ไม่ตรง concept ครับ ปล. หวังว่าผมจะไม่ปล่อยเป็ดไก่นะ Log in or register to post comments สรุปได้ชัดครับ มันเป็น EThaiZone Wed, 12/09/2012 - 10:25 In reply to ถ้าเป็น by PaPaSEK สรุปได้ชัดครับ มันเป็น concept ผมว่าไม่มีไก่หลุดครับ 555+ ส่วนเรื่องการเขียน SQL มันไม่ตายตัว อย่างตัวอย่างข้างบนนี้ ยังเขียนแบบ join table ก็ได้ ซึ่งเดี๋ยวจะมีคำถามว่าแล้วจะเขียนแบบไหนดี ในเมื่อมันทำงานได้เหมือนกัน ซึ่งอนาคตถ้ามองระดับลึกไปอีก จะเป็นเรื่องการรีด performance ด้วย เช่น บางเคส join จะทำงานช้ากว่าแบบข้างบน แต่บางเคสก็กลับกัน เลยต้องกลับมา basic สุดๆ คือ การ test run แล้วค่อยทำ optimization Log in or register to post comments อ่า ... PaPaSEK Wed, 12/09/2012 - 10:48 In reply to สรุปได้ชัดครับ มันเป็น by EThaiZone อ่า ... ขอบคุณที่เสริมครับ ขอโทษเจ้าของกระทู้ด้วย ... ผมลืมบอกว่าผมมาทาง Oracle มันไม่มี join แบบที่เป็น command Log in or register to post comments oracle ทำ join ได้ตั้งแต่ 9i saknarak Fri, 14/09/2012 - 08:15 In reply to อ่า ... by PaPaSEK oracle ทำ join ได้ตั้งแต่ 9i แล้วครับ Log in or register to post comments เขินจัง บริษัทใช้ PaPaSEK Fri, 14/09/2012 - 10:27 In reply to oracle ทำ join ได้ตั้งแต่ 9i by saknarak เขินจัง บริษัทใช้ 8.0.3 ตรูจะบ้าาาาาาาา Log in or register to post comments
ถ้าเป็น PaPaSEK Wed, 12/09/2012 - 09:02 ถ้าเป็น SQL ความสัมพันธ์ที่คุณกล่าวถึงมันเป็นความสัมพันธ์เชิง concept ครับ เวลาเขียน SQL ก็ไม่จำเป็นต้องใช้ operator อะไรพิเศษ มันอยู่ที่การใช้ constraint ในการควบคุมข้อมูลที่เข้ามาไม่ให้ซ้ำกันมากกว่า เช่น [table company] 1:M [table employee] ที่ table company ตั้ง company.companycode เป็น PK เพื่อให้ companycode ไม่ซ้ำกันใน table ที่ table employee ตั้ง employee.companycode + employee.employeecode เป็น UK เพื่อให้ companycode + employeecode จับคู่กันได้อย่างละครั้ง (เพราะต่างบริษัทอาจมี employeecode เหมือนกัน) เวลาเขียน SQL SELECT * FROM company, employee WHERE company.companycode=employee.companycode ก็เขียนธรรมดาๆ แบบนี้เองครับ มันก็ออกเป็น 1:M แต่ถ้าเราไม่คุมข้อมูลที่จะถูก INSERT เข้ามาใน table แล้วปล่อยให้ข้อมูลมันซ้ำซ้อน เขียนให้ตายก็ไม่ตรง concept ครับ ปล. หวังว่าผมจะไม่ปล่อยเป็ดไก่นะ Log in or register to post comments
สรุปได้ชัดครับ มันเป็น EThaiZone Wed, 12/09/2012 - 10:25 In reply to ถ้าเป็น by PaPaSEK สรุปได้ชัดครับ มันเป็น concept ผมว่าไม่มีไก่หลุดครับ 555+ ส่วนเรื่องการเขียน SQL มันไม่ตายตัว อย่างตัวอย่างข้างบนนี้ ยังเขียนแบบ join table ก็ได้ ซึ่งเดี๋ยวจะมีคำถามว่าแล้วจะเขียนแบบไหนดี ในเมื่อมันทำงานได้เหมือนกัน ซึ่งอนาคตถ้ามองระดับลึกไปอีก จะเป็นเรื่องการรีด performance ด้วย เช่น บางเคส join จะทำงานช้ากว่าแบบข้างบน แต่บางเคสก็กลับกัน เลยต้องกลับมา basic สุดๆ คือ การ test run แล้วค่อยทำ optimization Log in or register to post comments
อ่า ... PaPaSEK Wed, 12/09/2012 - 10:48 In reply to สรุปได้ชัดครับ มันเป็น by EThaiZone อ่า ... ขอบคุณที่เสริมครับ ขอโทษเจ้าของกระทู้ด้วย ... ผมลืมบอกว่าผมมาทาง Oracle มันไม่มี join แบบที่เป็น command Log in or register to post comments
oracle ทำ join ได้ตั้งแต่ 9i saknarak Fri, 14/09/2012 - 08:15 In reply to อ่า ... by PaPaSEK oracle ทำ join ได้ตั้งแต่ 9i แล้วครับ Log in or register to post comments
เขินจัง บริษัทใช้ PaPaSEK Fri, 14/09/2012 - 10:27 In reply to oracle ทำ join ได้ตั้งแต่ 9i by saknarak เขินจัง บริษัทใช้ 8.0.3 ตรูจะบ้าาาาาาาา Log in or register to post comments
ถ้าเป็น
PaPaSEK Wed, 12/09/2012 - 09:02
ถ้าเป็น SQL
ความสัมพันธ์ที่คุณกล่าวถึงมันเป็นความสัมพันธ์เชิง concept ครับ เวลาเขียน SQL ก็ไม่จำเป็นต้องใช้ operator อะไรพิเศษ มันอยู่ที่การใช้ constraint ในการควบคุมข้อมูลที่เข้ามาไม่ให้ซ้ำกันมากกว่า
เช่น [table company] 1:M [table employee]
ที่ table company ตั้ง company.companycode เป็น PK เพื่อให้ companycode ไม่ซ้ำกันใน table
ที่ table employee ตั้ง employee.companycode + employee.employeecode เป็น UK เพื่อให้ companycode + employeecode จับคู่กันได้อย่างละครั้ง (เพราะต่างบริษัทอาจมี employeecode เหมือนกัน)
เวลาเขียน SQL
SELECT * FROM company, employee WHERE company.companycode=employee.companycode
ก็เขียนธรรมดาๆ แบบนี้เองครับ มันก็ออกเป็น 1:M
แต่ถ้าเราไม่คุมข้อมูลที่จะถูก INSERT เข้ามาใน table แล้วปล่อยให้ข้อมูลมันซ้ำซ้อน เขียนให้ตายก็ไม่ตรง concept ครับ
ปล. หวังว่าผมจะไม่ปล่อย
เป็ดไก่นะสรุปได้ชัดครับ มันเป็น
EThaiZone Wed, 12/09/2012 - 10:25
In reply to ถ้าเป็น by PaPaSEK
สรุปได้ชัดครับ มันเป็น concept ผมว่าไม่มีไก่หลุดครับ 555+
ส่วนเรื่องการเขียน SQL มันไม่ตายตัว อย่างตัวอย่างข้างบนนี้ ยังเขียนแบบ join table ก็ได้ ซึ่งเดี๋ยวจะมีคำถามว่าแล้วจะเขียนแบบไหนดี ในเมื่อมันทำงานได้เหมือนกัน ซึ่งอนาคตถ้ามองระดับลึกไปอีก จะเป็นเรื่องการรีด performance ด้วย เช่น บางเคส join จะทำงานช้ากว่าแบบข้างบน แต่บางเคสก็กลับกัน เลยต้องกลับมา basic สุดๆ คือ การ test run แล้วค่อยทำ optimization
อ่า ...
PaPaSEK Wed, 12/09/2012 - 10:48
In reply to สรุปได้ชัดครับ มันเป็น by EThaiZone
อ่า ... ขอบคุณที่เสริมครับ
ขอโทษเจ้าของกระทู้ด้วย ... ผมลืมบอกว่าผมมาทาง Oracle มันไม่มี join แบบที่เป็น command
oracle ทำ join ได้ตั้งแต่ 9i
saknarak Fri, 14/09/2012 - 08:15
In reply to อ่า ... by PaPaSEK
oracle ทำ join ได้ตั้งแต่ 9i แล้วครับ
เขินจัง บริษัทใช้
PaPaSEK Fri, 14/09/2012 - 10:27
In reply to oracle ทำ join ได้ตั้งแต่ 9i by saknarak
เขินจัง บริษัทใช้ 8.0.3
ตรูจะบ้าาาาาาาา