实验要求
1. 实验目的
在熟练掌握MySQL基本命令、SQL语言以及用C语言编写MySQL操作程序的基础上,学习简单数据库系统的设计方法,包括数据库概要设计、逻辑设计。
2. 实验环境
MySQL 关系数据库管理系统、C++编译器。
本次实验可使用C,C++,JAVA,PHP或其他语言均可。
3. 实验内容
开发一个数据库系统,可以参考教材的例子。
3.1 要求
1.该系统的E-R图至少包括8个实体和7个联系(必
须有一对一联系、一对多联系、多对多联系)。
2. 在设计的关系中需要体现关系完整性约束:主键
约束、外键约束,空值约束。
3. 对几个常用的查询创建视图、并且在数据库中为
常用的属性(非主键)建立索引。
4. 该系统功能必须包括:插入、删除、连接查询、
嵌套查询、分组查询。其中插入,删除操作需体
现关系表的完整性约束,例如插入空值、重复值
时需给予提示或警告等。
5. 包含事务管理(如在程序中显示保证事务操作的
原子性)、触发器功能。
创建数据库:
1.设计数据库
传统艺能,面向实验要求编程,这次实验要求使用8个实体,包含一对多,多对多,一对一关系(yysy对于这种考察性质的实验,八个实体有点多,五六个就够了),首先设计关系,思路是设计一个作品上传系统,为了方便后面的编码,所以先按照思路写了一个txt:
作品:works
作品名:wname
作品号:wno(p)
所属作品集:cname (f:collection.cname)
作品集:collection
作品集名称:cname (p)
所属团体领导身份证号:lssn (f:leader.lssn)
创作团体:team
团体名:tname
领导身份证号:lssn (p)(f:leader.lssn)
团体领导:leader
领导身份证号:lssn (p)
领导姓名:lname (unique,lnameindex)
作者:author
作者名:aname
作者身份证号:assn (p)
作者所属团体领导身份证号:lssn (f:leader.lssn)
赞助:spons
赞助序号:sno (p)
赞助者身份证号:sssn
赞助作品号:wno (f:works.wno)
赞助金额:amount
评分:comments
评分序号:cno (p)
评论者身份证号:cssn
评分:cnum
评分作品号:wno (f:works.wno)
排行榜:rank
排名:rno
作品序号:wno (p) (f:works.wno)
其中(p)表示改项为所在表的主键,f表示外键,冒号后为<表名>.<主键名>。我们将外键约束的项所在的表称为从表,而用于约束外键的主键项所在的表称为主表。添加外键约束,首先主表必须要有显式的主键,这个比较好理解,但是对于从表来说,也必须显式的定义主键(从表定义的主键可以不是从表中添加外键约束的项),这里需要注意。
e-r图如下
2.创建数据库及各种表
这里使用ORM来创建,对每一种table创建一个类:
部分类如下
"""
作品集:collection
作品集名称:cname (p)
所属团体领导身份证号:lssn (f:leader.lssn)
"""
class collection(BASE):
__tablename__='COLLECTION'
cname = Column(String(10), primary_key=True)
lssn = Column(String(18), ForeignKey("LEADER.lssn"