คำถามติดแท็ก referential-integrity

30
มีอะไรผิดปกติกับกุญแจต่างประเทศ?
ฉันจำได้ว่าเคยได้ยินJoel Spolskyพูดถึงในพอดคาสต์ 014ว่าเขาแทบจะไม่เคยใช้กุญแจต่างประเทศ (ถ้าฉันจำได้ถูกต้อง) อย่างไรก็ตามสำหรับฉันแล้วพวกเขาดูเหมือนจะสำคัญมากที่จะหลีกเลี่ยงการทำซ้ำและปัญหาความถูกต้องของข้อมูลในฐานข้อมูลของคุณ ผู้คนมีเหตุผลที่ชัดเจนว่าทำไม (เพื่อหลีกเลี่ยงการสนทนาในแนวที่มีหลักการสแต็คล้น)? แก้ไข: "ฉันยังไม่มีเหตุผลในการสร้างคีย์ต่างประเทศดังนั้นนี่อาจเป็นเหตุผลแรกที่ฉันตั้งค่าจริง"

4
สร้างข้อ จำกัด ที่ไม่ซ้ำกับคอลัมน์ null
ฉันมีตารางที่มีเค้าโครงนี้: CREATE TABLE Favorites ( FavoriteId uuid NOT NULL PRIMARY KEY, UserId uuid NOT NULL, RecipeId uuid NOT NULL, MenuId uuid ) ฉันต้องการสร้างข้อ จำกัด ที่ไม่ซ้ำแบบนี้: ALTER TABLE Favorites ADD CONSTRAINT Favorites_UniqueFavorite UNIQUE(UserId, MenuId, RecipeId); แต่นี้จะช่วยให้หลายแถวด้วยเหมือนกันถ้า(UserId, RecipeId) MenuId IS NULLผมต้องการที่จะช่วยให้NULLในMenuIdการจัดเก็บที่ชื่นชอบที่ไม่มีเมนูที่เกี่ยวข้อง แต่ฉันเพียงต้องการมากที่สุดคนหนึ่งของแถวเหล่านี้ต่อผู้ใช้ / คู่สูตร ความคิดที่ฉันมีคือ: ใช้ UUID ที่กำหนดค่าตายตัวบางอย่าง (เช่นศูนย์ทั้งหมด) แทนค่า Null อย่างไรก็ตามMenuIdมีข้อ …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.