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

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

    以前学习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表示豪华房)
create default defroomtype as 1
go
sp_bindefault defroomtype,'roomlist.roomtypeid' --注意'.'与','
go

--每个房的状态缺省值(roomstatus)是空的(用0表示)

create default defroomstatus as 0
go
sp_bindefault defroomstatus,'roomlist.roomstatus'
go

--创建检查约束 alter table 表名 add check (字段 范围)
--顾客性别必须是'男'或'女'

alter table guest add check (guestsex in('男','女'))
g

  • 11
    点赞
  • 104
    收藏
    觉得还不错? 一键收藏
  • 48
    评论
评论 48
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值