设计房屋租赁管理系统--PostgreSQL--数据库原理及应用

第一次 “数据库原理及应用”课程实践大作业

针对房屋租赁管理系统开发,设计该系统数据库,并在PostgreSQL数据库服务器中实现该数据库。

1)分析房屋租赁管理系统业务的基本数据需求,使用Power Designer建模工具,建立房屋租赁管理系统概念数据模型CDM。

2)针对关系数据库设计,在Power Designer建模工具中,将房屋租赁管理系统概念数据模型转换为系统逻辑数据模型LDM设计,并进行规范化完善设计。

3)针对PostgreSQL数据库实现,在Power Designer建模工具中,将房屋租赁管理系统逻辑数据模型转换为系统物理数据模型PDM设计。

4)在Power Designer建模工具中,将房屋租赁管理系统物理数据模型转换为SQL脚本程序

5)在PostgreSQL数据库服务器中,执行该SQL脚本程序,实现房屋租赁管理系统数据库对象创建实现

作业要求:在作业文档分别给出房屋租赁管理系统的概念数据模型、逻辑数据模型、物理数据模型模型设计图,

并将数据库设计模型在PostgreSQL数据库服务器进行实现。给出各个模型设计步骤、设计说明、执行结果界面,并对结果进行说明

实验流程

1.新建概念数据模型

 2.选取概念数据类型,输入名称

3.定义租户实体

 4.命名实体名称

 5.命名实体属性

6.同理定义房屋、房主、租贷合同实体

 

7.建立实体联系,点取实体联系符号,连接“租户”实体与“房屋”实体

 

8.双击联系符号,进入联系选项设置,命名实体联系名称

9.设置实体之间的数量关系、参与关系

10.类似方法建立其他实体之间的联系 

 

 

 

 11.保存概念数据模型

逻辑数据模型设计图

1.    在工具栏中选取创建逻辑数据模型菜单项

关于powerdesinger 出现Entity Attribute code uniqueness解决办法

Tool->check model...去掉Entity Attribute下Entity Attribute name uniqueness 和 Entity Attribute code uniqueness

关于powerdesinger 出现Entity Attribute code uniqueness解决办法_咸鱼恒星的博客-CSDN博客

2.    进入逻辑数据模型转换设置对话框,设置选项与名称后,点击确定

3.    即可将概念数据模型转换为逻辑数据模型

4.    对转换之后的逻辑数据模型进行完善设计,可以增加实体属性

5.    为了更完整展示逻辑数据模型显示内容,可选取工具菜单栏,显示选项菜单项;进入模型显示设置页面,对逻辑数据模型实体显示内容进行设置,点取确定,即可看到逻辑数据模型完整内容

 

物理数据模型设计图

1.    点取菜单工具Tools->创建物理数据模型Generate Physical Data Model

2.    选取DBMS :PostgreSQL 9.x, 命名物理数据模型名称,点击确定,即可将逻辑数据模型转换为物理数据模型

3.    对物理数据模型的显示内容进行设置, 可通过点取工具菜单中的显示选项菜单项, 进入模型显示设置页面, 对物理数据模型显示内容进行设置,即可看到所需要的模型设计内容

 转换为SQL脚本程序,并在PostgreSQL数据库服务器进行实现。

1.    点取数据库菜单栏"Databases"

2.    点取创建数据库菜单项Generate Database

3.    进入数据库设置对话框页面, 在对话框页面中设置脚本转换选项,即可转换为SQL脚本程序

 

4.    在文本编辑器中,可以打开创建的SQL文件,即可看到各个数据库对象创建的SQL语句

5.    执行SQL脚本创建数据库对象,在PostgreSQL数据库管理工具中,执行SQL脚本,实现数据库对象创建

6.    使用pgAdmin4数据库管理工具,连接PostgreSQL数据库服务器,在服务器中创建房屋租赁数据库HouseDB

7.    调入创建数据库对象的SQL脚本文件,Tool,Query Tool

 7.删除索引文件

 

8.运行 ,刷新数据库,完成

SQL文件内容

/*==============================================================*/
/* DBMS name:      PostgreSQL 9.x                               */
/* Created on:     2022Äê4ÔÂ24ÈÕ 19:57:04                          */
/*==============================================================*/

/*==============================================================*/
/* Table: contract                                              */
/*==============================================================*/
create table contract (
   IDnumber             VARCHAR(18)          not null,
   IDnumber2            VARCHAR(18)          not null,
   renttime2            DATE                 null,
   owner2               VARCHAR(20)          null,
   address2             VARCHAR(50)          null,
   tenement             VARCHAR(20)          null
);

/*==============================================================*/
/* Index: partyB_FK                                             */
/*==============================================================*/
create  index partyB_FK on contract (
IDnumber
);

