คือเวลาเขียน ER Diagram โอเค เข้าใจ เขียนได้
แต่พอจะแปลงมาเป็น query string เอ่อ....งง เลยครับ
มีใครพอจะมีตัวอย่างบ้างครับ ผมพยายามหาใน google เป็นภาษาอังกฤษแล้วก็ยังไม่ได้อยู่ดี...
สงสัยมากเลยตอนนี้ จะทำเช่นไร....
ถ้าเป็น 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 ครับ
ปล. หวังว่าผมจะไม่ปล่อยเป็ดไก่นะ
สรุปได้ชัดครับ มันเป็น concept ผมว่าไม่มีไก่หลุดครับ 555+
ส่วนเรื่องการเขียน SQL มันไม่ตายตัว อย่างตัวอย่างข้างบนนี้ ยังเขียนแบบ join table ก็ได้ ซึ่งเดี๋ยวจะมีคำถามว่าแล้วจะเขียนแบบไหนดี ในเมื่อมันทำงานได้เหมือนกัน ซึ่งอนาคตถ้ามองระดับลึกไปอีก จะเป็นเรื่องการรีด performance ด้วย เช่น บางเคส join จะทำงานช้ากว่าแบบข้างบน แต่บางเคสก็กลับกัน เลยต้องกลับมา basic สุดๆ คือ การ test run แล้วค่อยทำ optimization
มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB
อ่า ... ขอบคุณที่เสริมครับ
ขอโทษเจ้าของกระทู้ด้วย ... ผมลืมบอกว่าผมมาทาง Oracle มันไม่มี join แบบที่เป็น command
oracle ทำ join ได้ตั้งแต่ 9i แล้วครับ
เขินจัง บริษัทใช้ 8.0.3
ตรูจะบ้าาาาาาาา
ถ้าเป็น 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 ครับ
ปล. หวังว่าผมจะไม่ปล่อย
เป็ดไก่นะสรุปได้ชัดครับ มันเป็น concept ผมว่าไม่มีไก่หลุดครับ 555+
ส่วนเรื่องการเขียน SQL มันไม่ตายตัว อย่างตัวอย่างข้างบนนี้ ยังเขียนแบบ join table ก็ได้ ซึ่งเดี๋ยวจะมีคำถามว่าแล้วจะเขียนแบบไหนดี ในเมื่อมันทำงานได้เหมือนกัน ซึ่งอนาคตถ้ามองระดับลึกไปอีก จะเป็นเรื่องการรีด performance ด้วย เช่น บางเคส join จะทำงานช้ากว่าแบบข้างบน แต่บางเคสก็กลับกัน เลยต้องกลับมา basic สุดๆ คือ การ test run แล้วค่อยทำ optimization
มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB
อ่า ... ขอบคุณที่เสริมครับ
ขอโทษเจ้าของกระทู้ด้วย ... ผมลืมบอกว่าผมมาทาง Oracle มันไม่มี join แบบที่เป็น command
oracle ทำ join ได้ตั้งแต่ 9i แล้วครับ
เขินจัง บริษัทใช้ 8.0.3
ตรูจะบ้าาาาาาาา