现有关系模式: 学生选课关系(学号,学生姓名,年龄,系别,选修课程号,选修课程名,成绩) 语义约束:

现有关系模式:
学生选课关系(学号,学生姓名,年龄,系别,选修课程号,选修课程名,成绩)
有如下语义约束:一个学生可以选修多门课程;一门课程可以被多个学生选修。指出此关系模式的主码,它属于第几范式?为什么?

第1个回答  2018-01-14
DATAS SEGMENT
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
main proc far ;主过程(DOS调用的远过程)
repeat1:
call decibin ;调用输入子程序
call crlf ;调用回车子程序
call binihex ;调用显示子程序
call crlf ;调用回车子程序
jmp repeat1 ;按Ctrl+Break返回DOS
ret
main endp
decibin proc near ;输入子程序
mov bx,0
newchar:
mov ah,1 ;输入一个字符
int 21h
cmp al,2dh ;判断是否为负数
je fushu ;为负跳转到fushu段
sub al,30h ;将ASCII码转换为数字
jl fushu ;输入的数字小于0时结束
cmp al,9
jg exit ;输入的数字大于9时结束
cbw ;调整扩展为16位
xchg ax,bx ;交换ax和bx的内容
mov cl,10
mul cx ;将数字乘以10
xchg ax,bx ;交换ax,bx的内容
add bx,ax ;将结果存放在bx中
jmp newchar ;继续,输入下一个字符
fushu:
neg al
cmp al,9
jg exit ;输入的数字大于9时结束
cbw ;调整扩展为16位
xchg ax,bx ;交换ax和bx的内容
mov cl,10
mul cx ;将数字乘以10
xchg ax,bx ;交换ax,bx的内容
add bx,ax ;将结果存放在bx中
jmp newchar ;继续,输入下一个字符
ret
exit:
ret
decibin endp
binihex proc near ;显示子程序
mov ch,4 ;显示字符位数4
rotate:
mov cl,4 ;移位位数4
rol bx,cl ;BX最高4位移至最低4位
mov al,bl
and al,0fh ;取最低4位
add al,30h ;转换为0-9
cmp al,39h
jle printit ;在0-9之间,显示出来
add al,7h ;大于9,转换为A-F
printit:
mov dl,al ;显示一个字符
mov ah,2
int 21h
dec ch
jnz rotate ;4个字符未显示完,继续显示
ret
binihex endp
crlf proc near
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
ret
crlf endp
CODES ENDS
END START
相似回答