MCDBA 数据库设计学习BLOG

设计|数据|数据库|数据库设计

MCDBA 数据库设计学习BLOG

 2004-4-14

规划存储管理

1 有且只能有一个主数据文件
2 数据和事务日志永远不能在同一个文件中
3 两个数据库之间不能共享一个文件组
4 当估算数据库大小时,应该使用表和索引.
5 无限文件增长只受操作系统和物理磁盘容量的限制.
6 文件组,就是把一组文件象单个文件一样的处理,这些文件的组称为文件组,
  通过它实现了一个数据库存放在多个磁盘可能,通过练习理解了文件组的概念。

练习:
USE master
GO

Create database ExamNotes
ON Primary
(Name ='ExamNotes_data',filename='d:\testdata\ExamNotes_data.mdf' ,
size=4MB,
MAXSIZE=16MB,
FileGrowth=2mb),
FILEGROUP SUCCESS
(Name ='ExamNotes1_data1',Filename='d:\testdata\ExamNotes1_data1.ndf',
size=4Mb,
maxsize=8mb,
filegrowth =500kb),
(Name ='ExamNotes1_data2',Filename='d:\testdata\ExamNotes2_data2.ndf',
size=4Mb,filegrowth=10%) 
log on(NAME ='ExamNotes1_Log',
filename='d:\testdata\ExamNotes_Log.ldf',
size=4Mb,maxsize=16mb)

向数据库中添加由两个文件组成的文件组

ALTER DATABASE Exam
ADD FILEGROUP ExamFG1
GO

ALTER DATABASE exam
ADD FILE
( NAME = exam_data3,
  FILENAME = 'd:\testData\exam_data3.ndf',
  SIZE = 5MB,
  MAXSIZE = 100MB,
  FILEGROWTH = 5MB),
( NAME = exam_data4,
  FILENAME = 'd:\testData\exam_data4.ndf',
  SIZE = 5MB,
  MAXSIZE = 100MB,
  FILEGROWTH = 5MB)
TO FILEGROUP ExamFG1

ALTER DATABASE exam
MODIFY FILEGROUP examFG1 DEFAULT
GO

欲删除文件组,必先删除该组文件
ALTER DATABASE EXAM
REMOVE FILE exam_data4

ALTER DATABASE EXAM
REMOVE FILE exam_data3

ALTER DATABASE EXAM
REMOVE FILEGROUP EXAMFG1

一个有用的SP:
EXEC sp_spaceused  USERTABLENAME
查出某个表的记录数和使用的空间大小,因为在实际应用中会出现某个表超大的情形.

 