/*==============================================================*/
/* Index: partyA_FK                                             */
/*==============================================================*/
create  index partyA_FK on contract (
IDnumber2
);

/*==============================================================*/
/* Table: house                                                 */
/*==============================================================*/
create table house (
   address              VARCHAR(50)          not null,
   area                 NUMERIC(5,2)         not null,
   owner                VARCHAR(20)          not null,
   housetype            CHAR(4)              not null,
   renttime             DATE                 null,
   rent                 VARCHAR(20)          null,
   number               SERIAL               not null,
   IDnumber             VARCHAR(18)          null,
   IDnumber2            VARCHAR(18)          not null,
   rentstate2           CHAR(4)              null,
   constraint PK_HOUSE primary key (number)
);

/*==============================================================*/
/* Index: house_PK                                              */
/*==============================================================*/
create unique index house_PK on house (
number
);

/*==============================================================*/
/* Index: rent_FK                                               */
/*==============================================================*/
create  index rent_FK on house (
IDnumber
);

/*==============================================================*/
/* Index: own_FK                                                */
/*==============================================================*/
create  index own_FK on house (
IDnumber2
);

/*==============================================================*/
/* Table: owner                                                 */
/*==============================================================*/
create table owner (
   name2                VARCHAR(20)          null,
   gender2              CHAR(2)              null,
   address3             VARCHAR(50)          not null,
   phonenumber2         VARCHAR(11)          null,
   identity             CHAR(4)              not null,
   IDnumber2            VARCHAR(18)          not null,
   constraint PK_OWNER primary key (IDnumber2)
);

/*==============================================================*/
/* Index: owner_PK                                              */
/*==============================================================*/
create unique index owner_PK on owner (
IDnumber2
);

/*==============================================================*/
/* Table: tenement                                              */
/*==============================================================*/
create table tenement (
   IDnumber             VARCHAR(18)          not null,
   name                 VARCHAR(20)          not null,
   gender               CHAR(2)              not null,
   phonenumber          VARCHAR(11)          not null,
   address              VARCHAR(50)          not null,
   renttime             DATE                 null,
   rentstate2           CHAR(4)              null,
   constraint PK_TENEMENT primary key (IDnumber)
);

/*==============================================================*/
/* Index: tenement_PK                                           */
/*==============================================================*/
create unique index tenement_PK on tenement (
IDnumber
);

alter table contract
   add constraint FK_CONTRACT_PARTYA_OWNER foreign key (IDnumber2)
      references owner (IDnumber2)
      on delete restrict on update restrict;

alter table contract
   add constraint FK_CONTRACT_PARTYB_TENEMENT foreign key (IDnumber)
      references tenement (IDnumber)
      on delete restrict on update restrict;

alter table house
   add constraint FK_HOUSE_OWN_OWNER foreign key (IDnumber2)
      references owner (IDnumber2)
      on delete restrict on update restrict;

alter table house
   add constraint FK_HOUSE_RENT_TENEMENT foreign key (IDnumber)
      references tenement (IDnumber)
      on delete restrict on update restrict;

1.系统功能模块图:改进完善业务流程图,分析用户需要系统完成哪些任务,逐层分解,画出功能层次图。功能分析是要在设计过程中明确完成设计后的“淮南师范学院房屋租赁管理系统”所能具备的功能。 淮南师范学院房屋租赁管理系统的功能模块划分图为: 2.业务流程分析:描述系统的业务流程,画出规范的业务流程图 3.确定实体、联系及其属性,确定主实体的主标识,画出ERD(不少于两个主实体,一个从实体,一个联系和24个属性);检查改正错误;对其中复杂的多元联系进行分析,必要则改进。 概念模型有以下几个主要特点: (1)能充分反映实际应用中的实体及其相互之间的联系,是现实世界的一个真实模型。 (2)由于概念模型独立于具体的计算机系统和具体的数据库管理系统,因此,便于用户理解,有利于用户积极参与设计工作。 (3)概念模型容易修改。当问题有变化时,反映实际问题的概念模型可以很方便地扩充和修改。 (4)便于向各种模型转换。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。 概念结构设计要借助于某种方便又直观的描述工具,E-R(实体-联系,Entity-Relationship)图是设计概念模型的有力工具。在E-R图中,用三种图框分别表示实体、属性和实体之间的联系,其规定如下: 用矩形框表示实体,框内标明实体名; 用椭圆形框表示实体的属性,框内标明属性名; 用菱形框表示实体间的联系,框内标明联系名; 实体与其属性之间以无向边联接,菱形框与相关实体之间也用无向边联接,无 向边旁标明联系的类型。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值