餐厅数据库设计.docx

上传人:b****3 文档编号:6811862 上传时间:2023-05-10 格式:DOCX 页数:11 大小:71.22KB
下载 相关 举报
餐厅数据库设计.docx_第1页
第1页 / 共11页
餐厅数据库设计.docx_第2页
第2页 / 共11页
餐厅数据库设计.docx_第3页
第3页 / 共11页
餐厅数据库设计.docx_第4页
第4页 / 共11页
餐厅数据库设计.docx_第5页
第5页 / 共11页
餐厅数据库设计.docx_第6页
第6页 / 共11页
餐厅数据库设计.docx_第7页
第7页 / 共11页
餐厅数据库设计.docx_第8页
第8页 / 共11页
餐厅数据库设计.docx_第9页
第9页 / 共11页
餐厅数据库设计.docx_第10页
第10页 / 共11页
餐厅数据库设计.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

餐厅数据库设计.docx

《餐厅数据库设计.docx》由会员分享,可在线阅读,更多相关《餐厅数据库设计.docx(11页珍藏版)》请在冰点文库上搜索。

餐厅数据库设计.docx

餐厅数据库设计

ThedocumentwaspreparedonJanuary2,2021

 

餐厅数据库设计

一、实验目的与要求

1、通过实验加深对数据完整性的理解,学会创建和使用触发器。

2、通过实验加深对数据安全性的理解,并掌握SQLServer中有关用户,角色及操作权限的管理方法。

3、通过实验了解SQLServer的数据备份和恢复机制,掌握SQLServer中数据库备份和恢复的方法。

4、根据数据库系统设计的基本步骤,完成某一具体数据库系统的需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和数据库运行维护等功能。

二、设计思想

数据库系统设计是指对于一个给定的应用环境,构造优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效的存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据库操作要求。

数据库设计的基本步骤包括需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和数据库运行和维护。

三、设计步骤

一、需求分析

餐厅管理涉及的实体有:

客人属性有客人编号、桌号、人数、到达时间、客人类型

菜单属性有菜单编号、菜肴编号、份数、口味

菜肴属性有菜名、菜肴种类

收银单属性有收银单编号、应收金额、折扣、实收金额、收银时间

账目属性有帐目编号、消费金额、用餐持续时间、客户类型

这些实体之间的联系如下:

一桌客人对应一个菜单,多桌客人可以使用相同的菜单,因此客人与菜单有多对一的联系。

客人、收银单、账目之间存在一对一的关系,即一桌客人只对应一个收银单,一个收银单只对应一条账目记录,一个收银单只对应一桌客人。

菜肴和菜单之间存在一对一联系,一个菜肴编号对应一个菜名,用菜价来表示菜肴的价格。

二、概念结构设计

三、逻辑结构设计

总体表预览

表名称

表信息描述

CustomerInfo

客人信息表

FoodList

菜单信息表

FoodInfo

菜肴信息表

ChargeInfo

收银信息表

AccountInfo

账目信息表

OrderInfo

点菜信息表

C_C_A

客人、收银单、账目对应关系

PriceInfo

价格信息表

客人信息表CustomerInfo

描述

字段

类型

客人编号

Cusno

Int

桌号

Tableno

shortint

人数

Cusnum

shortint

客人类型

Ctype

char(4)

菜单信息表FoodList

描述

字段

类型

菜单编号

Mno

Int

菜肴编号

Fno

smallint

份数

Fnum

smalltint

口味

Ftaste

Char(4)

菜肴信息表FoodInfo

描述

字段

类型

菜名

Fname

varchar(20)

菜肴种类

Fkind

char(4)

收银信息表ChargeInfo

描述

字段

类型

收银单编号

Chargeno

Int

应收金额

Spay

int

折扣

Discount

int

实收金额

Rpay

int

账目信息表AccountInfo

描述

字段

类型

账目编号

Accountno

Int

消费金额

Pay

Int

客户类型

Ctype

char(4)

点菜信息表OrderInfo

