数据库设计==>>MySchool
1.数据库设计的步骤
第一步:需求分析(收集信息)
第二步:绘制 E-R 图 (标示实体 ,找到实体的属性
第三步:将 E-R 图转换成数据库模型图
第四步:将数据库模型图转换成数据表
2.如何绘制 E-R 图
矩形:实体
椭圆形:属性
菱形:关系
3.如何绘制数据库模型图
PowerDesigner :选择 PhysicalModel
如有有人不小心关掉了 Platter,对工具栏点击右键,勾选 Platter 即可。
当我们将数据库模型图设计完毕后,可以通过菜单中的 database下的
GenerateDatabase来生成对应的 sql
4.三大范式规范数据库设计
第一范式:保证每列的原子性,不可再被拆分
第二范式:在满足第一范式的基础上,一张表只能描述一件事情
第三范式:在满足第二范式的基础上,除了主键列之外其他列都要直接依赖于
要在规范化和性能之间取一个平衡
5.T-SQL语句回顾(其中[]中的表示可省略)
1.添加数据
insert [into] 表名 (列1,列2,...) values(值1,值2,...)
2.修改数据
update 表名 set 列1=值1,列2=值2,... where (条件)
3.查询数据
select 列1,列2,... from 表名 where (条件) order by 列名
4.删除数据
delete from 表名 where (条件)
6.使用SQL语句创建和删除数据库
1.创建数据库([]表示可以省略,{}表示必需的部分,<>表示解释说明)
语法:
create detabase 数据库名
on [primary]
(
<数据文件参数> [,......n] [<文件组参数>]
)
[log on]
(
{<日志文件参数> [,......n]}
)
数据文件的具体参数如下:
([name=逻辑文件名]
filename=物理文件名
[,size=大小]
[,maxsize={最大容量|unlimited}]
[,filengrowth=增长量]) [,.....n]
文件组的具体参数如下:
filegroup 文件组名 <文件参数> [,......n]
eg:
create database stuDB
on primary -- 默认就属于primary文件组,可省略
(
/*--数据文件的具体描述--*/
name='stuDB_data', -- 主数据文件的逻辑名称
filename='D:\stuDB_data.mdf', -- 主数据文件的物理名称
size=5mb, --主数据文件的初始大小
maxsize=100mb, -- 主数据文件增长的最大值
filegrowth=15%--主数据文件的增长率
)
log on
(
/*--日志文件的具体描述,各参数含义同上--*/
name='stuDB_log',
filename='D:\stuDB_log.ldf',
size=2mb,
filegrowth=1mb
)
2.删除数据库
语法:
drop database 数据库名
那么如何删除这个数据库呢,SQL Server将数据库的清单存放在master系统数据库的sysdatabases表中,只需要查看该表是否存在于该数据库中就可以,这样在创建数据库的时候也可以先判断,再创建
了,语句如下:
use master -- 设置当前数据库为master,以便访问sysdatabases表
go
if exists(select * from sysdatabases where name='stuDB')
drop database stuDBgo
7.使用SQL语句创建和删除表
1.回顾一下我们SQL Server 中的数据类型(转载自http://blog.sina.com.cn/zhanshiqi)
第一大类:整数数据
bit:bit数据类型代表0,1或NULL,就是表示true,false.占用1byte.
int:以4个字节来存储正负数.可存储范围为:-2^31至2^31-1.
smallint:以2个字节来存储正负数.存储范围为:-2^15至2^15-1
tinyint: 是最小的整数类型,仅用1字节,范围:0至此^8-1
第二大类:精确数值数据
numeric:表示的数字可以达到38位,存储数据时所用的字节数目会随着使用权用位数的多少变化.
decimal:和numeric差不多
第三大类:近似浮点数值数据
float:用8个字节来存储数据.最多可为53位.范围为:-1.79E+308至1.79E+308.
real:位数为24,用4个字节,数字范围:-3.04E+38至3.04E+38
第四大类:日期时间数据
datatime:表示时间范围可以表示从1753/1/1至9999/12/31,时间可以表示到3.33/1000秒.使用8个字节.
smalldatetime:表示时间范围可以表示从1900/1/1至2079/12/31.使用4个字节.
第五大类:字符串数据
char:长度是设定的,最短为1字节,最长为8000个字节.不足的长度会用空白补上.
varchar:长度也是设定的,最短为1字节,最长为8000个字节,尾部的空白会去掉.
text:长宽也是设定的,最长可以存放2G的数据.
第六大类:Unincode字符串数据
nchar:长度是设定的,最短为1字节,最长为4000个字节.不足的长度会用空白补上.储存一个字符需要2个字节.
nvarchar:长度是设定的,最短为1字节,最长为4000个字节.尾部的空白会去掉.储存一个字符需要2个字节.
ntext:长度是设定的,最短为1字节,最长为2G.尾部的空白会去掉,储存一个字符需要2个字节.
第七大类:货币数据类型
money:记录金额范围为:-92233720368577.5808至92233720368577.5807.需要8 个字节.
smallmoney:记录金额范围为:-214748.3648至214748.36487.需要4个字节.
第八大类:标记数据
timestamp:该数据类型在每一个表中是唯一的!当表中的一个记录更改时,该记录的timestamp字段会自动更新.
uniqueidentifier:用于识别数据库里面许多个表的唯一一个记录.
第九大类:二进制码字符串数据
binary:固定长度的二进制码字符串字段,最短为1,最长为8000.
varbinary:与binary差异为数据尾部是00时,varbinary会将其去掉
image:为可变长度的二进制码字符串,最长2G.
2.创建表
语法:
create table 表名
(
列1 数据类型 列的特征,
列2 数据类型 列的特征,
......
)
**:数据库中表的清单存放在数据库的系统表sysobjects中.
use StuDBgo
if exists(select * from sysobjects where name='stuMarks')
drop table stuMarks
create table stuMarks
(
ExamNo int identity(1,1) primary key,
stuNo char(6) not null,
writtenExam int not null,
LabExam int not null
)
go
其中,列属性"identity(起始值,递增量)" 表示"ExamNo"列为自动编号, 也称为标识列
3.删除表
语法:
drop table 表名
use StuDBgo
if exists(select * from sysobjects where name='stuMarks')
drop table stuMarks
8.使用SQL语句创建和删除约束
1.回顾一下SQL Server 中有关数据完整性
(1)实体完整性:唯一确定表中一行记录
(2)域完整性:表中特定数据的有效性,以保不会输入无效的数值
(3)引用完整性:插入或删除记录时,维护表之间定义的关系
2.添加约束
语法:
alter table 表名
add constraint 约束名 约束类型 具体的约束说明
上述语法表示修改某个表,并在其中添加某个约束.其中,约束名的命名规则推荐采用"约束类型_约束列的形式
eg:
为学号(StudentNo)添加主键约束,约束名推荐取名"PK_StudentNo;
...唯一约束=>"UQ_IdentityCard;
...默认约束=>"DF_Address;
...检查约束=>"CK_BornDate;
...外键约束=>"FK_StudentNo.
--添加外键约束(主表Student和Result建立关系,关联StudentNo)
alter table Result
add constraint FK_StudentNo
foreign key(StudentNo) references Student(StudentNo)
Go
--添加主键约束(将StudentNo作为主键)
alter table Student
add constraint PK_StudentNo primary key (Student) --添加唯一约束(身份证)
alter table Student
add constraint UQ_IdentityCard unique (IdentityCard) --添加默认约束(不填地址,则默认为"地址不详")
alter table Student
add constraint DF_Address default('地址不详') for Address --添加检查约束
alter table Student
add constraint CK_BornDate ckeck (BornDate>='1980-01-01')
3.删除约束
语法:
alter table 表名
drop constraint 约束名
eg:
--Student表中地址列默认约束的语句如下
alter table Student
drop constraint DF_Address
数据库设计==>>MySchool的更多相关文章
- 优化MySchool数据库设计之【巅峰对决】
优化MySchool数据库设计 之独孤九剑 船舶停靠在港湾是很安全的,但这不是造船的目的 By:北大青鸟五道口原玉明老师 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识 ...
- 优化MySchool数据库设计总结
数据库的设计 一:什么是数据库设计? 数据库设计就是将数据库中的数据实体以及这些数据实体之间的关系,进行规范和结构化的过程. 二:为什么要实施数据库设计? 1:良好的数据库设计可以有效的解决数据冗 ...
- <<MySchool数据库设计优化>> 内部测试
1) 在SQL Server 中,为数据库表建立索引能够( C ). A. 防止非法的删除操作 B. 防止非法的插入操作 C. 提高查询性能 D. 节约数据库的磁盘空间 解析:索引的作用是通过使用索引 ...
- 《MySchool数据库设计优化》内部测试
1) 在SQL Server 中,为数据库表建立索引能够( C ). A. 防止非法的删除操作 B. 防止非法的插入操作 C. 提高查询性能 D. 节约数据库的磁盘空间 解析:索引的作用是通过使用索引 ...
- accp7.0优化MySchool数据库设计内测笔试题总结
1) 在SQL Server 中,为数据库表建立索引能够(C ). 索引:是SQL SERVER编排数据的内部方法,是检索表中数据的直接通道 建立索引的作用:大大提高了数据库的检索速度,改善数据库性能 ...
- S2--《优化MySchool数据库设计》总结
第一章 数据库的设计 1.1 数据库设计 数据库中创建的数据库结构的种类,以及在数据实体之间建立的复杂关系是决定数据库系统效率的重要因素. 糟糕的数据库设计表现在以下两个方面: *效率低下 * ...
- 数据库设计中的Soft Delete模式
最近几天有点忙,所以我们今天来一篇短的,简单地介绍一下数据库设计中的一种模式——Soft Delete. 可以说,该模式毁誉参半,甚至有非常多的人认为该模式是一个Anti-Pattern.因此在本篇文 ...
- 使用django开发博客过程记录1——数据库设计
1.数据库设计 2.插入测试数据 3.配置相关问题 1.数据库设计 数据库有简单的三张表:Article.Category.Tag以下是代码 # -*- coding:utf-8 -*- from _ ...
- 基于SSM的租赁管理系统0.3_20161225_数据库设计
数据库设计 1. 概念模型 2. 类模型 3. 生成SQL use test; /*========================================================== ...
随机推荐
- PowerShell定时记录操作系统行为
作为系统管理员,有些时候是需要记录系统中的其他用户的一些操作行为的,例如:当系统管理员怀疑系统存在漏洞,且已经有被植入后门或者创建隐藏账户时,就需要对曾经登陆的用户进行监控,保存其打开或者操作过的文件 ...
- 点击弹出 +1放大效果 -- jQuery插件
20140110更新: <!doctype html> <html> <head> <meta charset="UTF-8"> & ...
- 通过微信查找SAP TCODE代码
输入T-CODE查询作用: (包含了16000+ 个SAP T-CODE),扫码关注后可以体验效果 再也不用去记那么多T-CODE用途了 还不试试看 输入关键词:"利润中心" &q ...
- CSS3 页面跳转的动画效果
从左侧弹出: var windowWidth = window.innerWidth; $(atlas_list).css({ "transition":"none&qu ...
- iOS开发- Xcode 7添加pch文件
1.打开你的Xcode工程. 在Supporting Files目录下,选择 File > New > File > iOS > Other > PCH File 然后点 ...
- Sass for循环中编译%时报错解决方案
sass功能强大,特别是支持for循环,节省大量开发时间,但是在开发时遇到一个问题,直接使用%时没有问题,当有变量时再加% 单位在编译时报错: 这样没有问题: @for $width from 0 t ...
- 一起做RGB-D SLAM 第二季 (二)
本节目标 我们要实现一个基本的文件IO,用于读取TUM数据集中的图像.顺带的,还要做一个参数文件的读取. 设计参数文件读取的类:ParameterReader 首先,我们来做一个参数读取的类.该类读取 ...
- 【cs229-Lecture17】离散与维数灾难
主要内容: 解决MDP问题的算法: 离散化: 模型MDP的同化型: (model/similator) 拟合值迭代算法: Q函数: 近似政策迭代: 笔记转自:http://blog.csdn.net/ ...
- codeforces A. Bayan Bus(简单模拟)
#include <queue> #include <string> #include <cstdio> #include <cstring> #inc ...
- ruby -- 进阶学习(八)自定义方法route配置
在route中进行修改,添加下面代码 namespace :mycontroller do get 'mymethod' , :on=> :member end end 注: :on => ...