一个简单的酒店系统的数据库设计

这篇博客分享了一位博主多年前的SQL SERVER课程设计——酒店管理系统数据库的创建过程,包括创建数据库、定义各个表结构、设置约束以及插入初始数据等。博主通过这个例子回顾了SQL SERVER的基础操作,并提供了相关表的创建脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    以前学习SQL SERVER时的课程设计,下午整理资料时无意中居然找到,虽然都好几年了,但发现用来学习SQL SERVER还是不错的。
    现在都用PowerDesigner了,以前这些代码可都是一行一行敲出来的,只是没有加字段说明,不记得当初有没有数据库设计说明文档。

----------------------------开始-----------------------------

--drop database hotel
if exists (select * from master..sysdatabases
           where name ='myhotel')
   drop database myhotel
go

--创建数据库
create database myhotel--Keen毕业设计
on
(
 name = 'myhotel_dat',
 filename = 'c:/myhotel.mdf',
 size = 5,
 maxsize = 20,
 filegrowth = 1
)
log on
(
 name = 'myhotel_log',
 filename = 'c:/myhotel.log',
 size = 5,
 maxsize = 20,
 filegrowth =1
)
------------------------------------------------------------------
go

use myhotel
go

--创建表
--create table 表名(字段名 类型 primary,key,字段名,int,
--字段名 类型 check(字段名 in(范围)))
--bit 整型数据 1、0 或 NULL.如果一个表中有不多于 8 个的 bit 列,这些列将作为一个字节存储

--1,房间表(rootype='1'表示豪华双人房,roomstuats='0'表示末入住)
create table roomlist
    (roomid char(6) primary key,
     roomtypeid int ,
     roomstatus bit check (roomstatus in (0,1)))
go

--2.服务列表(serverlist)
----服务列表采用树型结构存储服务id
create table serverlist
    (serverid char(6) primary key,
     servername char(20),
     servercost money)
go

--3,房间类别列表(roomtypelist,'1'为豪华房,'2'为单人高级房,'3'为双人高级房)
create table roomtypelist
    (roomtypeid int primary key,
     roomtype char(20) not null,
     roomcost money not null)
go

--4,顾客表(guest)
create table guest
    (guestid int primary key IDENTITY(10001,1),
     guestname char(10) not null,
     guestcardno char(20) not null,
     guestsex char(2),
     guestphone char(30))
go


--5,服务使用表(serveruse)
--create table 表名(字段名 类型 primary key,字段名 类型 foreign key(外键名)
-- references 表名,
--字段名 类型 foreign key(外键名) references 表名,.....)
create table serveruse
     (serveruseid int primary key IDENTITY(1000,1),
      guestid int  foreign key (guestid) references guest,
      serverid char(6) foreign key (serverid) references serverlist,
      servertime datetime)
go

--6,客房使用单(guestroom)
create table guestroom
     (guestroomid int primary key identity(100,1),--自动编号
      roomid char(6) foreign key(roomid) references roomlist,
      guestid int  foreign key(guestid) references guest,
      indate datetime,
      outdate datetime)
go

--7,服务撤消单,结构和服务使用表相同
create table serverabort
     (abortid int primary key IDENTITY(1000,1),
      guestid int  foreign key(guestid) references guest,
      serverid char(6) foreign key(serverid) references serverlist,
      aborttime datetime)
go

--8,结帐(checkmoney),用于存放顾客结帐总金额和结帐时间
create table checkmoney
     (checkid int primary key IDENTITY(1000,1),
      guestid int  foreign key(guestid) references guest,
      totalcost money,
      intime datetime)
go
------------------------------------------------------------------

--完整性问题

--确保所有主键,外键的关系准确性
alter table roomlist add foreign key(roomtypeid) references roomtypelist(roomtypeid)
go

--创建缺省约束 create default 约束名 as 常量

--每个房间的类型的缺省值是豪华房(roomtype为1表示豪华房)
cre

酒 店 管 理 系 统 一、背景说明 目前大多数酒店提供的服务多种多样,规模大小也各不相同,但稍具规模的酒店必含下面三类服务:饮食、住宿和娱乐。由于我们对酒店行业没有具体的接触和实质性的了解。此次数据库设计只能在一些收集到的基本材料与个人直观认识的基础上,简单模仿中等规模的酒店设计管理系统,并将其抽象成一个由三部门组成、实现三大服务的系统。 二、部门的划分 饮食部门   它是酒店基本部门之一。它提供服务的特点是实时性强、持续时间短,强调效率。例如,顾客人数、顾客所用的菜及其它饮料等种类繁多,数量不等;后勤各种活动如采购等频繁发生。通过分析可发现,用人工完成此类操作比计算机更具实效与时效,且此类信息也没有长时间保留的必要,因此这些信息没有必要采用数据库管理。对于饮食部门,需要较长时间保留的信息主要是财务信息,一方面便于期末汇总,另一方面便于向上级报告。   在规模较大的酒店餐饮服务部分,餐厅可分成几个等级或几个小部门,然后各自形成小系统,本系统为了简单起见,把饮食部门作为一个子系统,不再细分。 住宿管理部门   它也是酒店基本部门之一。住宿管理部门的主要职责有:A.给个房间布置各种设备、分类、编号、制定收费标准、分配服务人员。B.登记旅客信息,确认其身份,登记其入住、退房时间。C.统计各类房间的客满程度。D.对本部门的财务流动进行登记处理。以上信息处理可以通过计算机完成,其他不便于计算机操作的在此没有列出。 娱乐管理部门   娱乐是酒店非主流服务,它的存在除了赢利,更多的是为了吸引顾客食宿。娱乐部门的特点与饮食部门很相似,不便于使用计算机进行操作。可以用计算机完成并且有必要用计算机完成的有:A.制定收费标准,分配负责人.B.收入支出财务处理:编号、财务来源去处的摘要、数量、单价、数额、结余、经手人等。这些信息都需要长时间保留并上报。 经理部门 经理部门的功能虽然不是面向顾客、不是酒店的服务项之一,但它的存在却是必不可少的。它的主要职责有:A.管理员工。给员工编号,登记其基本信息;根据员工的平时表现及工龄确定工资;此外,还要给员工分配工作部门及职务等等。B.划分部门。给个部门编号、命名、确定其职责范围、任命部门经理、分配员工。C.对本部门的财务进行核算(支付工资等)。D.期末对酒店的收益情况进行核算。
评论 48
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值