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