物资管理数据库中有3个关系,物资表 WZ(WZno, WZNAME, WZTYPE,WZNUM),其属性分别表示物资号,物资名,物资类型,物资库存量。供应公司表GYGS(Gno,GNAME,CITY,TEL,LXR),其属性分别表示公司编号,公司名,公司所在城市,公司电话,公司联系人。供应表GY(Gno,WZno,GYnum,GYprice,GYdate,其属性分别表示公司编号,物资号,供应数量,供应单价,供应日期。假设一种物资可由多个供应公司提供,1个供应公司可以提供多种物资,1个公司可以多次供应同一物
时间: 2023-06-08 13:07:23 浏览: 189
资。如何设计一个合适的关系模式,并保证数据的完整性和查询的高效性?
针对这个问题,一个合适的关系模式可以如下设计:
- WZ(WZno, WZNAME, WZTYPE):物资表,其中WZno为主键;
- GYGS(Gno,GNAME,CITY,TEL,LXR):供应公司表,其中Gno为主键;
- GY(Gno,WZno,GYdate,GYnum,GYprice):供应表,其中(Gno, WZno, GYdate)为联合主键。
在这个设计中,GY表中的GYnum表示的是某个供应公司在某个日期提供的物资数量,GYprice表示该供应公司对于该物资的供应单价。一个供应公司可以多次其中的GYnum和GYprice的数据随供应的变化而变化。而GYGS表和WZ表和GY表的关系是多对多的,因此采用第三张关系表来进行联系,保证数据的完整性和高效性。
为了保证数据的完整性和查询的高效性,在实现时,可以采取以下策略:
- 在WZ表中,可以通过建立唯一索引来保证物资号(WZno)的唯一性,从而避免数据出现重复。
- 对于GYGS表和GY表,可以建立外键约束,在GY表中的Gno和WZno分别引用GYGS表和WZ表中相应的属性,这样就可以确保GY表中的Gno和WZno只有GYGS表和WZ表中存在的Gno和WZno才会被插入。这样可以避免脏数据的出现。
- 对于GY表中的查询,可以采用联合索引,使得查询条件可以快速地定位到特定的供应公司和物资,从而提高查询效率。
阅读全文