在数据库中为表指定文件组的用法如ON后面子句,注意ON [PRIMARY]中的[PRIMARY]是主文件组而非主键.
CREATE TABLE [ACC_PAYMETHOD_MSTR] (
 [PAYMETHODID] [nvarchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
 [PAYMETHODNAME] [nvarchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
 [STAMPUSERNAME] [STAMPUSERNAME] NULL ,
 [STAMPDATETIME] [STAMPDATETIME] NULL
) ON [PRIMARY]

相应的改变默认文件的语法为:
ALTER DATABASE <Database Name>
MODIFY FILEGROUP <Filegroup name> DEFAULT

确保数据完整性

实现约束的6种
Alter table <table name>
Add constraint <constraint name>
<constraint type><constraint define>

1 Unique Key
alter table product
add constraint uk_product
UNIQUE (SupplierID,Productname)

2 Primary Key
Alter table product
add constraint pl_product
PRIMARY KEY (ProductID)

3 Foreign Key
Alter table product
add constraint fk_product_suppliers
Foreign KEY (ProductID) references suppliers (ID)

4 CHECK 约束
Alter table product
add constraint DF_product_UNITSinstock
CHECK (Unitsinstock >=0 or UnitsINStock is NULL)

5 NOT NULL 约束
Alter table product
ALTER COLUMN DISCONTINUED BIT NOT NULL
6 默认约束

ALTER TABLE PRODUCT
ADD CONSTRAINT DF_PRODUCTS_UNITPRICE
DEFAULT 0 FOR UNITPRICE

 

 

 

 

 

 

 

 

时间: 2024-10-03 03:04:29

MCDBA 数据库设计学习BLOG的相关文章

马列矛盾理论告诉我们:数据库设计就是‘主体’和‘关系’的设计

MySql 官方工具 WorkBench 设计数据库要点分析 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 巧妇难为无米之炊,研究这些内容,我们得先有 MySql 和 WorkBench,下面

恭迎万亿级营销(圈人)潇洒的迈入毫秒时代 - 万亿user_tags级实时推荐系统数据库设计

标签 PostgreSQL , 标签 , 推荐系统 , 实时圈人 , 数组 , gin , gist , 索引 , rum , tsvector , tsquery , 万亿 , user , tag , 淘宝 背景 我们仅用了PostgreSQL的两个小特性,却解决了业务困扰已久的大问题. 推荐系统是广告营销平台的奶牛,其核心是精准.实时.高效. 这么多广告平台,到底谁家强?谁的核心牛逼? 1. 精准,指对用户的描述精准,通常需要基于大量的用户行为数据,经历深度学习后形成的用户画像,或称之为标

11个重要的数据库设计规则

原文出处:http://www.oschina.net/question/267865_48311 很好的一篇思考数据库设计的文章,有些规则在日常设计中有意无意的在违背,从而导致设计出不良的程序.转载,保存,并提醒自己,要做好数据库的设计. 总结: 规则 1:弄清楚将要开发的应用程序是什么性质的(OLTP 还是 OPAP)? 规则 2:将你的数据按照逻辑意义分成不同的块,让事情做起来更简单 规则 3:不要过度使用 "规则 2" 规则 4:把重复.不统一的数据当成你最大的敌人来对待 规则

UML在关系型数据库设计中的应用

设计|数据|数据库|数据库设计 1. 介绍 许多人认为面向对象概念和关系型数据库相互不一致,并且不能结合.事实上完全相反!经过灵活的使用,一个关系型数据库能够为面向对象(OO)模型提供一套优秀的实现.同样的模型能够用来开发编程代码和关系型数据库结构. 关系型数据库技术是意义深远的.强大的,但它比许多开发商使你相信的要难得多.单个表是简单易懂的.直观的.但由数以百计的表组成(这是常见的)的应用要彻底了解是相当困难的.这正是OO模型有用之处. OO模型使你深入地.连贯地思考问题. OO模型提供一种问

[收藏]数据库设计中的反规范技术探讨

规范|设计|数据|数据库|数据库设计   数据库设计中的反规范技术探讨   注:这是很久以前在一个论坛看到的文章,觉得写的不错:本着与众多业内人士交流.传播思想的目的展示在此,原论坛的名称已经不记得了,当时亦是转载.你可以任意转载此文,但由此引起的任何道德.法律纠纷与http:blog.csdn.net/aceplus无关,且http:blog.csdn.net/aceplus保证没有将此文用作任何商业和非法用途:如果您是本文的原作者,认为http:blog.csdn.net/aceplus转载

浅谈数据库设计技巧(上)

技巧|设计|数据|数据库|数据库设计 说到数据库,我认为不能不先谈数据结构.1996年,在我初入大学学习计算机编程时,当时的老师就告诉我们说:计算机程序=数据结构+算法.尽管现在的程序开发已由面向过程为主逐步过渡到面向对象为主,但我还是深深赞同8年前老师的告诉我们的公式:计算机程序=数据结构+算法.面向对象的程序开发,要做的第一件事就是,先分析整个程序中需处理的数据,从中提取出抽象模板,以这个抽象模板设计类,再在其中逐步添加处理其数据的函数(即算法),最后,再给类中的数据成员和函数划分访问权限,

统一身份认证子系统数据库设计与数据访问层实现

访问|设计|数据|数据库|数据库设计 目 录 一 引言--------------------------------1 二 需求分析 (一)系统的功能要求------------------------2 (二)系统的性能要求------------------------2 (三)运行环境要求-------------------------2 (四)开发工具简介-------------------------2 三 总体设计 (一)系统模块化分----------------------

循序渐进开发WinForm项目(1) 数据库设计和项目框架的生成

在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资 料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我们每天面对的太多东西了,觉得很多都稀松平常了,即使很细微的地方,可能我们都已经 形成习惯了.反过来,如果我们切换到其他领域,如IOS.android,那么开始我们可能对里面很多设计 的规则不甚了解,开始可能也是一头雾水. 本篇想作为我的<循序渐进开发WinForm项目>系列的开篇,主要介绍数据库设计方面注

数据库设计过程

数据库也不是独立存在的,它总是与具体的应用相关的,为具体的应用而建立的.因此在设计数据库之前我们必须明确应用的目的,在设计数据库的时候也应时刻考虑用户需求,数据库与具体应用之间是相辅相成的关系. 数据库的设计过程一般包括以下几个步骤: 确定建立数据库的目的和收集数据: 建立概念模型: 建立数据模型: 实施与维护数据库: 1.确定建立数据库的目的和收集数据 数据库设计过程的第一个阶段是确定建立数据库的目的和收集数据.通常,我们也把确定建立数据库的目的称为需求分析.需求分析的任务就是通过详细调查要处