某個屬性可以既是主碼又是外碼嗎?
首先明確幾個定義:碼,主碼,外碼。
碼:唯一標識實體的屬性集。
主碼:多個候選碼中選擇其中一個為主碼。
外碼:屬性或屬性組X不是關系模式R的碼(既不是主碼也不是候選碼),但X是另一個關系模式的碼,則稱X是R的外部碼,也稱外碼。
看外碼定義,有兩個要求,一是不能是本關系的碼,還必須是另一個關系的碼。
回到開頭的碼的定義,就知道了,外碼不能是碼,否則兩個關系模式就成一個關系模式了,沒有分開的必要了。這就是問題答案了。
但是,外碼可以為主屬性!即,可為主碼的部分屬性集。這點要注意!當然此時的外碼不能為空。
到這里還不懂的話,多讀幾遍碼、主碼、主屬性、非主屬性、外碼等概念。
我用手機打的,排版不是很好,也就不舉例了。雖然這么多年過去了,但也希望能幫到你和其他人。
個人理解,僅供參考。
sno是學生表中的主碼,cno是課程表中的主碼,sc表中sno是參照了student表中的sno所以是外碼,同理sc表中的cno參照了course表中cno也是外碼,但是sc表中的主碼是(sno,cno)的組合,所以一個屬性可以既是主碼也是外碼。
課本上的定義沒有錯
其實,這個問題下面的己水丹答主以及說的很好了。
假設有3個關系模式。加粗斜體字是它們的碼(編輯不出下劃線)
學生(學號,姓名)
課程(課程號,課程名)
選修(學號,課程名)
對于“選修”這個關系模式來說,“學號”這個屬性不是它的主碼(它的主碼是學號,課程名),但“學號”屬性卻是“學生”這個關系模式的主碼。所以說”學號“屬性是“選修”這個關系模式的外碼。
同理,“課程名”屬性不是“選修”的主碼,但卻是“課程”的主碼,所以它是“選修”的外碼。
總結一下,選修關系的外碼是:“學號”和“課程名”。它的主碼是“學號,課程名”。注意:主碼是兩個屬性合在一起,整體作主碼。而外碼是2個屬性分開的。
所以,課本上的定義其實沒有錯,而且必須那么定義(一個關系模式的主碼不能同時也是外碼)。因為如果關系模式R的主碼也是外碼的話,外碼是另一個關系的主碼,這就說明存在一個關系它的主碼和R的一模一樣。這種情況2個關系是可以合并的。所以課本才要特別說明主碼不能做外碼。
你可以自己用SQL語句去試一下,實踐與理論相結合才是正道。
是主鍵與外鍵吧,為什么不可以?自己試一下不就知道了嗎?
天龍八部中各門派分別是什么屬性的攻擊啊?
武當:攻擊主屬性是玄和冰攻擊。
明教:攻擊主屬性為火攻擊。
少林:攻擊主屬性為玄攻擊。
天山:攻擊主屬性為冰攻擊。
丐幫:攻擊主屬性為毒和火攻擊。
天龍:攻擊主屬性為毒、火、冰、玄攻擊。
峨嵋:攻擊主屬性為冰和玄攻擊。
星宿:攻擊主屬性為毒攻擊。
逍遙:攻擊主屬性為火和毒攻擊。
擴展資料
各門派定位:
1、峨眉
治療,遠程,峨眉擁有非常特色的治療輔助型技能,技能包含單體治療,群體治療,還擁有游戲中唯一的無敵技能。
2、丐幫
輸出,近戰,丐幫門派技能非常全面,有單體攻擊技能,群體技能,有加速技能,控制技能,還有回血技能。
3、天山
刺殺,暴擊,天山是近戰刺客型的職業,控制技能和單體爆發技能非常的出色,還擁有隱身的技能。是游戲中PK能力最強的門派。
4、逍遙
遠程,輸出,逍遙是輸出能力最高的職業,單體攻擊能力非常的出色,還擁有游戲中唯一的瞬移技能。
