北京邮电大学实验报告课程名称数据库系统原理实验名称数据库表/视图的创建与维护实验计算机学院网络工程11班薛玥指导教师吴起凡成绩2014-3-27实验目的1.掌握将E-R图转换为数据库逻辑模式(关系表)的方法。
2.通过进行数据库表的建立操作,熟悉并掌握在Microsoft SQL Server数据库中建立表的方法,理解关系数据库表的结构,巩固SQL标准中关于数据库表的建立语句。
3.通过对Microsoft SQL Server数据库中建立、维护视图的实验,熟悉Microsoft SQL Server数据库中建立和维护视图的方法,理解和掌握视图的概念。
4.掌握从Excel表向Microsoft SQL Server关系数据库导入数据的方法,利用实际数据建立GSM网络配置数据库。
·实验环境采用Microsfot SQL Server2005数据库管理系统作为实验平台;个人独立完成此实验。
·实验内容将本次试验大致分为一下几个内容:1.根据上次《GSM移动通信网络配置数据库》相关背景资料及上次试验对于GSM网络各个实体间的关系,将数据需求转化为E-R图;2.将E-R图转化为逻辑模式,在转化的时候要注意表结构及属性,以及一些primary key的选择,以及键之间的约束关系;3.接下来,将将逻辑模式转化为物理模式。
转化成物理模型的方式主要有以下三种,1)写好create table、create view等命令的SQL脚本,利用脚本文件一次性生成这些表和视图,然后在Microsoft SQL Server中打开SQL脚本文件并执行;2)把创建表和视图的脚本语句分成一条一条SQL语句执行;3)使用SQL Server所提供的功能,自动创建表和视图。
以上说的这三种方法,我都做了尝试,会在后面详细阐述;3.视图定义:1)创建单表上的视图:a.在表“小区基本信息”上创建“LAC号为14121的小区基本位置信息”视图CellInfo,属性包括(CellID、所属地区、LAC号、经度、纬度)。
b.在表“20个小区一周分钟级话务数据”上创建“全速率话务量平均值大于23的小区话务量数据信息”视图CellCallInfo,属性包括(CellID、平均半速率话务量率、平均拥塞率)。
2)创建多表上的视图:创建“MscID=5214的MSC管辖的BTS的基本信息,及其BTS对应的天线基本信息”视图ParMscInfo。
4.将老师所给的《最小数据支撑集》导入数据库;·实验过程1.首先,先要把老师所给的GSM网络相关文件看懂看明白,将各个实体间的关系抽象出来,转化成实体关系图。
可以这样理解:1)1个BSC可连接控制多达数十个甚至上百个BTS,每个BTS(以及其所对应的cell/sector)可以连接至1-3个BSC。
->BSC“控制”BTS,多对多,两端均为完全参与2)“1个MSC可以连接管理几个至数十个BSC,而每个BSC可以连接至1个MSC。
”->MSC”管理”BSC,一对多,两端均为完全参与。
3)“在一个BTS周围,能使移动台以不小于最小有效信号强度接收到来自BTS 的无线信号的所有地理位置点构成BTS覆盖范围或服务范围”,“1个MS可以位于1到6个BTS的覆盖范围内(当MS同时处于多于1个BTS的覆盖范围内时,MS 处于如图2所示的切换区域内),但任一时刻只能与其中的1个BTS建立有效的无线通信链路,此BTS对应的小区/扇区覆盖范围成为MS的服务小区。
”->①空闲状态,cell“覆盖”MS,多对多,MS完全参与,cell部分参与;②通话状态, cell“服务”MS,一对多,MS完全参与,cell部分参与.4)“在1个小区cell或扇区sector中,BTS与MS间通过空中(逻辑)无线信道(channel)进行话音或数据通信。
GSM是时分多址TDMA系统,其信道可分为逻辑信道和物理信道。
”->BTS“对应于”cell,一对一,两端均为完全参与。
5)“根据小区/扇区为全向还是定向小区,每个小区的BTS都有一幅全向或定向天线。
”->天线“配置给”Cell,一对一,天线部分参与,小区完全参与。
6)“地理位置上相邻、并且定义为邻区的2个小区之间有邻区关系”->邻区关系是一种非对称关系,多对多,两端均为完全参与。
7)->最小数据支撑集里的路测数据,“来自于”小区,且是多对一,小区部分参与,路测数据完全参与。
8)->分钟计划数据“描述”每个小区,话务数据与小区的关系为多对一,小区和话务量都是完全参与。
9)->频点“分配给”小区,多对多,频点部分参与,小区完全参与。
根据这些实体之间的联系,可以抽象出E-R图。
2.将E-R图转化成关系模式。
首先,我采用编写脚本来创建表的方式来得到各个表,SQL脚本如下:use GSMgo--BSCcreate table BSC(BscId int not null,BscCompany nvarchar(255)null,BscName nvarchar(255)null,Longitude float null,Latitude float null,MscId int null,primary key(BscId))--BTScreate table BTS(BtsName nvarchar(255)not null,Longitude float null,Latitude float null,Altitude float null,BtsCompany nvarchar(255)null,BtsPower float null,BscId int null,primary key(Btsname))--MSCcreate table MSC(MscId float not null,MscName nvarchar(255)null,MscCompany nvarchar(255)null,Msclongitude float null,Msclatitude float null,primary key(Mscid))--MScreate table MS(IMEI float not null,UserName nvarchar(255)null,MSISDN float null,MsCompany nvarchar(255)null,gsmMsSense float null,gsmMsHeight float null,gsmMsFout float null,MZONE int null,primary key(IMEI))--neighborcreate table neighbor(CellId int not null,AdjellId int not null,CellLac float null,Adjcelllac float null,primary key(CellId,AdjcellId))--roadcastcreate table roadcast(KeyNum float not null,CellID int not null,Latitude float null,Longitude float null,RxLev float null,primary key(KeyNum,CellID))--antennacreate table antenna(CellID int null,AntennaHeight int null,HalfPAngle int null,MaxATTenuation int null,Gain int null,AntTilt int null,Pt int null,MsPwt int null)--cell/sectorcreate table cell/sector(CellID int not null,Bts Name nvarchar(255)null,AreaName nvarchar(255)null,LAC int null,Longitude float null,Latitude float null,Direction int null,Radious int null,Bcch int null,primary key(cellid))--FREcreate table FRE(CellId int not null,Freq int not null,primary key(CellId,Freq))通过新建查询编写如上SQL脚本,通过上方工具栏,选择要在哪个数据库上运行这个SQL脚本,点击,选择后即可点击右侧的执行按钮来执行编写好的SQL脚本。
执行完成后,则可以再右侧的GSM数据库中的表文件中看到所建立的所有table。
可以选中任意一个建好的表,如选择abo.atenna,点击列,则可以看到刚刚创建好的包含在实体atenna中的各个属性。
这些表目前还是空表,没有导入任何数据。
建立表的方式还有很多,正如老师在实验要求中所说的那样,可以像上述依次完成建立,也可以一条一条执行SQL语句,当然也可以利用软件自带的功能,直接将表和表的数据导入数据库,这样做操作简便易于完成,但是要想将课上老师所讲的SQL语句得到应用,还是编写脚本这种方式更为合适贴切。
3.建好表后,就是要根据自己所用属性的需要,将老师所给的最小数据支撑集中的数据导入建好的表中。
这里我们需要上述图片的几个属性,按照下述方式导入数据(1)将excel中的每个表通过excel另存为.csv格式。
(2)将Excel格式的文件导入到Microsoft SQL Server数据库相应的表中。
按照上述方式即可将数据导入数据库,在这里不再赘述具体点哪儿了。
倒好数据的表,可以通过点击表->选择一个表abo.atenna->右键选择打开表,即可看到。
通过自己的摸索,我还找到了另外一种简便的方法来导入数据,但是没有什么技术含量,在以后的工作生活中可以用这种方式来导入数据。
这种方法描述为:在空的数据库上点右键,选择任务->导入数据,然后源文件就是老师所给的数据集,目的文件就是sql server,这样到数据方便快捷,但是,有的联系集的数据并不是现成的,所以无法直接导入修改。
4.建立视图视图的创建也是利用SQL脚本。
(1)创建单表上的视图:在表“小区基本信息”上创建“LAC号为14121的小区基本位置信息”视图CellInfo,属性包括(CellID、所属地区、LAC号、经度、纬度)。
由于在本数据库中,LAC的属性为integer,所以可以直接比较选择LAC=14121的,代码为:create view CellInfo asselect CellID,AreaName,Longitude,Latitude,LACfrom abo.[cell/sector]where LAC=14121或者直接在视图那里选择新建视图,在方块内输入代码:由于创建表中,小区信息导入的数据的LAC都为14119,而没有14121的对应元素,所以创建视图中选择出来的信息为空。