USE MyDatabase GO ———————————————————————— — Построить таблицы. ———————————————————————— CREATE TABLE dbo.Store ( StoreCode char(4) NOT NULL , storeName varchar(40) NOT NULL , StoreAddress varchar(40) NULL , StoreCity varchar(20) NULL , StoreState char(2) NULL , StoreZip char(5) NULL , StorePhoto image NULL BEGIN CALLOUT A ) ON MyDatabase_data TEXTIMAGE_ON MyDatabase_image END CALLOUT A GO CREATE TABLE dbo.Sale ( SaleID integer identity (1,1) NOT FOR REPLICATION , StoreCode char(4) NOT NULL , SaleDate datetime NOT NULL DEFAULT(CURRENT_TIMESTAMP), SaleQty smallint NOT NULL , SalePayTerms varchar (12) NOT NULL CONSTRAINT ck_sale_payterms CHECK (SalePayTerms in (?Net 30?,?Net 60?, ?On Invoice?)) ) ON MyDatabase_data GO ———————————————————————— — Создание ограничений первичного ключа. ———————————————————————— ALTER TABLE dbo.Store WITH NOCHECK BEGIN CALLOUT B ADD CONSTRAINT PK_StoreCode PRIMARY KEY CLUSTERED (StoreCode) ON MyDatabase_data END CALLOUT B GO ALTER TABLE dbo.Sale WITH NOCHECK ADD CONSTRAINT PK_Sale PRIMARY KEY NONCLUSTERED (SaleID) ON MyDatabase_data GO ———————————————————————— — Создание ограничений внешнего ключа. ———————————————————————— ALTER TABLE dbo.Sale ADD CONSTRAINT FK_Sale2Store FOREIGN KEY (StoreCode) REFERENCES dbo.Store (StoreCode) GO ———————————————————————— — Создание некластерного индекса для ограничений внешнего ключа. ———————————————————————— CREATE INDEX idxfk_Sale2Store ON dbo.Sale (StoreCode) WITH PAD_INDEX, FILLFACTOR = 90 ON MyDatabase_index GO ———————————————————————— — Создание кластерного индекса. ———————————————————————— BEGIN CALLOUT C CREATE CLUSTERED INDEX idc_Sale ON dbo.Sale (StoreCode, SaleID) WITH PAD_INDEX, FILLFACTOR = 90 ON MyDatabase_data END CALLOUT C GO —————————————— — Очистка. —————————————— — Удалить существующие ограничения внешнего ключа. IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(?dbo.FK_Sale2Store?) AND OBJECTPROPERTY(id, ?IsForeignKey?) = 1) ALTER TABLE dbo.sale DROP CONSTRAINT FK_Sale2Store GO — Удалить существующие таблицы. IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(?dbo.Sale?) AND OBJECTPROPERTY(id, ?IsUserTable?) = 1) DROP TABLE dbo.Sale GO IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(?dbo.Store?) AND OBJECTPROPERTY(id, ?IsUserTable?) = 1) DROP TABLE dbo.Store GO — Удалить существующую базы данных. USE master GO DROP DATABASE MyDatabase GO