描述

字段

类型

客人编号

Cusno

Int

菜单编号

Mno

Int

客人、收银单、账目对应关系表C_C_A

描述

字段

类型

客人编号

Cusno

Int

收银单编号

Chargeno

Int

账目编号

Acountno

Int

价格信息表PriceInfo

描述

字段

类型

菜名

Fname

varchar(20)

菜肴编号

Fno

smallint

价格

Price

smallint

创建数据库:

createdatabaseinn;

创建表:

创建表CustomerInfo:

createtableCustomerInfo(

Cusnointprimarykey,

Tablenosmallintnotnull,

Cusnumsmallintnotnull,

Custypechar(4)notnull,

check(Custype='普通'orCustype='VIP'),

);

创建表FoodInfo:

createtableFoodInfo(

Fnamevarchar(20)primarykey,

Fkindchar(10)notnull,

);

创建表ChargeInfo:

createtableChargeInfo(

Chargenointprimarykey,

Spayint,

Discountint,

Rpayint

);

创建表AccountInfo:

createtableAccountInfo(

Accountnointprimarykey,

Payint,

Ctypechar(4)

);

创建表C_C_A:

createtableC_C_A(

Cusnointprimarykey,

Chargenointnotnull,

Accountnointnotnull

);

创建表PriceInfo:

createtablePriceInfo(

Fnosmallintprimarykey,

Fnamevarchar(20)notnull,

Pricesmallintnotnull

);

创建表FoodList:

createtableFoodList(

Mnoint,

Fnosmallint,

Fnumsmallintnotnull,

Ftastechar(4),

primarykey(Mno,Fno),

foreignkey(Fno)referencesPriceInfo(Fno)

);

创建表OrderInfo:

createtableOrderInfo(

Cusnoint,

Mnoint,

primarykey(Cusno,Mno),

foreignkey(Cusno)referencesCustomerInfo(Cusno)

);

四、物理结构设计

创建索引:

createindexindex_PriceInfoonPriceInfo(Fno);

createindexindex_FoodListonFoodList(Mno);

createindexindex_OrderInfoonOrderInfo(Mno);

createindexindex_FoodInfoonFoodInfo(Fname);

createindexindex_CustomerInfoonCustomerInfo(Cusno);

createindexindex_ChargeInfoonChargeInfo(Chargeno);

createindexindex_C_C_AonC_C_A(Cusno);

createindexindex_AccountInfoonAccountInfo(Accountno);

创建视图:

createviewKitchen

as

selectMno,Fname,Fnum,Ftaste

fromFoodList,PriceInfo

createviewDelivery

as

selectTableno,Fname,Fnum,Cusnum

fromFoodList,CustomerInfo,OrderInfo,PriceInfo

where=and=

and=

五、数据库实施

1、插入数据:

插入数据到表FoodInfo:

insertintoFoodInfovalues('干锅千页豆腐','推荐');

insertintoFoodInfovalues('手撕包菜','素菜');

insertintoFoodInfovalues('水煮鱼片','荤菜');

insertintoFoodInfovalues('香干回锅肉','荤菜');

insertintoFoodInfovalues('油淋茄子','素菜');

insertintoFoodInfovalues('蒜苗牛柳','推荐');

insertintoFoodInfovalues('鱼香肉丝','荤菜');

insertintoFoodInfovalues('糖醋小排','推荐');

insertintoFoodInfovalues('酸辣土豆丝','素菜');

insertintoFoodInfovalues('宫爆鸡丁','荤菜');

insertintoFoodInfovalues('红烧鸡块','荤菜');

insertintoFoodInfovalues('冬瓜咸排汤','汤类');

insertintoFoodInfovalues('蕃茄蛋汤','汤类');

insertintoFoodInfovalues('紫菜蛋汤','汤类');

insertintoFoodInfovalues('土豆牛肉','推荐');

insertintoFoodInfovalues('凉拌皮蛋','凉菜');

