问答题

【说明】
某超市的销售业务由一个销售业务管理系统进行管理,该系统每完成一次交易都需要提供顾客发票,其格式见表6所示。


对于这样一个销售业务管理系统,分别给出了以下两种关系数据库的设计(下划线表示主关键字)
设计一:
顾客Customer(顾客代码Cno,姓名name,住址address,联系电话phone)
收银员Salesman(收银员代码Sno,身份证号idno,姓名name,住址address,联系电话 phone)
商品Merchandise(商品代码Mno,商品名称Mname,价格price)
发票Invoice(发票号码Ino,交易日期Idate,顾客代码Cno,收银员代码Sno,商品代码 Mno,单价unitpfice,数量amount)
设计二:
顾客Customer(顾客代码Cno,姓名name,住址address,联系电话phone)
收银员Salesman(收银员代码Sno,身份证号idno,姓名name,住址address,联系电话 phone)
商品Memhandise(商品代码Mno,商品名称Mname,价格price)
发票Ivoice(发票号码Ino,交易日期Idate,顾客代码Cno,收银员代码Sno)
发票明细Invoicedetail(发票号码Ino,商品代码Mno,单价unitprice,数量amount)
【问题1】
设计一的关系模式Invoice最高满足第几范式为什么设计一和设计二哪个更加合理为什么

【参考答案】

设计一中Invoice最高满足第一范式。
根据题意可得出以下函数依赖:
Ino→Sno,Cno,Id......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

问答题
【程序说明】 本程序先从文件读人各考生的准考证号(设为整型数)及成绩,并将其存放在一棵检索二叉树上,二叉树结点的健值是成绩,每个结点带一链表,链表结点存放取得该成绩的考生的准考证号。然后,程序按中序遍历检索二叉树,从高分到低分输出结果,使每行输出成绩及其取得成绩的考生的准考证号。 【程序】 #include < stdio. h > typedef struet idnode int id; struct idnode * next; ldNode; typedef struct marknode I int mark; ldNode * head; struct marknode * left, * right; MarkNode; char fname [ ] = sp07.dat ; main( ) int id, mark; MarkNode * root = null; FILE * fp = fopen(fname, r ); if(!fp) printf( file%s open error, n , fname); exit(0); while (!feop(fp)) fscanf(fp, %d%d , &id, &mark); btree(&root, id, mark); fclose(fp); print(root); btree(MarkNod * * mpptr, int id, int mark) ldNode * ip; MarkNode *mp = * mpptr; if (1) if (mark==p->mark) addldNODE ( (2) , id); else if ( mark >mp -> mark) btree (&top -> left, id, mark); else btree(&mp-> right, id, mark); else Imp = ( marknode * ) malloc(sizeo (marknode) ); mp -> mark = mark; mp -> left =mp -> right = NULL; (3) addldNode(&mp -> head, id); (4) ; addldNode(ldNode * * ipp, int id) ldNode * ip = * ipp; if ( (5) )addldNode ( (6) ), id; else ip = (ldNode * )malloc(sizeof(ldNode) ); sp - > id = id; ip -> next = NULL; (7) print(MarkNode * rap) ldNode *ip, *ip0; if (mp) print ( mp -> left); printf( %6d: t ,mp -> mark); ip = mp -> head; while(ip) printf( %6d ,ip -> id); ip0 =ip; ip = ip -> next; free (ip0); printf( n ); printf( mp -> right); free(mp);