MCDBA学习BLOG

来源:互联网 发布:优化软件游戏助手 编辑:程序博客网 时间:2024/06/07 03:19
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

MCDBA数据库设计学习BLOG

 2004-4-14

规划存储管理

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


练习:
USEmaster
GO

CreatedatabaseExamNotes
ONPrimary
(Name='ExamNotes_data',filename='d:/testdata/ExamNotes_data.mdf',
size=4MB,
MAXSIZE=16MB,
FileGrowth=2mb),
FILEGROUPSUCCESS
(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%) 
logon(NAME='ExamNotes1_Log',
filename='d:/testdata/ExamNotes_Log.ldf',
size=4Mb,maxsize=16mb)


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

ALTERDATABASEExam
ADDFILEGROUPExamFG1
GO

ALTERDATABASEexam
ADDFILE
(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)
TOFILEGROUPExamFG1

ALTERDATABASEexam
MODIFYFILEGROUPexamFG1DEFAULT
GO

欲删除文件组,必先删除该组文件
ALTERDATABASEEXAM
REMOVEFILEexam_data4

ALTERDATABASEEXAM
REMOVEFILEexam_data3

ALTERDATABASEEXAM
REMOVEFILEGROUPEXAMFG1

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

 

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

相应的改变默认文件的语法为:
ALTERDATABASE<DatabaseName>
MODIFYFILEGROUP<Filegroupname>DEFAULT


确保数据完整性

实现约束的6种
Altertable<tablename>
Addconstraint<constraintname>
<constrainttype><constraintdefine>

1UniqueKey
altertableproduct
addconstraintuk_product
UNIQUE(SupplierID,Productname)

2PrimaryKey
Altertableproduct
addconstraintpl_product
PRIMARYKEY(ProductID)


3ForeignKey
Altertableproduct
addconstraintfk_product_suppliers
ForeignKEY(ProductID)referencessuppliers(ID)


4CHECK约束
Altertableproduct
addconstraintDF_product_UNITSinstock
CHECK(Unitsinstock>=0orUnitsINStockisNULL)


5NOTNULL约束
Altertableproduct
ALTERCOLUMNDISCONTINUEDBITNOTNULL
6默认约束

ALTERTABLEPRODUCT
ADDCONSTRAINTDF_PRODUCTS_UNITPRICE
DEFAULT0FORUNITPRICE

 

 

 

 

 

 

 


 
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击