insertintoFoodInfovalues('凉拌毛豆','凉菜');

插入数据到表PriceInfo:

insertintoPriceInfovalues(001,'干锅千页豆腐',16);

insertintoPriceInfovalues(002,'手撕包菜',6);

insertintoPriceInfovalues(003,'水煮鱼片',15);

insertintoPriceInfovalues(004,'香干回锅肉',10);

insertintoPriceInfovalues(005,'油淋茄子',6);

insertintoPriceInfovalues(006,'蒜苗牛柳',18);

insertintoPriceInfovalues(007,'鱼香肉丝',10);

insertintoPriceInfovalues(008,'糖醋小排',22);

insertintoPriceInfovalues(009,'酸辣土豆丝',5);

insertintoPriceInfovalues(010,'宫爆鸡丁',12);

insertintoPriceInfovalues(011,'红烧鸡块',16);

insertintoPriceInfovalues(012,'冬瓜咸排汤',8);

insertintoPriceInfovalues(013,'蕃茄蛋汤',6);

insertintoPriceInfovalues(014,'紫菜蛋汤',6);

insertintoPriceInfovalues(015,'土豆牛肉',24);

insertintoPriceInfovalues(016,'凉拌皮蛋',5);

insertintoPriceInfovalues(017,'凉拌毛豆',5);

2、创建用户、角色

创建用户:

选择目的数据库中的安全性,右击安全性中的用户,选择新建用户,在弹出的数据库用户-新建对话框中输入用户名和登录名Delivery,单击确定。

重复上述操作完成对用户Kitchen、Admin、Waiter的创建。

创建角色:

选择目的数据库中的安全性,右击安全性中的角色,选择新建中的新建数据库角色,出现数据库角色-新建对话框,输入角色名,并选择所有者,在此角色的成员中单击添加选择角色成员,单击确定完成角色创建。

3、对用户授权

grantselectonKitchentoKitchen;

grantupdateonFoodListtoKitchen;

grantselectonDeliverytoDelivery;

grantupdateonFoodListtoDelivery;

grantallprivilegesonAccountInfotoAdmin

grantallprivilegesonC_C_AtoAdmin

grantallprivilegesonChargeInfotoAdmin

grantallprivilegesonCustomerInfotoAdmin

grantallprivilegesonFoodInfotoAdmin

grantallprivilegesonFoodListtoAdmin

grantallprivilegesonOrderInfotoAdmin

grantallprivilegesonPriceInfotoAdmin

grantallprivilegesonKitchentoAdmin

grantallprivilegesonDeliverytoAdmin

grantallprivilegesonFoodlisttoWaiter

grantallprivilegesonCustomerInfotoWaiter

grantallprivilegesonChargeInfotoWaiter

4、创建触发器

在表FoodInfo中创建触发器:

createtriggerDELETE_FOODINFO

onFoodInfo

afterdelete

as

begin

deletefromPriceInfowhere=Fname

setnocounton;

end

go

六、数据库运行和维护

1、备份数据库:

在数据库文件选项中选择要备份的数据库inn,右键单击,选择任务-备份选项出现数据库备份对话框,备份类型选择完整,在目标项中选择添加,弹出选择备份目标,在磁盘上的目标中选择备份数据库的目标文件夹,选择好路径后,将文件名取为inn,点击确定后,完成备份。

2、还原数据库:

在数据库文件选项中单击右键,选择还原数据库,弹出还原数据库对话框,在目标数据库中选择要还原的数据库inn,在还原的源项中选择源设备,在弹出的指定备份中选择备份位置,选择已备份的文件后,单击确定,在选择用于还原的备份集中选定要还原的文件,单击确定,完成数据库还原。

四、实验结论

通过此次实验,加深对数据完整性的理解,学会创建和使用触发器。

加深对数据安全性的理解,并掌握SQLServer中有关用户,角色及操作权限的管理方法。

学会根据数据库系统设计的基本步骤,完成某一具体数据库系统的需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和数据库运行维护等功能。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2