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

|