เกี่ยวกับ SQL (คอมพิวเตอร์ / ฐานข้อมูล):
เมื่อเรามีสองฟิลด์ขึ้นไปในตารางที่ระบุระเบียนโดยไม่ซ้ำกันวิธีที่เหมาะสมในการโทรหาพวกเขาคืออะไร? แป้นผสมหรือแป้นผสม?
ฉันเคยเห็นในเว็บทั้งสองใช้ดังนั้นฉันไม่แน่ใจจริงๆ
เกี่ยวกับ SQL (คอมพิวเตอร์ / ฐานข้อมูล):
เมื่อเรามีสองฟิลด์ขึ้นไปในตารางที่ระบุระเบียนโดยไม่ซ้ำกันวิธีที่เหมาะสมในการโทรหาพวกเขาคืออะไร? แป้นผสมหรือแป้นผสม?
ฉันเคยเห็นในเว็บทั้งสองใช้ดังนั้นฉันไม่แน่ใจจริงๆ
คำตอบ:
ทั้งคีย์ผสมและคีย์ผสมอธิบายคีย์ตัวเลือกที่มีมากกว่าหนึ่งแอตทริบิวต์ ตามพจนานุกรมฐานข้อมูลเชิงสัมพันธ์ (CJDate) พวกเขาหมายถึงสิ่งเดียวกัน
ในการสร้างแบบจำลอง ER คำว่า "คีย์ผสม" ยังมีความหมายที่เฉพาะเจาะจงมากขึ้น มันหมายถึงกุญแจที่มีองค์ประกอบที่เป็นองค์ประกอบการอ้างอิงถึงคีย์ในหน่วยงานอื่น ๆ - เช่นคีย์ผสมในรูปแบบความสัมพันธ์ที่ระบุ เพื่อจุดประสงค์ส่วนใหญ่นี่ไม่ใช่แนวคิดที่มีประโยชน์หรือมีความสำคัญเป็นพิเศษดังนั้นจึงมักจะถือว่าคำว่าคอมโพสิต / คำประสมเป็นคำที่ใช้แทนกันได้ อาจเป็นการดีที่สุดที่จะยึด "คีย์ผสม" ยกเว้นว่าคุณอ้างอิงถึงแนวคิดการสร้างแบบจำลอง ER ของคีย์ผสม
ฉันยังไม่แน่ใจว่าทำไมถึงไม่http://en.wikipedia.org/wiki/Compound_key มันชัดเจนมากรัฐ (และถูกต้อง):
ในการออกแบบฐานข้อมูลคีย์ผสมเป็นกุญแจสำคัญที่ประกอบด้วย 2 คุณลักษณะขึ้นไปที่ระบุเหตุการณ์ที่เกิดขึ้นโดยไม่ซ้ำกัน แต่ละแอตทริบิวต์ที่ประกอบเป็นคีย์ผสมนั้นเป็นคีย์อย่างง่ายในสิทธิ์ของตนเอง
มักจะสับสนกับคีย์ผสมซึ่งแม้ว่าจะเป็นคีย์ที่ประกอบด้วย 2 แอตทริบิวต์ขึ้นไปที่ระบุการเกิดเอนทิตี้ของอย่างน้อยหนึ่งแอ็ตทริบิวต์ที่ประกอบขึ้นเป็นคีย์คอมโพสิตนั้นไม่ใช่คีย์แบบง่ายในสิทธิ์ของตนเอง
คีย์ผสมประกอบด้วยองค์ประกอบที่อาจเป็นหรือไม่เป็นคีย์ต่างประเทศ ตัวอย่าง: ในตารางรายละเอียดธุรกรรมคีย์คือ (TransactionId, ItemNumber) รายละเอียดการทำธุรกรรมเป็น subentity ของการทำธุรกรรม TransactionId เป็นคีย์ต่างประเทศอ้างอิงตารางธุรกรรม ItemNumber ไม่ใช่กุญแจในตัวของมันเอง มันระบุเฉพาะรายการภายในบริบทของการทำธุรกรรมเดียว
คีย์ผสมคือกุญแจโดยส่วนใดส่วนหนึ่งของคีย์คือคีย์ต่างประเทศ ตัวอย่าง: ในระบบการจองโรงแรมการจองมีคีย์ผสม (GuestId, HotelId, ArrivalDate) GuestId ระบุแขกและอ้างอิงถึงตารางผู้เยี่ยมชม HotelId ระบุโรงแรมและอ้างอิงตารางโรงแรม ArrivalDate ระบุวันที่ อาจมีหรือไม่มีตารางวันที่ซึ่งอ้างอิง แต่จะระบุเอนทิตี (วันที่) ด้วยวิธีใดวิธีหนึ่ง
สิ่งที่ควรทราบอีกอย่างคือ factoid: คีย์อย่างง่ายคือคีย์ที่สร้างขึ้นจากหนึ่งคอลัมน์ในขณะที่คอมโพสิตคีย์ประกอบด้วยสองคอลัมน์ขึ้นไป
ในภาษาอังกฤษมันคือ "คีย์ผสม" ตัวอย่างเช่นลองดูที่เว็บไซต์ MSDN (การค้นหาใด ๆ ที่มี "คีย์ผสม sql" จะทำ)
http://www.google.com/search?q=sql+composite+key+site:msdn.microsoft.com
สมมติว่าคำถามเกี่ยวกับฐานข้อมูลเชิงสัมพันธ์ฉันค้นหาคำจำกัดความ "เป็นกลาง" ในWikipedia :
คีย์ผสมเป็นคีย์ที่ประกอบด้วยสองแอตทริบิวต์ขึ้นไปภายในตารางที่ (รวมกัน) ระบุระเบียนโดยไม่ซ้ำกัน
คีย์ผสมประกอบด้วยมากกว่าหนึ่งแอตทริบิวต์เพื่อระบุเหตุการณ์ที่ไม่ซ้ำกัน สิ่งนี้แตกต่างจากคีย์ผสมในแอตทริบิวต์หนึ่งตัวขึ้นไปซึ่งประกอบขึ้นเป็นคีย์ไม่ใช่คีย์อย่างง่ายในสิทธิ์ของตนเอง
ตัวอย่างเช่นคุณมีฐานข้อมูลที่เก็บคอลเลกชันซีดีของคุณ เอนทิตีอย่างใดอย่างหนึ่งเรียกว่าแทร็กซึ่งเก็บรายละเอียดของแทร็กบนซีดี นี่คือคีย์ผสมของชื่อซีดีหมายเลขแทร็ก
ฟังดูแล้วเหมือนกับว่าคีย์คอมโพสิตคือเซ็ตเซ็ตที่มีคีย์ผสม หากเรายอมรับว่าคีย์ผสมถูกสร้างขึ้นจากแอตทริบิวต์มากกว่าหนึ่งรายการ (ไม่ว่าจะเป็นชนิดใด) และคีย์ผสมจะทำจากคีย์แบบง่ายมากกว่าหนึ่งคีย์ คีย์ผสมคือคีย์ผสมชนิดหนึ่งที่มีความหมายเฉพาะมากกว่า แต่คีย์ "คอมโพสิต" นั้นเหมาะสมที่จะใช้เสมอ