精华内容
下载资源
问答
  • 图书管理数据库系统

    万次阅读 多人点赞 2020-01-29 19:22:44
    发本文的原因:本文是一个很经典的图书管理系统设计,大学本科实验,用...该实验设计开发一个简单的图书管理数据库系统,包括图书馆内书籍的信息、学校在校师生的信息以及师生的借阅信息。此系统用户面向图书管理员...

    发本文的原因:本文是一个很经典的图书管理系统设计,大学本科实验,用例图,流程图真香!包含全部设计架构和源代码 ,可直接使用。

    链接:https://pan.baidu.com/s/16Wda96TQ_4MWHj5cXNhZaA 
    提取码:ug6z

    1  系统简介

    该实验设计开发一个简单的图书管理数据库系统,包括图书馆内书籍的信息、学校在校师生的信息以及师生的借阅信息。此系统用户面向图书管理员和借阅读者,图书馆管理员可以完成图书、读者、图书类型、学科类型、读者类型等基本信息的增加、删除和修改,可以制定借阅规则;读者可以进行图书的借阅、续借、归还、预约的确认等操作。

    系统开发技术及工具:Java JSP HTML Oracle数据库 tomcat服务器 Windows10系统  PC机

    2  系统分析

    2.1 功能模块简介

     

    2.2 功能需求描述

    • 借阅功能:

    图书出借时考虑三个问题:

    1. 读者是否因为超期、罚款等情况被关闭了借阅权限;
    2. 读者是否已经借满其限额。
    3. 该书是否不在库中;

    如果不存在以上情况,则可以出借。

    • 预约功能:

    读者想借的书如果不在库中(已经被出借),读者可以预约该图书,当该图书被归还时系统给读者发送邮件,提醒他来借阅,此时其他读者也可以借阅该书。

    • 续借功能:

    读者还书的时候可以续借该图书,续借的过程包括先执行还书操作,再执行借阅操作。

    • 发送催还邮件:

    管理员可以发送邮件提醒读者到期还书。

    • 读者管理功能:

    对读者信息进行查看、添加、修改、删除。将读者分为不同类别,赋以不同权限。

    • 系统管理功能:

    对管理员的登录账号、密码进行添加、修改、删除。

    • 借阅规则管理功能:

    对图书借阅规则进行查看、添加、修改、删除。

    2.3 系统用例图

     

    3 系统数据库设计

    3.1 系统概念模型设计

    数据库需要描述的数据信息包括以下几种:

    (1)读者信息

    (2)书籍信息

    (3)管理员信息

    (4)藏书分类信息

    (5)图书学科分类信息

    (6)读者分类信息

    (7)读者与书籍之间的关系(借阅关系E-R图)

    (8) 读者类型与书籍类型之间的关系(规则关系E-R图)

    这些数据项之间的关系可以用下列E-R图表示:

     

    3.2 数据库详细设计

    本系统共设计9个表、6个序列、4个存储过程、3个函数、4个触发器。

    针对一般图书管理信息系统的需求,通过对图书管理工作过程的内容和数据流程分析,设计如下面所示的9个数据表

    1. 读者信息

    属性:读者编号,读者姓名,联系电话,邮箱地址,所在系,权限状况,读者类型,备注

    主键:读者编号

    2.书籍信息

    属性:图书编号,ISBN,书名,作者,出版社,出版日期,简介,封面图片,价格,学科类型,藏书类型

    主键:图书编号

    3.管理员信息

    属性:编号,账号,密码

    主键:编号

    4)读者类型

    属性:编号,类型,说明

    主键:编号

    5)藏书类型

    属性:编号,类型,说明

    主键:编号

    6)学科类型

    属性:编号,类型,说明

    主键:编号

    7)借阅信息

    属性:图书编号,读者编号,借阅日期,应还日期

    主键:图书编号,读者编号

    8)预约信息

    属性:图书编号,读者编号,预约日期

    主键:图书编号,读者编号

    9)借阅规则

    属性:图书类型,读者类型,期限,册数,续借次数,逾期罚款

    主键:图书类型,读者类型

    6个序列:

    读者编号、图书编号、读者类型编号、藏书类型编号、学科编号、管理员编号

    4个存储过程:

      • 检查借阅是否超期的存储过程;
      • 判断读者可否进行借阅的存储过程;
      • 计算超期罚款的存储过程;
      • 将超期未还的读者借阅权限关闭的存储过程;

    4个函数:

      • 计算图书应归还日期的函数;
      • 计算读者可借阅图书册书的函数;
      • 计算读者已经借阅某类型图书的册数的函数;
      • 计算读者应交欠费的函数。

    4个触发器:

      • 删除藏书类型的触发器;
      • 删除读者类型的触发器;
      • 删除图书的触发器;
      • 删除读者的触发器。

     

    3.3 表设计

    1、数据库表逻辑结构设计。

    表1 读者表(reader)

     

    列名

    类型

    长度

    约束

    备注

    readerid

    number

    11

    主键

    读者编号

    name

    varchar2

    10

    非空

    读者姓名

    telephone

    varchar2

    15

     

    联系电话

    email

    varchar2

    30

     

    邮箱地址

    dept

    varchar2

    20

     

    所在院系

    right

    number

    1

    取值为0或1

    借阅权限

    readertype

    number

    11

    外键

    读者类型

    demo

    varchar2

    1000

     

    说明

    2 图书表(book)

     

    列名

    类型

    长度

    约束

    备注

    bookid

    number

    11

    主键

    书籍编号

    bookname

    varchar2

    20

    非空

    书籍名称

    author1

    varchar2

    20

    非空

    书籍作者

    author2

    varchar2

    20

     

    书籍作者

    author3

    varchar2

    20

     

    书籍作者

    pubdate

    date

     

     

    出版日期

    publish

    varchar2

    30

     

    出版社

    photo

    varchar2

    100

     

    图片地址

    abstract

    varchar2

    4000

     

    内容简介

    Price

    number

    7,2

    非空

    价格

    ISBN

    varchar2

    17

    非空

    书籍ISBN码

    bookclass

    number

    11

    外键

    学科类型

    booktype

    number

    11

    外键

    藏书类型

     

    表3 管理员用户表(admin)

    列名

    类型

    长度

    约束

    备注

    Id

    number

    11

    主键

    管理员编号

    username

    varchar2

    10

    非空

    管理员帐号

    password

    varchar2

    11

    非空

    帐号密码

    4 读者类型(reader_type)

    列名

    类型

    长度

    约束

    备注

    typeid

    number

    11

    主键

    类型编号

    typename

    varchar2

    20

    非空

    类型名称

    demo

    varchar2

    100

     

    说明

    5 藏书类型表(book_type)

    列名

    类型

    长度

    约束

    备注

    typeid

    number

    11

    主键

    类型编号

    typename

    varchar2

    20

    非空

    类型名称

    demo

     varchar2

    100

     

    说明

    6 学科类型表(book_class)

    列名

    类型

    长度

    约束

    备注

    classid

    number

    11

    主键

    类型编号

    classname

    varchar2

    20

    非空

    类型名称

    demo

     varchar2

    100

     

    说明

     

    表7 借阅表(borrow)

    列名

    类型

    长度

    约束

    备注

    readerid

    number

    11

    联合主键,外键

    读者编号

    bookid

    number

    11

    联合主键,外键

    图书编号

    borrowdate

    date

     

     

    出借日期

    due

    date

     

     

    应还日期

    8 预约表(preconcert)

    列名

    类型

    长度

    约束

    备注

    readerid

    number

    11

    联合主键,外键

    读者编号

    bookid

    number

    11

    联合主键,外键

    图书编号

    predate

    date

     

     

    预约日期

    9 规则表(rule)

    列名

    类型

    长度

    约束

    备注

    booktype

    number

    11

    联合主键,外键

    藏书类型号

    readertype

    number

    11

    联合主键,外键

    读者类型号

    days

    number

    5

    非空

    期限(天)

    num

    number

    5

    非空

    册数(本)

    renew

    number

    5

    非空

    续借次数(次)

    overtime

    number

    5,2

    非空

    逾期处罚(元/册/天)

     

     

    2、创建数据库表的脚本。

    (1)创建BOOK_ClASS

    create table book_class(

    classid number(11) primary key,

    classname varchar2(20) not null,

    demo varchar2(100) 

    );

    (2)创建admin

    create table admin(

    id number(11) primary key,

    username varchar2(10) not null,

    password varchar2(11) not null

    );

    (3)创建reader_type

    create table reader_type(

    typeid number(11) primary key,

    typename varchar2(20) not null,

    demo varchar2(100)

    );

    (4)创建reader

    create table reader(

    readerid number(11) primary key,

    name varchar2(10) not null,

    telephone varchar2(15),

    email varchar2(30),

    dept varchar2(20),

    right number(1) check(right=0 or right=1),

    readertype number(11) references reader_type(typeid),

    demo varchar2(1000)

    );

    (5)创建book_type

    create table book_type(

    typeid number(11) primary key,

    typename varchar2(20) not null,

    demo varchar2(100)

    );

    (6)创建book

    create table book(

    bookid number(11) primary key,

    bookname varchar2(20) not null,

    author1 varchar2(20) not null,

    author2 varchar2(20),

    author3 varchar2(20),

    pubdate date,

    publish varchar2(30),

    photo varchar2(100),

    abstract varchar2(4000),

    price number(7,2) not null,

    isbn varchar2(17) not null,

    bookclass number(11) references book_class(classid),

    booktype number(11) references book_type(typeid)

    );

    (7)创建borrow

    create table borrow(

    readerid number(11),

    bookid number(11),

    borrowdate date,

    due date,

    primary key(readerid,bookid),

    foreign key (readerid) references reader(readerid),

    foreign key (bookid) references book(bookid)

    );

    (8)创建preconcert

    create table preconcert(

    readerid number(11),

    bookid number(11),

    predate date,

    primary key(readerid,bookid),

    foreign key (readerid) references reader(readerid),

    foreign key (bookid) references book(bookid)

    );

    (9)创建rule

    create table rule(

    booktype number(11),

    readertype number(11),

    days number(5) not null,

    num number(5) not null,

    renew number(5) not null,

    overtime number(5,2) not null,

    primary key(booktype,readertype),

    foreign key (booktype) references book_type(typeid),

    foreign key (readertype) references reader_type(typeid)

    );

     

    3.4 序列设计

    为了方便自动产生连续的读者编号、图书编号、读者类型编号、藏书类型编号、学科编号、管理员编号等字段,在数据库中分别用下列序列产生相应的编号。

    (1)create sequence seq_reader start with 1 increment by 1;

    (2)create sequence seq_book start with 1 increment by 1;

    (3)create sequence seq_reader_type start with 1 increment by 1;

    (4)create sequence seq_book_type start with 1 increment by 1;

    (5)create sequence seq_book_class start with 1 increment by 1;

    (6)create sequence seq_admin start with 1 increment by 1;

    3.5 视图设计

    为了方便查询读者借阅图书的情况及图书的借阅统计,创建下列视图。

    1. 创建名为“READER_BOOK_VIEW”的视图,包括读者信息、所借图书信息及借阅信息。

    CREATE OR REPLACE VIEW reader_book_view

    AS

    SELECT name,bookname,borrowdate,due,last_due  FROM readet,book,borrow

    WHWER reader.teadid=borrow.readid AND borrow.bookid=book.bookid;

    1. 创建名为“BOOK_TYPE_STAT_VIEW”的视图,包括各类图书的借阅统计信息。

    CREATE OR REPLACE VIEW book_type_stat_view

    AS

    SELECT booktype,COUNT(booktype)  FROM (

    SELECT readerid,borrow.booktype,booktype,borrowdate,due,last_due

    FROW borrow,book WHWER book.bookid=borrow.bookid)

    1. 存储过程设计

      1. 检查借阅是否超期的存储过程

    Create or replace procedure p_days_from_due(v_readerid number,v_bookid number,v_days out number)

    As

    Begin

    Select due –sysdate into v_days from borrow where readerid=v_readerid and bookid=v_bookid;

    Exception

    When others then

    v_days:=0;

    End;

    2.判断读者可否进行借阅的存储过程

    Create or replace procedure p_can_borrow(v_readerid in number, v_bookid in number, v_num out number)

    As

    V_right number;

    V_borrowed_num number;

    V_rule_num number;

    Begin

    Select right into v_right from reader where readerid=v_readerid;

    v_borrowed_num:=f_borrowed_num(v_readerid,v_bookid);

    v_rule_num:=f_rule_num(v_readerid,v_bookid);

    If v_right=1 then v_num:=0;

    Else

    v_num:=v_rule_num-v_borrowed_num;

    End if;

    Exception

     When others then

       v_num:=0;

    End;

    3.计算超期罚款的存储过程;

    Create or replace procedure p_timeover_money(v_readerid number,v_bookid number ,v_money out number)

    As

    V_days number;

    V_readertype number;

    V_booktype number;

    Begin

    p_days_from_due(v_readerid,v_bookid,v_days);

    Select booktype into v_booktype from book where bookid=v_bookid;

    Select readertype into v_readertype from reader where readerid=v_readerid;

    Select overtime*floor(abs(v_days)) into v_money from rule where readertype=v_readertype and booktype=v_booktype;

    Exception

    When others then

    v_money:=0;

    End;

    4.将超期未还的读者借阅权限关闭的存储过程

    Create or replace procedure p_cant_borrow(v_readerid in number, v_bookid in number, v_right out number)

    As

    V_right number;

    V_due date;

    V_next_date num;

    Begin

    Select right into v_right from reader where readerid=v_readerid;

    v_due:=f_borrowed_num(v_readerid,v_bookid);

    v_next_date:= to_date(sysdate,'yyyymmdd')-to_date(v_due,'yyyymmdd');

    If v_next_date >=0 then v_right=0;

    Else

    v_right=1;

    End if;

    Exception

    When others then

    v_right=0;

     

    3.7函数设计

    (1)计算图书应归还日期的函数。

    Create or replace function f_date_is_due(v_readerid number,v_bookid number)

    Return varchar2 as

    V_booktype number;

    V_readertype number;

    V_date varchar2(10);

    Begin

    Select booktype into v_booktype from book where bookid=v_bookid;

    Select readertype into v_readertype from reader where readerid=v_readerid;

    Select to_char(sysdate+days, 'yyyy-mm-dd') into v_date from rule where readertype=v_readertype and booktype=v_booktype;

    Return v_date;

    Exception

    /*尚未制定该类图书借阅规则*/

    When no_data_found then

    Select to_char(sysdate+30,’yyyy-mm-dd’) into v_date from dual;

    Return v_date;

    End;

     

    (2)计算读者可借阅图书册数的函数

    Create or replace function f_rule_num(v_readerid in number,v_bookid in number) return number

    As

    V_booktype number;

    V_readertype number;

    V_num number;

    Begin

    Select booktype into v_booktype from book where bookid=v_bookid;

    Select readertype into v_readertype from reader where readerid=v_readerid;

    Select num into v_num from rule where readertype=v_readertype and booktype=v_booktype;

    Return v_num;

    Exception

    /*尚未制定该类图书借阅规则*/

    When no_data_found then

    select max(num) into v_num from rule;

    return v_num;

    End;

     

    (3)计算读者已经借阅某类型图书的册数的函数

    Create or replace function f_borrowed_num(v_readerid number,v_bookid number)return number as

    V_num number;

    V_type number;

    Begin

    Select booktype into v_type from book where bookid=v_bookid;

    Select count(*) into v_num from book,borrow where book.bookid=borrow.bookid and readerid=v_readerid and booktype=v_type;

    Return v_num;

    End;

     

    (4)计算读者应交欠费的函数。

    create or replace function f_owned_money(v_readerid number)return number

    As

    v_fine number:=0.0;

    v_money number:=0.0;

    v_days number;

    v_borrow borrow%ROWTYPE;

    cursor c_borrow is select * from borrow where readerid=v_readerid;

    Begin

      for v_borrow in c_borrow loop

         p_days_from_due(v_borrow.readerid,v_borrow.bookid,v_days);

         if (v_days<0) then

            p_timeover_money(v_borrow.readerid,v_borrow.bookid,v_money);

            v_fine:=v_fine+v_money;

         end if;

      end loop;

      Return v_fine;

    End;

     

    3.8触发器设计

    (1)删除藏书类型的触发器。

    Create or replace trigger tr_delete_booktype

    Before delete on book_type for each row

    begin

    delete from book where booktype=:old.typeid;

    delete from rule where booktype=:old.typeid;

    End;

     

    (2)删除读者类型的触发器。

    Create or replace trigger tr_delete_readerype

    Before delete on reader_type for each row

    begin

    delete from reader where readertype=:old.typeid;

    delete from rule where readertype=:old.typeid;

    End;

     

    (3)删除图书的触发器。

    Create or replace trigger tr_delete_book

    Before delete on book for each row

    begin

    delete from borrow where bookid=:old.bookid;

    delete from preconcert where bookid=:old.bookid;

    End;

     

    (4)删除读者的触发器。

    Create or replace trigger tr_delete_reader

    Before delete on reader for each row

    begin

    delete from borrow where readerid=:old.readerid;

    delete from preconcert where readerid=:old.readerid;

    End;

     

    4.系统主要功能模块设计与实现

    4.1数据库的连接与访问

    1.注册驱动通过Class.forName()获取Oracle数据库驱动

    2.获取连接DriverManager.getConnection()

    3.获取数据库操作对象

    4.执行sql   executeQuery(sql); executeUpdate(sql); executeDelete(sql);

    5.处理查询结果集

    关键代码:

    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); //通过Class.forName()获取Oracle数据库驱动

    String url="jdbc:oracle:thin:@localhost:1521:orcl"; //数据库名,端口号

    String user="scott";        //用户名

    String password="tiger";     //密码

    conn=DriverManager.getConnection(url, user, password);  //建立连接

    5.1借书管理

    (1)功能页面列表

    (2)业务流程图 

    (3)核心代码

    String sql1="select * from borrow where bookid="+bookid;

    ResultSet rs1=dbCon.executeQuery(sql1);

    rs1.next();

    int y=rs1.getRow();

    if(y>0)

    {

    //该书未还

    out.print("<center>该书未还!<a href=javascript:history.go(-1)>后退</a></center>");

    out.print("<br><center><a href=..\\main.jsp>〈〈返回首页</a></center>");

    }

    else

    {

    //判断该读者还能借几本书

    CallableStatement a=con.prepareCall("{call p_can_borrow(?,?,?)}");

    a.setInt(1,readerid.intValue()); 

    a.setInt(2, bookid.intValue());   

    a.registerOutParameter(3, Types.INTEGER);//输出

    a.execute(); 

    int  num=a.getInt(3);

     if(num>0)

     {

     

     //计算到期日期

     

    // 调用有一个in参数的函数; the function returns a VARCHAR

    CallableStatement cs = con.prepareCall("{? = call f_date_is_due(?,?)}");

    cs.registerOutParameter(1, Types.VARCHAR);

     

    cs.setInt(2, readerid.intValue());

    cs.setInt(3, bookid.intValue());

     

    cs.execute();

    String due = cs.getString(1);

     

    String sql="insert into borrow(readerid,bookid,borrowdate,due) values("+

    readerid+","+bookid+",sysdate,to_date('"+due+"','yyyy-mm-dd'))";

    System.out.println(sql);

     

    dbCon.executeUpdate(sql);

     

    out.print("<center>出借成功!<a href=javascript:history.go(-1)>继续借书</a></center>");

    out.print("<br><center><a href=..\\main.jsp>〈〈返回首页</a></center>");

    }

     else

    {

    //该书不能出借

    out.print("<center>出借限额已满或读者无权限!<a href=javascript:history.go(-1)>后退</a></center>");

    out.print("<br><center><a href=..\\main.jsp>〈〈返回首页</a></center>");}}
    (4)界面实现

    5.2还书管理

    1. 功能页面列表

    (2) 业务流程图 

    3)核心代码

    //还书入库

    String sql1="delete from borrow where bookid="+bookid+" and readerid="+readerid;

            dbCon.executeUpdate(sql1);

    //判断该书是否超期

    CallableStatement  a=con.prepareCall("{call p_days_from_due(?,?,?)}");

    a.setInt(1,readerid.intValue()); 

    a.setInt(2, bookid.intValue());   

    a.registerOutParameter(3, Types.INTEGER);//输出

    a.execute(); 

    int  num=a.getInt(3);

     if(num>=0)

     {

     //还书未超期

    dbCon.executeUpdate(sql);

    out.print("<center>还书成功!<a href=javascript:history.go(-1)>后退</a></center>");

    out.print("<br><center><a href=..\\main.jsp>〈〈返回首页</a></center>");

    }

     else

    {

     

    //计算超期罚款金额

    // 调用有一个OUT参数的存储过程; the procedure returns a NUMBER

    CallableStatement cs = con.prepareCall("{ call p_timeover_money(?,?,?)}");

    cs.setInt(1, readerid.intValue());

    cs.setInt(2, bookid.intValue());

    cs.registerOutParameter(3, Types.INTEGER);

    cs.execute();

    int m = cs.getInt(3);

    dbCon.executeUpdate(sql);

    out.print("<center>出借已超期!需缴纳罚款"+m+"元<a href=javascript:history.go(-1)>后退</a></center>");

    out.print("<br><center><a href=..\\main.jsp>〈〈返回首页</a></center>");

    }


     
    6.总结 

      本次综合实验让我深刻的体会到 Oracle 的魅力所在,加深了我对 Oracle 数 据库的理解,提升了我对 Oracle 数据库的综合运用能力。例如,我是在本次实 验中才理解了序列的用法,并真正用到实践中来。Oracle 的索引、视图等提高 了 orale 的访问速度,序列提高了数据插入的速度。函数和存储过程简化了后端 代码的量同时提高了稳定性和安全性,触发器的设计保证了数据的一致性。一个 完整的开发流程让我看到了 Oracle 数据库在实际开发过程中相比 MySQL 的优势 所在。 本次实验同样用到了 tomcat 服务器、JSP 技术。作为一个轻量级的服务器 tomcat 较为适合小型项目部署。JSP 技术对于小型项目也挺适用,虽然没有实现 前后端分离,但是可以让功能的实现变得易于完成代码的编写,也易于理解。本 次实验所用图书管理系统数据库模型数据库表设计等很经典,其价值值得深入挖 掘探索,完全可以称为我们今后数据库设计的入门案例。 

    展开全文
  • 文章目录0.思维导图1.四大基本概念(1)数据--Data① 数据的定义② 数据的种类③ 数据的特点④ 数据举例(2)数据库...② DBMS的用途③ DBMS的主要功能(4)数据库系统--Database System① 什么是数据库系统(Databa...


    0.思维导图

    在这里插入图片描述

    1.四大基本概念

    (1)数据–Data

    • 数据(Data)是数据库中存储的基本对象

    ① 数据的定义

    描述事物的符号记录

    ② 数据的种类

    文本、图形、图像、音频、视频、学生的档案记录、货物的运输情况等

    ③ 数据的特点

    数据与其语义是不可分的

    ④ 数据举例

    • 数据的含义称为数据的语义,数据与其语义是不可分的。

    例如 93是一个数据
    语义1:学生某门课的成绩
    语义2:某人的体重
    语义3:计算机系2003级学生人数
    语义4:请同学给出。。。

    学生档案中的学生记录
    (李明,男,197205,江苏南京市,计算机系,1990)
    语义:学生姓名、性别、出生年月、籍贯、所在院系、
    入学时间
    解释:李明是个大学生,1972年5月出生,江苏南京市人,1990年考入计算机系

    (2)数据库–Database

    ① 数据库的定义

    数据库(Database,简称DB)是长期储存计算机内有组织可共享的大量数据集合

    ② 数据库的基本特征

    • 数据按一定的数据模型组织、描述和储存
    • 可为各种用户共享
    • 冗余度较小
    • 数据独立性较高
    • 易扩展

    (3)数据库管理系统–DataBase Management System

    ① 什么是DBMS?

    DBMS是位于用户与操作系统之间的一层数据管理软件。是基础软件,是一个大型复杂的软件系统

    ② DBMS的用途

    科学地组织和存储数据、高效地获取和维护数据

    ③ DBMS的主要功能

    • 数据定义功能
      提供数据定义语言(DDL)
      定义数据库中的数据对象

    • 数据组织、存储和管理
      分类组织、存储和管理各种数据
      确定组织数据的文件结构和存取方式
      实现数据之间的联系
      提供多种存取方法提高存取效率

    • 数据操纵功能
      提供数据操纵语言(DML)
      实现对数据库的基本操作 (查询、插入、删除和修改)

    • 数据库的事务管理和运行管理
      数据库在建立、运行和维护时由DBMS统一管理和控制
      保证数据的安全性、完整性、多用户对数据的并发使用
      发生故障后的系统恢复

    • 数据库的建立和维护功能(实用程序)
      数据库初始数据装载转换
      数据库转储
      介质故障恢复
      数据库的重组织
      性能监视分析等

    • 其它功能
      DBMS与网络中其它软件系统的通信
      两个DBMS系统的数据转换
      异构数据库之间的互访和互操作

    (4)数据库系统–Database System

    ① 什么是数据库系统(Database System,简称DBS)

    在计算机系统中引入数据库后的系统构成

    ② 数据库系统的构成

    • 数据库 Database
    • 数据库管理系统(及其开发工具)Database Management System
    • 应用系统
    • 数据库管理员 Database Administrator

    在这里插入图片描述

    ③ 数据库系统的特点

    ❶ 数据结构化
    • 整体数据的结构化是数据库的主要特征之一

    • 整体结构化
      不再仅仅针对某一个应用,而是面向全组织
      不仅数据内部结构化,整体是结构化的,数据之间具有联系

    • 数据库中实现的是数据的真正结构化
      数据的结构用数据模型描述,无需程序定义和解释
      数据可以变长
      数据的最小存取单位是数据项

    ❷ 数据的共享性高,冗余度低,易扩充
    • 数据库系统从整体角度看待和描述数据,数据面向整个系统,可以被多个用户、多个应用共享使用。
    • 数据共享的好处
      减少数据冗余,节约存储空间
      避免数据之间的不相容性与不一致性
      使系统易于扩充
    ❸ 数据独立性高
    • 物理独立性
      指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。当数据的物理存储改变了,应用程序不用改变。
    • 逻辑独立性
      指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,用户程序也可以不变。
    • 数据独立性是由DBMS的二级映像功能来保证的
    ❹ 数据由DBMS统一管理和控制

    DBMS提供的数据控制功能

    • (1)·数据的安全性(Security)保护·
      保护数据,以防止不合法的使用造成的数据的泄密和破坏。
    • (2)数据的完整性(Integrity)检查
      将数据控制在有效的范围内,或保证数据之间满足一定的关系。
    • (3)并发(Concurrency)控制
      对多用户的并发操作加以控制和协调,防止相互干扰而得到错误的结果。
    • (4)数据库恢复(Recovery)
      将数据库从错误状态恢复到某一已知的正确状态。
    ❺ 应用程序与数据的对应关系(数据库系统)

    在这里插入图片描述

    2.数据管理技术的产生和发展

    (1) 什么是数据管理

    • 对数据进行分类、组织、编码、存储、检索和维护
    • 数据处理的中心问题

    (2) 数据管理技术的发展过程

    • 人工管理阶段(20世纪40年代中–50年代中)
    • 文件系统阶段(20世纪50年代末–60年代中)
    • 数据库系统阶段(20世纪60年代末–现在)

    (3)时期

    • 20世纪60年代末以来

    (4) 产生的背景

    • 应用背景 大规模管理
    • 硬件背景 大容量磁盘、磁盘阵列
    • 软件背景 有数据库管理系统
    • 处理方式 联机实时处理,分布处理,批处理
    展开全文
  • 数据库 数据库系统 数据库管理系统

    千次阅读 2019-11-10 08:32:32
    什么是数据库系统?图书管理系统 数据库系统是计算机科学与软件工程学科的核心课程,由IEEE/ACM组织联合制定的计算机类课程。CS2013提出了18个知识领域,信息管理是重要的知识领域,信息管理的核心为数据库系统。 ...

    数据库系统概述

    数据库系统由计算机科学与软件工程学科的核心课程组成,由IEEE/ACM组织联合制定的计算机类课程。在CS2013课程中由18个知识领域,信息管理是重中之重,信息管理的核心即---------数据库系统。

    社会业务区分来看数据库的应用:

    1. 现代社会的业务
    2. 传统社会的业务

    两种业务实现方式大不相同,传统社会的业务工作是基于纸张与口头交流的方式,而现代社会的业务是基于计算机(Internet、数据库)来完成工作。

    数据库在现代社会中占由重要地位,在大数据时代、大数据环境,基于数据库的应用是大数据,大数据时代–一切以数据说话,Everything Over DB。数据库不仅是一种技术,也是一种思维,要学习将各种数据集中起来,形成数据库,实现数据积累,要懂得如何应用数据,如何实现积累的收益,需要掌握数据库的管理与控制。
    那么学习数据库系统专业核心课程,就是需要我们练习、练习,不断的练习,不断地进行知识的学习与技能的训练。

    数据库

    数据库(Database ) ,简称DB,DB数据的集合与有关联关系的表(table)的集合都称之为数据库。
    数据库的起源
    说到数据库的起源,不得不提表(table),在数据库中Table极为重要,数据库就是基于对表的分析,E.F.Codd则是数据库的奠基人,他基于对表的理解,

    1. 提出了“关系”及关系模型。
    2. 提出了关系数据库理论
    3. 开创了数据库的时代
      我们现在普遍应用的数据库管理系统(Oracle、Sybase、DB2、MySQL)都是基于关系模型的数据库,固E.F.Codd被称为数据库管理系统的奠基者,也因此他获得了计算机领域最高奖-------图灵奖。

    表—Table

    相互之间有关联关系的数据集合称为Table,table的内容包含: 表名、表标题、表内容、行、列等。

    数据库
    相互之家有关联关系的数据集合称为Table,相互之间有关联关系的Table集合称为数据库

    数据库是对Table的管理,Table数据库也称为关系数据库,关系数据库又叫结构化数据库,关系数据库的使用包含:数据库设计、数据库应用程序开发、数据库存取与控制。

    当然,除了关系数据库还有图像、工程等非结构化数据库,面向对象、XML、NOSQL等其他数据库。

    数据库系统

    数据库系统要素构成:

    1. 数据库:table的集合。
    2. 数据库管理系统:管理数据库的系统软件。
    3. 数据库应用:使某一个用户更好的使用数据库,开发的数据库应用程序。
    4. 数据库管理员:使用数据库管理系统的技术人员。
    5. 计算机基本系统:计算机硬件设备、Internet等组成。
      ,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5Njg5NzEx,size_16,color_FFFFFF,t_70)
      数据库管理系统(DBMS)是管理数据库的软件系统,由数据库管理员(DBA)通过数据库语言(SQL)来使用、管理、操纵数据库系统。
      普通用户对数据库了解不深,为了让不同用户能使用数据库,达到不同的目的,DBA需要根据不同需求开发不同的数据库应用程序。
      这时,普通用户可以通过数据库应用程序,经过数据库管理系统,来达到使用数据库的目的。

    数据库系统之图书管理系统

    图书管理数据库系统实现条件:

    1. 数据库使用环境:计算机及网络等组合而成
    2. 数据库(DB):图书管理系统数据库中Table的集合。
    3. 数据库管理系统(DBMS):管理数据库的系统软件(Oracle、SQL Server),由DBA管理。
    4. DBAP(数据库应用程序),来定义什么用户使用数据库。

    DB实例化与抽象化:
    抽象分为:理解、区分、命令、表达。
    在计算机环境中,由各种Table组成数据库(DB),数据库管理员(DBA)通过数据库管理系统(DBMS)管理数据库,DBA开发出DBAP供用户使用。用户通过DBAP,经过DBMS来使用DB。

    数据库管理系统

    从用户角度看数据库管理系统的功能:

    数据库定义:定义数据库的table的名称、标题等。
    DBMS定义一套数据定义语言(DDL)给用户,用户使用DDL描述其索要建立表的格式,DBMS依照用户的定义,创建数据库及其中的TABALE。

    数据库的操纵:表定义完,向数据库的TABLE增删改查等。
    DBMS提供一套数据库操纵语言(DML)给用户,用户使用DML描述其所要进行的增删改查等操作,DBMS依照用户的操作描述,实际执行这些操作。

    数据库控制:控制数据库中数据的使用,定义用户查看权限。
    DBMS提供一套数据控制语言(DCL)给用户,用户使用DCL描述其要对数据库所实施的控制,DBMS依照用户的描述,进行实际控制。

    数据库维护:转储、恢复、重组、性能监测、分析
    DBMS提供一系列程序(实用程序)给用户(DBA),在这些程序中提供了对数据库维护的各种功能,DBA使用这些程序对数据库维护操作。

    数据库语言

    使用者通过数据库语言利用DBMS操作数据库。

    SQL语言:结构化的数据库语言

    1. 数据定义语言:DDL ,DBMS提供给用户,以便用户定义数据格式。
    2. 数据操纵语言:DML,DBMS提供给用户,以便用户对数据进行操纵。
    3. 数据控制语言:DCL,DBMS提供给用户,以便用户对数据进行控制。

    数据库各种操作的执行:DBMS 按用户要求进行定义、操纵、控制和维护。

    数据库语言与高级语言差别:一条数据库语句相当于高级语言的一个或多个循环程序。
    数据库语言可以嵌入到高级语言(宿主语言)中使用。

    *从系统角度看数据库管理系统

    数据库管理系统(从系统角度看):解析语言并执行的系统就是数据库管理系统。

    典型的数据库管理系统:
    Oracle
    DB2
    Sybase
    My SQL

    1. 数据库系统的标准版结构
    2. 数据模型
    3. 数据库系统的演变与发展

    重点与难点:
    一组概念的区分:三级模式两层映像,物理独立性和逻辑独立性
    一组概念的区分:数据>模式>数据模型
    几种数据模型的差异:网状/层次模型>关系模型>OO数据模型

    数据库系统的分层结构–典型数据库的结构抽象
    三级模式:

    DBMS管理数据的三个层次
    从结构角度叫模式,从数据角度叫视图。
    外模式/用户模式
    External Level = User Level 外部层次-用户层次,某一个用户能看到与处理的数据,全局数据中的某一部分(某个映射)。
    概念模式/全局模式
    Conceptual Level = Legic level 全局层次/概念层次/逻辑层次,从全局角度理解或管理的数据,含相应的关联约束。
    内模式/物理模式/存储模式
    Internal Level = Physical level 内部层次,反应存储在介质上的数据,含存储路径、存储方式、索引方式等。

    数据 与 数据的结构----模式(schema)
    模式—指的是对数据库中数据所进行的一种结构性的描述,所观察到的数据的结构信息。
    视图/数据是某种表现形势下表现出来的数据库中的数据。

    两层映像:
    E-C maping EC映像,是外模式到概念模式的映像,将外模式映射为概念模式,从而实现数据概念视图向外部视图的转换,便于用户观察与使用。

    C-I maping CI映像, 概念模式到内模式的映像, 将概念模式映射为内模式,从而支持实现数据概念视图向内部视图的转换,便于计算机进行存储和处理。

    数据库标准结果:三级模式与两层映像。

    开发时可以使用高级语言,针对外部视图进行。

    逻辑数据独立性
    当概念模式变化时,可以不改变外部模式(只改变E-C mapping),从而无需改变应用程序。
    物理数据独立性
    当内部模式变化时,可以不改变概念模式(只需改变C-I mapping),从而不改变外部模式。

    数据模型
    研究数据库一定要研究它的数据模型,首先区分数据模型、模式、数据三种区别。
    数据模型:规定模式统一描述方式的模型,包括:数据结构、操纵、约束,数据模型是对模式本身结构的抽象,模式是对数据本身结构形式的抽象。比如:关系模型,所有模式都可以抽象为表的形式,而每一个具体的模式都是拥有不同列名的具体的表

    三大数据模型:关系模型(表)、层次模型(树)、网状模型(图),基于不同的数据结构建立不同的模型,。

    关系模型概念

    关系模型最早由E.F Codd在1970年提出,关系模型是从表及表的处理方式中抽象出来的,是在对传统表及其操作进行数学化严格定义基础上,引入集合理论和逻辑学理论提出的。
    关系模型是数据库的三大经典模型之一,也是现在大多数商品化数据库系统仍然使用的数据模型。
    SQL语言是标准的数据库语言 ,它是建立在关系模型基础之上的,数据库领域的众多理论也是建立在关系模型之上。

    关系模型是什么?形象的说,一个关系就是一个table,关系模型就是处理table的,它由三部分组成:关系模型三要素

    1. 基本结构(Table/Relation):描述DB各种数据的形式
    2. 基本操作(Relation Operator):描述表与表之间所可能发生的各种操作(关系运算)
    3. 完整性约束:描述这些操作所应遵循的约束条件
      学习关系模型就是学习表如何描述、有哪些操作、结果是什么、有哪些约束等。

    关系模式是关系的结构,关系是关系模式某一时刻的数据。

    本篇文章学习课程记录的笔记,仅供复习参考,https://www.icourse163.org/course/HIT-1001554030

    展开全文
  •   数据库系统学习第三篇:数据库系统三层结构。参考数据库系统概念(机械工业出版社) 文章目录前言物理层逻辑层视图层通过图示理解三者之间关系 前言   数据库系统的目标之一就是方便用户去使用数据库,然而...

      数据库系统学习第三篇:数据库系统三层结构。参考数据库系统概念(机械工业出版社)

    前言

      数据库系统的目标之一就是方便用户去使用数据库,然而数据库系统本身说到底是01序列,这显然不方便开发者开发和普通用户去使用。那么数据库系统就应该隐藏掉数据的存储和维护细节,提供数据的抽象视图,方便各类用户去使用
      为了满足上述的目标,最终提出了数据库系统三层结构:物理层 、逻辑层、视图层(抽象层次逐步提高)。

    物理层

    (关键词:最低级,数据怎样存储,复杂)

      物理层是最低级的抽象,它描述的是 数据是怎样存储的,比如数据的存储路径,数据的存储方式,数据的索引方式等等,这个层次仍然很复杂

    逻辑层

    (关键词:数据是什么,数据之间的关系,数据库全貌,工作人员)

      逻辑层是对物理层的进一步抽象,它描述的是数据库有什么数据、以及数据之间的关系。逻辑层相比物理层结构要更加简单,它很好地描述了整个数据库的全貌。数据库管理员和程序开发者通常都工作在这个层次上,而无需了解复杂的底层物理结构。

    视图层

    (关键词:数据库一部分,普通用户,视图)

      视图层是对逻辑层进一步的抽象,它描述的是数据库的一部分。简单来说,就是普通用户没必要知道整个数据库,当然,处于安全性考虑,我们也不能让普通用户知道整个数据库。整个数据库相对于普通用户来说,仍然是复杂的,所以数据库系统只需提供普通用户所需要的相应的视图,方便用户使用即可。
      需要注意的是,由于不同的用户需求不一样,所以视图也不止一种,这些视图都来自视图层。

    通过图示理解三者之间关系

      需要注意的是 ,物理层也被称作是内部层,逻辑层也被称作是概念层,视图层也被称作是外部层。
    在这里插入图片描述

      最后,截取书上的例子来进一步说明个人的理解。下面的图定义了一个类型 instructor。
    在这里插入图片描述
      物理层描述的是数据是怎样存储的。也就是说,物理层描述的是ID、name、dept_name、salary存储在哪里,怎样存储的(是数组还是链表)等等。

      逻辑层描述的是有什么数据、以及数据之间的关系。有什么数据说的是数据和其对应的类型,如name 对应着char数组。数据之间的关系可以这样理解,除了有instructor类以外,不难想象有student类,以及course类,这三者之间必然存在联系。

      视图层描述的是数据库的一部分,不同的用户只需要看到他对应的视图即可。如学生就应该看到course 和 student的全部,而不能看到instructor的全部信息(如salary)

      写完收工。

    展开全文
  • 数据库系统结构

    千次阅读 2017-11-19 22:50:49
    数据库系统结构 从数据库应用开发人员角度:数据库系统通常采用三级模式结构–内部 从数据库最终用户角度:数据库系统结构分为单用户、主从式、分布式、客户-服务器、浏览器-应用服务器/数据库服务器多层...
  • 数据库系统的简单结构图

    千次阅读 2018-07-04 21:14:43
  • 数据库系统结构(1)两种角度(2)数据库系统模式的概念(3)数据库系统的三级模式结构① 模式(Schema)② 外模式(External Schema)③ 内模式(Internal Schema)④ 数据库模式、外模式、内模式总结(4)数据库的...
  • 分布式数据库系统体系结构

    千次阅读 2020-04-29 10:35:06
    分布式数据库系统1)分布式数据库系统概述定义特点优缺点数据共享分类2)分布式数据库系统体系结构数据存储模式结构透明性分布式数据库管理系统 1)分布式数据库系统概述 定义 分布式数据库系统(DDBS)是指数据存放在...
  • 层次模型:最早使用的一种数据库系统模型,数据结构是一种有向树 网状结构:取消的层状模型的两个限制,用“有向结构描述网状结构;可有一个以上的结点没有双亲,至少有一个结点可以 有多于一个双亲可有一个...
  • 数据库系统原理】 数据库系统概述基本概念

    千次阅读 热门讨论 2021-03-04 22:40:56
    数据库系统概述基本概念 主要内容: 一、数据 (1)数据的性质 (2)数据的一种分类形式 二、数据库 ...(2)数据库系统结构 1.数据库系统的外部结构 2.数据库系统的内部结构 ①三级模式 ②二级映像 数据独立性
  • 数据库系统结构和组成

    千次阅读 2020-06-09 22:35:00
    从数据库应用开发人员角度看,数据库系统通常采用三级模式结构,是数据库系统内部的系统结构。 从数据库最终用户角度看,数据库系统的结构分为:单用户结构、主从式结构、分布式结构、 客户-服务器、浏览器-应用...
  • 数据库结构图

    千次阅读 2018-07-03 15:30:00
    转载于:https://www.cnblogs.com/yun1108/p/9258839.html
  • 数据库系统的三级模式结构和二级映像功能示意从DBMS角度来看,数据库系统通常采用三级模式结构,这是数据库系统的内部体系结构数据库系统的三级模式结构和二级映像功能示意: 模式  又称 概念模式,处于...
  • 数据库系统概论》第五版 +学习笔记总目录

    万次阅读 多人点赞 2020-06-03 17:01:53
    本篇文章学习书籍:《数据库系统概论》第5版 王珊 萨师煊编著 学习软件:Navicat Premium 15 && SSMS 采用数据库:SQL Sever 说明:虽然数据库是SQL Sever 有些书上的语句执行不了,貌似书采用的是Oracle...
  • 耿建玲视频数据库系统总结

    千次阅读 热门讨论 2013-08-24 12:23:52
    它是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。 T-SQL,即【Transact Structured Query Language】,中文理解为SQL Server专用标准结构化查询语言增强版.是SQL ...
  • 数据库1_3——数据库系统结构

    千次阅读 2020-04-20 12:26:46
    数据库1_3——数据库系统的组成1 数据库系统模式的概念1.1 “型” 和“值” 的概念1.2 模式和实例2 数据库系统的三级模式结构2.1 模式(Schema)2.2 外模式(External Schema)2.3 内模式(Internal Schema)3 ...
  • 数据库系统设计大作业:图书馆管理系统

    千次阅读 多人点赞 2020-12-04 09:12:45
    数据库系统设计大作业:图书馆管理系统 参考https://blog.csdn.net/dimo__/article/details/84936685中的设计思路,设计了本系统 1 需求分析 针对图书馆的图书管理系统数据库设计,分别对图书馆的读者、一般工作人员...
  • 三级模式两级映像/数据库系统结构

    万次阅读 多人点赞 2016-03-10 14:18:19
    如果从DBMS角度来看,数据库通常采用三级模式结构,也就是说DBMS内部的系统结构是三级模式结构2. 如果从数据库最终用户角度来看,数据库系统的结构可分为:单用户结构、主从式结构、分布式结构、客户/服务器、...
  • 数据库课程设计实验报告--图书馆管理系统

    万次阅读 多人点赞 2018-03-08 14:03:13
    一、系统平台 开发工具:Eclipse java Mars 数据库 MySQL server,Navicat可视化工具 操作系统:win10 ... 提取码:4y44 ... 图书馆信息管理系统数据库用以收集、存储书籍信息、人员(读者、图书管理员...
  • 数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。...
  • 初步认识数据库数据库结构抽象,介绍什么是数据库,三大经典数据模型——层次模型、网状模型、关系模型,数据库的三个模式——外模式,概念模式,内模式,以及查缺补漏的习题等。
  • 数据库系统的外部结构

    千次阅读 2016-10-10 20:12:54
    1.5.3 数据库系统的外部体系结构随着计算机体系结构的发展,数据库系统的外部体系结构出现了如下5种结构:单用户结构、主从式结构、分布式结构、客户机/服务器(C/S)结构、浏览器/服务器(B/S)结构。 单用户结构 单...
  • 数据库系统DBS(database system) 数据库管理系统DBMS(是系统软件,主要功能是定义数据库,比如Oracle) DBA Database Administrator数据库管理员 函数要素:函数名,参数,返回值类型,函数体 关系型数据库 关系...
  • 数据库系统---分布式数据库系统

    千次阅读 2018-08-23 11:57:41
    分布式数据库系统  近年来,随着计算机技术与网络技术的发展,特别是 Internet 的兴起,分布式数据库系统得到了很快的发展和应用。 1 分布式数据库的概念   分布式数据库系统是相对于集中式数据库系统而言...
  • 简述数据库系统

    千次阅读 多人点赞 2017-02-26 10:48:29
    一、数据库系统 数据库系统是由数据库、数据库管理系统、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。 以上这句话是对数据库系统非常严谨的定义。我这篇博客是想从自己的角度来重新认识一下...
  •   数据库三层结构隐藏了数据的存储和维护的细节,降低了数据库系统的复杂性,方便用户访问数据库。那三层结构具体是怎样设计的呢?这有赖于数据库系统三级模式。 三层模式 模式和实例   在说三级模式之前,先...
  • 1.数据库系统 数据库系统有数据库、数据库管理系统...数据库系统结构分为外部结构和内部结构,外部结构有单用户数据库系统,即数据库系统都安装在一台计算机上,这虽已不再流行,但是也是个人开发的必由之路。除...
  • 《数据库原理》— 数据库系统概论第五版习题解析

    万次阅读 多人点赞 2017-05-29 14:57:48
    数据库系统概论前七章习题解析 第1章绪论 1.试述数据、数据库、数据库系统、数据库管理系统的概念。答: (l)数据(Data):描述事物的符号记录称为数据。数据的种类有数字、文字、图形、图像、声音、正文等。...
  • 数据结构,计算机网络,数据库,计算机组成原理,操作系统这些在大学期间一定要掌握好来,因为现在互联网大厂面试都爱考察这些内容,一句话,计算机基础,yyds! 可能大家第一个问题是,这些课需要哪些先学? 讲真,...
  • 数据库系统工程师

    千次阅读 多人点赞 2020-11-21 21:17:32
    自己也是在大一下的时候,突然就“发了疯”似的喜欢上了数据库,所以就去考了计算机三级数据库技术、数据库系统工程师、计算机四级数据库工程师,下面是自己总结的一些“数据库系统工程师”考点,小伙伴们可以参考...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 623,786
精华内容 249,514
关键字:

数据库系统结构图