HIT/课程实验/数据库系统/实验三:数据库系统开发

本文介绍了如何进行数据库系统开发,包括设计E-R图,创建MySQL数据库及表,实现插入、删除、修改和查询功能。通过ORM简化操作并讨论了事务管理和安全性。提供了实验的思考与源码链接。
摘要由CSDN通过智能技术生成


实验要求

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图如下
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"
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值