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