Π”ΠΈΠΏΠ»ΠΎΠΌΡ‹, курсовыС, Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚Ρ‹, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅...
Брочная ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° рСляционной Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π½ΠΈΠΆΠ΅ выполняСт вставку Π½ΠΎΠ²ΠΎΠΉ записи Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Purchase (Π—Π°ΠΊΡƒΠΏΠΊΠΈ). Π’ ΡΠ»ΡƒΡ‡Π°Π΅ Ссли ΠΏΠΎΠΊΡƒΠΏΠ°Π΅ΠΌΡ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ Π½Π° ΡΠΊΠ»Π°Π΄Π΅, Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Sklad (Π‘ΠΊΠ»Π°Π΄) заносится Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния Π΅Π³ΠΎ количСства, Π·Π°Ρ‚Π΅ΠΌ заносится информация Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Purchases. Π”Π°Π»Π΅Π΅ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ количСства ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π½Π° ΡΠΊΠ»Π°Π΄Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ IncSkladAmount. Π’ ΠΈΠ½Ρ„ологичСской ΠΌΠΎΠ΄Π΅Π»ΠΈ прСдставлСны сСмь… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° рСляционной Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

1. Π˜Π½Ρ„ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠ°Ρ модСль

Π’ ΠΈΠ½Ρ„ологичСской ΠΌΠΎΠ΄Π΅Π»ΠΈ прСдставлСны сСмь Ρ‚Π°Π±Π»ΠΈΡ†. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Employe содСрТится 18 сущностСй, Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Departament 3 сущности, Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Post 3 сущности, Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ BuildObject 7 сущностСй, Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Customer 3 сущности, Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Purchases 8 сущностСй, Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Supplier 3 сущности, Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ EmpEducation 4 сущности, Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Sklad 4 сущности .

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ связСй ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° «ΠΎΠ΄ΠΈΠ½ ΠΊ ΠΌΠ½ΠΎΠ³ΠΈΠΌ», Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° связь Ρ‚ΠΈΠΏΠ° «ΠΎΠ΄ΠΈΠ½ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ».

Рис. 1.1. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° связСй ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ.

ОписаниС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сущности прСдставлСно Π² Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ.

Ρ‚Ρ€Ρ€ΠΈΠ³Π΅Ρ€ инфологичСский запрос рСляционный

2. ЛогичСская модСль

Π’Π°Π±Π»ΠΈΡ†Π° «Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ» — Employe

β„–

Имя сущности

Π’ΠΈΠΏ

Π”Π»ΠΈΠ½Π°

ОписаниС

ID

Int

Код сотрудника

SrName

char

Ѐамилия

Name

char

Имя

PtName

char

ΠžΡ‚Ρ‡Π΅ΡΡ‚Π²ΠΎ

Passport

char

НомСр паспорта

INN

char

ИНН

SSGPS

char

НомСр страх. ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°

BrithDate

datetime

Π”Π°Ρ‚Π° роТдСния

Address

char

АдрСс

HomePhone

char

Π”ΠΎΠΌΠ°ΡˆΠ½ΠΈΠΉ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½

MobPhone

char

ΠœΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½

Sex

char

Пол

BeginWDate

datetime

Π”Π°Ρ‚Π° поступлСния Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ

Dep_ID

int

Код ΠΎΡ‚Π΄Π΅Π»Π°

Educ_ID

int

Код записи Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΎΠ± ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ

Post_ID

int

Код долТности

BuildObj_ID

int

Код ΠΎΠ±ΡŒΠ΅ΠΊΡ‚Π° ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°

EndWDate

datetime

Π”Π°Ρ‚Π° ΡƒΠ²ΠΎΠ»ΡŒΠ½Π΅Π½ΠΈΡ с Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’Π°Π±Π»ΠΈΡ†Π° «ΠžΡ‚Π΄Π΅Π»Ρ‹» — Departament

β„–

Имя сущности

Π’ΠΈΠΏ

Π”Π»ΠΈΠ½Π°

ОписаниС

ID

Int

Код ΠΎΡ‚Π΄Π΅Π»Π°

Name

char

НазваниС ΠΎΡ‚Π΄Π΅Π»Π°

Address

char

АдрСс ΠΎΡ‚Π΄Π΅Π»Π°

Π’Π°Π±Π»ΠΈΡ†Π° «Π”олТности» — Post

β„–

Имя сущности

Π’ΠΈΠΏ

Π”Π»ΠΈΠ½Π°

ОписаниС

ID

Int

Код долТности

Name

char

НазваниС долТности

Salary

money

Оклад

Π’Π°Π±Π»ΠΈΡ†Π° «ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°» — BuildObject

β„–

Имя сущности

Π’ΠΈΠΏ

Π”Π»ΠΈΠ½Π°

ОписаниС

ID

Int

Код ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

SrName

char

НазваниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

Discription

text

ОписаниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

Address

char

АдрСс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

BeginBDate

datetime

Π”Π°Ρ‚Π° Π½Π°Ρ‡Π°Π»Π° ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΡΠ²Π°

EndBDate

datetime

Π”Π°Ρ‚Π° окончания ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°

Customer_ID

int

Код Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°

Π’Π°Π±Π»ΠΈΡ†Π° «Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΈ» — Customer

β„–

Имя сущности

Π’ΠΈΠΏ

Π”Π»ΠΈΠ½Π°

ОписаниС

ID

Int

Код Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°

Name

char

НазваниС

EssElem

text

Π Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°

Π’Π°Π±Π»ΠΈΡ†Π° «Π—Π°ΠΊΡƒΠΏΠ»Π΅Π½Π½Ρ‹Π΅ cΡ‹Ρ€ΡŒΠ΅ ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹» — Purchases

β„–

Имя сущности

Π’ΠΈΠΏ

Π”Π»ΠΈΠ½Π°

ОписаниС

ID

Int

Код здСлки

Mat_ID

int

Код ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π½Π° ΡΠΊΠ»Π°Π΄Π΅

Price

money

Π¦Π΅Π½Π° Π·Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ

Amount

int

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΊΡƒΠΏΠ»Π΅Π½ΠΎ

BDate

datetime

Π”Π°Ρ‚Π° Π·Π΄Π΅Π»ΠΊΠΈ

Supplier_ID

int

Код поставщика

Employe_ID

int

Код сотрудника

BuildObj_ID

int

Код ΠΎΠ±ΡŒΠ΅ΠΊΡ‚Π°

Π’Π°Π±Π»ΠΈΡ†Π° «ΠŸΠΎΡΡ‚Π°Π²Ρ‰ΠΈΠΊΠΈ» — Supplier

β„–

Имя сущности

Π’ΠΈΠΏ

Π”Π»ΠΈΠ½Π°

ОписаниС

ID

Int

Код поставщика

Name

char

НазваниС

EssElem

text

Π Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹

Π’Π°Π±Π»ΠΈΡ†Π° «ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅» — EmpEducation

β„–

Имя сущности

Π’ΠΈΠΏ

Π”Π»ΠΈΠ½Π°

ОписаниС

ID

Int

Код записи

EduType

char

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ образования

EduName

char

НазваниС ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ завСдСния

DiplomNum

char

НомСр Π΄ΠΈΠΏΠ»ΠΎΠΌΠ°

TermYear

char

Π“ΠΎΠ΄ окончания

Π’Π°Π±Π»ΠΈΡ†Π° «Π‘ΠΊΠ»Π°Π΄» — Sklad

β„–

Имя сущности

Π’ΠΈΠΏ

Π”Π»ΠΈΠ½Π°

ОписаниС

ID

Int

Код ΠΌΠ°ΠΈΠ΅Ρ€ΠΈΠ°Π»Π°

Name

char

НаимСнованиС

Amount

Int

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ

Unit

char

Π•Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния

3. ЀизичСская модСль

ЛогичСская структура рСляционной Π±Π°Π·Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ инфологичСской ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Microsoft SQL Server 2000. SQL — язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ€Π΅Π»ΡΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ связанной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ сохраняСмой Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ….

Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ созданы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ интСрфСйса Enterprise Manager Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Microsoft SQL Server 2000, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…:

CREATE DATABASE [BuildFirm] ON (NAME = N’BuildFirm', FILENAME=N'G:Program FilesMicrosoft SQL ServerMSSQLdataBuildFirm. mdf', SIZE = 1, FILEGROWTH = 10%) LOG ON (NAME = N’BuildFirm_log', FILENAME = N’G:Program FilesMicrosoft SQL ServerMSSQLdataBuildFirm_log.LDF', FILEGROWTH = 10%)

GO

CREATE TABLE [BuildObject] (

[ID] [int] IDENTITY (1, 1) NOT NULL ,

[Name] [char] (200) COLLATE Cyrillic_General_CI_AS NULL ,

[Discription] [text] COLLATE Cyrillic_General_CI_AS NULL ,

[Address] [char] (30) COLLATE Cyrillic_General_CI_AS NULL ,

[BeginBDate] [datetime] NULL ,

[EndBDate] [datetime] NULL ,

[Customer_ID] [int] NULL ,

CONSTRAINT [PK_BuildObject] PRIMARY KEY CLUSTERED

(

[ID]

) ON [PRIMARY] ,

CONSTRAINT [FK_BuildObject_Customer] FOREIGN KEY

(

[Customer_ID]

) REFERENCES [Customer] (

[ID]

)

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

CREATE TABLE [Customer] (

[ID] [int] IDENTITY (1, 1) NOT NULL ,

[Name] [char] (80) COLLATE Cyrillic_General_CI_AS NULL ,

[EssElem] [text] COLLATE Cyrillic_General_CI_AS NULL ,

CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED

(

[ID]

) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

CREATE TABLE [Departament] (

[ID] [int] IDENTITY (1, 1) NOT NULL ,

[Name] [char] (80) COLLATE Cyrillic_General_CI_AS NULL ,

[Address] [char] (30) COLLATE Cyrillic_General_CI_AS NULL ,

CONSTRAINT [PK_Departaments] PRIMARY KEY CLUSTERED

(

[ID]

) ON [PRIMARY]

) ON [PRIMARY]

GO

CREATE TABLE [EmpEducation] (

[ID] [int] IDENTITY (1, 1) NOT NULL ,

[EduType] [char] (10) COLLATE Cyrillic_General_CI_AS NULL ,

[EduName] [char] (80) COLLATE Cyrillic_General_CI_AS NULL ,

[DiplomNum] [char] (20) COLLATE Cyrillic_General_CI_AS NULL ,

[TermYear] [char] (4) COLLATE Cyrillic_General_CI_AS NULL ,

CONSTRAINT [PK_EmpEducation] PRIMARY KEY CLUSTERED

(

[ID]

) ON [PRIMARY]

) ON [PRIMARY]

GO

CREATE TABLE [Employe] (

[ID] [int] NOT NULL ,

[SrName] [char] (15) COLLATE Cyrillic_General_CI_AS NULL ,

[Name] [char] (15) COLLATE Cyrillic_General_CI_AS NULL ,

[PtName] [char] (15) COLLATE Cyrillic_General_CI_AS NULL ,

[Passport] [char] (12) COLLATE Cyrillic_General_CI_AS NULL ,

[INN] [char] (12) COLLATE Cyrillic_General_CI_AS NULL ,

[SSGPS] [char] (14) COLLATE Cyrillic_General_CI_AS NULL ,

[BrithDate] [datetime] NULL ,

[Address] [char] (30) COLLATE Cyrillic_General_CI_AS NULL ,

[HomePhone] [char] (7) COLLATE Cyrillic_General_CI_AS NULL ,

[MobPhone] [char] (11) COLLATE Cyrillic_General_CI_AS NULL ,

[Sex] [char] (3) COLLATE Cyrillic_General_CI_AS NULL ,

[BeginWDate] [datetime] NULL ,

[Dep_ID] [int] NULL ,

[Post_ID] [int] NULL ,

[Educ_ID] [int] NULL ,

[BuildObj_ID] [int] NULL ,

[EndWDate] [datetime] NULL ,

CONSTRAINT [PK_Employe] PRIMARY KEY CLUSTERED

(

[ID]

) ON [PRIMARY] ,

CONSTRAINT [FK_Employe_BuildObject] FOREIGN KEY

(

[BuildObj_ID]

) REFERENCES [BuildObject] (

[ID]

),

CONSTRAINT [FK_Employe_Departaments] FOREIGN KEY

(

[Dep_ID]

) REFERENCES [Departament] (

[ID]

),

CONSTRAINT [FK_Employe_Post] FOREIGN KEY

(

[Post_ID]

) REFERENCES [Post] (

[ID]

)

) ON [PRIMARY]

GO

CREATE TABLE [Post] (

[ID] [int] IDENTITY (1, 1) NOT NULL ,

[Name] [char] (80) COLLATE Cyrillic_General_CI_AS NULL ,

[Salary] [money] NULL ,

CONSTRAINT [PK_Post] PRIMARY KEY CLUSTERED

(

[ID]

) ON [PRIMARY]

) ON [PRIMARY]

GO

CREATE TABLE [Purchases] (

[ID] [int] IDENTITY (1, 1) NOT NULL ,

[Mat_ID] [int] NULL ,

[Price] [money] NULL ,

[Amount] [int] NULL ,

[BDate] [datetime] NULL ,

[Supplier_ID] [int] NULL ,

[Employe_ID] [int] NULL ,

[BuildObj_ID] [int] NULL ,

CONSTRAINT [PK_Material] PRIMARY KEY CLUSTERED

(

[ID]

) ON [PRIMARY] ,

CONSTRAINT [FK_Material_BuildObject] FOREIGN KEY

(

[BuildObj_ID]

) REFERENCES [BuildObject] (

[ID]

),

CONSTRAINT [FK_Material_Employe] FOREIGN KEY

(

[Employe_ID]

) REFERENCES [Employe] (

[ID]

),

CONSTRAINT [FK_Material_Supplier] FOREIGN KEY

(

[Supplier_ID]

) REFERENCES [Supplier] (

[ID]

),

CONSTRAINT [FK_Purchases_Sklad] FOREIGN KEY

(

[Mat_ID]

) REFERENCES [Sklad] (

[ID]

)

) ON [PRIMARY]

GO

CREATE TABLE [Sklad] (

[ID] [int] IDENTITY (1, 1) NOT NULL ,

[Name] [char] (200) COLLATE Cyrillic_General_CI_AS NULL ,

[Amount] [int] NULL ,

[Unit] [char] (10) COLLATE Cyrillic_General_CI_AS NULL ,

CONSTRAINT [PK_Warehouse] PRIMARY KEY CLUSTERED

(

[ID]

) ON [PRIMARY]

) ON [PRIMARY]

GO

CREATE TABLE [Supplier] (

[ID] [int] IDENTITY (1, 1) NOT NULL ,

[Name] [char] (100) COLLATE Cyrillic_General_CI_AS NULL ,

[EssElem] [text] COLLATE Cyrillic_General_CI_AS NULL ,

CONSTRAINT [PK_Supplier] PRIMARY KEY CLUSTERED

(

[ID]

) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΠ΄Π½Ρƒ запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Employe с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ интСрфСйса QueryAnalyzer:

INSERT INTO Employe (SrName, Name, PtName, Passport, INN, SSGPS, BrithDate, Address, HomePhone, MobPhone, Sex, BeginWDate, Dep_ID, Post_ID, BuildObj_ID)

VALUES ('ΠšΠ°Π³Π°Π½ΠΎΠ²ΠΈΡ‡', 'Π›Π°Π·Π°Ρ€', 'ΠœΠΎΠΈΡΠ΅Π΅Π²ΠΈΡ‡', '97 97 98 743', '267 095 424 567', '678−786−675−98', '07.05.1981', 'ΠΏΡ€. ВракторостроитСлСй 34−56', '235 687', '89 179 876 534', 'ΠΌΡƒΠΆ', '09.10.2001', 1, 1, 1)

4. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° запросов, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΎΠ²

4.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ прСдставлСний

Рис. 4.1. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· 6 Ρ‚Π°Π±Π»ΠΈΡ†

CREATE VIEW dbo. VIEW1

AS

SELECT dbo.Employe.SrName AS Ѐамилия, dbo.Employe.Name AS Имя, dbo.Employe.PtName AS ΠžΡ‚Ρ‡Π΅ΡΡ‚Π²ΠΎ, dbo.Departament.Name AS ΠžΡ‚Π΄Π΅Π»,

dbo.Post.Name AS Π”ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ, dbo.EmpEducation.EduType AS ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, dbo.EmpEducation.EduName AS [Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ Π·Π°Π²Π΅Π΄Π΅Π½ΠΈΠ΅],

dbo.BuildObject.Name AS ΠžΠ±ΡŠΠ΅ΠΊΡ‚, dbo.Customer.Name AS [Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°]

FROM dbo. Employe INNER JOIN

dbo.Departament ON dbo.Employe.Dep_ID = dbo.Departament.ID INNER JOIN

dbo.Post ON dbo.Employe.Post_ID = dbo.Post.ID INNER JOIN

dbo.EmpEducation ON dbo.Employe.Educ_ID = dbo.EmpEducation.ID INNER JOIN

dbo.BuildObject ON dbo.Employe.BuildObj_ID = dbo.BuildObject.ID INNER JOIN

dbo.Customer ON dbo.BuildObject.Customer_ID = dbo.Customer.ID

Рис. 4.2. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· 5 Ρ‚Π°Π±Π»ΠΈΡ†

CREATE VIEW dbo. VIEW2

AS

SELECT dbo.Sklad.Name AS НаимСнованиС, dbo.Purchases.Price AS Π¦Π΅Π½Π°, dbo.Purchases.Amount AS ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ, dbo.Purchases.BDate AS [Π”Π°Ρ‚Π° Π·Π°ΠΊΡƒΠΏΠΊΠΈ],

dbo.Supplier.Name AS ΠŸΠΎΡΡ‚Π°Π²Ρ‰ΠΈΠΊ, dbo.Employe.SrName AS Ѐамилия, dbo.Employe.Name AS Имя, dbo.Employe.PtName AS ΠžΡ‚Ρ‡Π΅ΡΡ‚Π²ΠΎ,

dbo.BuildObject.Name AS ΠžΠ±ΡŠΠ΅ΠΊΡ‚

FROM dbo. Purchases INNER JOIN

dbo.Sklad ON dbo.Purchases.Mat_ID = dbo.Sklad.ID INNER JOIN

dbo.Supplier ON dbo.Purchases.Supplier_ID = dbo.Supplier.ID INNER JOIN

dbo.Employe ON dbo.Purchases.Employe_ID = dbo.Employe.ID INNER JOIN

dbo.BuildObject ON dbo.Purchases.BuildObj_ID = dbo.BuildObject.ID

4.2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΎΠ²

Π”Π°Π½Π½Ρ‹ΠΉ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π°Π²Ρ‚оматичСскоС ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ количСства ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π½Π° ΡΠΊΠ»Π°Π΄Π΅ ΠΏΡ€ΠΈ ΠΈΡ… Π·Π°ΠΊΡƒΠΏΠΊΠ°Ρ…, Ρ‚. Π΅ ΠΏΡ€ΠΈ внСсСнии Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Purchases (Π—Π°ΠΊΡƒΠΏΠΊΠΈ) Π΄Π°Π½Π½Ρ‹ΠΉ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π΅ΡΡ количСство ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Sklad Π½Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ Π·Π°ΠΊΡƒΠΏΠ»Π΅Π½Π½ΠΎΠ³ΠΎ количСства.

IF EXISTS (SELECT name FROM sysobjects

WHERE name = 'IncSkladAmount' and type = 'TR')

DROP TRIGGER IncSkladAmount

GO

CREATE TRIGGER IncSkladAmount

ON Purchases FOR INSERT

AS

DECLARE @amt int

SET @amt = (SELECT inserted. Amount FROM inserted)

SET @amt = (SELECT Sklad. Amount FROM Sklad WHERE

Sklad.ID = ALL (SELECT inserted. Mat_ID FROM inserted))

+ @amt

UPDATE Sklad

SET Sklad. Amount = @amt

WHERE Sklad. ID = ALL (SELECT inserted. Mat_ID FROM inserted)

4.3 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π½ΠΈΠΆΠ΅ выполняСт вставку Π½ΠΎΠ²ΠΎΠΉ записи Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Purchase (Π—Π°ΠΊΡƒΠΏΠΊΠΈ). Π’ ΡΠ»ΡƒΡ‡Π°Π΅ Ссли ΠΏΠΎΠΊΡƒΠΏΠ°Π΅ΠΌΡ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ Π½Π° ΡΠΊΠ»Π°Π΄Π΅, Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Sklad (Π‘ΠΊΠ»Π°Π΄) заносится Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния Π΅Π³ΠΎ количСства, Π·Π°Ρ‚Π΅ΠΌ заносится информация Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Purchases. Π”Π°Π»Π΅Π΅ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ количСства ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π½Π° ΡΠΊΠ»Π°Π΄Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ IncSkladAmount.

CREATE PROCEDURE AddToPurchase

@Name char (200), @Amount int, @Unit char (10),

@Price money, @BDate datetime, @Supplier_ID int,

@Employe_ID int, @BuildObj_ID int

AS

DECLARE @tmp_id int

IF NOT EXISTS (SELECT * FROM Sklad WHERE Sklad.Name = @Name)

BEGIN

INSERT INTO Sklad (Name, Amount, Unit)

VALUES (@Name, 0, @Unit)

SET @tmp_id = (SELECT Sklad. ID FROM Sklad WHERE Sklad.Name = @Name)

INSERT INTO Purchases (Mat_ID, Price, Amount, BDate,

Supplier_ID, Employe_ID, BuildObj_ID)

VALUES (@tmp_id, @Price, @Amount, @BDate, @Supplier_ID,

@Employe_ID, @BuildObj_ID)

END

ELSE

BEGIN

SET @tmp_id = (SELECT Sklad. ID FROM Sklad WHERE Sklad.Name = @Name)

INSERT INTO Purchases (Mat_ID, Price, Amount, BDate,

Supplier_ID, Employe_ID, BuildObj_ID)

VALUES (@tmp_id, @Price, @Amount, @BDate, @Supplier_ID,

@Employe_ID, @BuildObj_ID)

END

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ курсоров T-SQL. Она Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список сотрудников, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… Π²Ρ‹ΡΡˆΠ΅Π΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅.

CREATE PROCEDURE GetTopEducEmp

AS

DECLARE m_cursor CURSOR FOR

SELECT Employe. SrName, Employe.Name, Employe. PtName,

EmpEducation.EduType

FROM Employe INNER JOIN EmpEducation ON Employe. Educ_ID=EmpEducation.ID

GROUP BY Employe. SrName, Employe.Name, Employe. PtName, EmpEducation. EduType

OPEN m_cursor

DECLARE @m_srname VARCHAR (15), @m_name VARCHAR (15), @m_ptname VARCHAR (15), @m_var VARCHAR (10)

FETCH NEXT FROM m_cursor INTO @m_srname, @m_name, @m_ptname, @m_var

WHILE @@fetch_status=0

BEGIN

IF (@m_var = 'Π²Ρ‹ΡΡˆΠ΅Π΅')

PRINT @m_srname+' '+@m_name+' '+@m_ptname

FETCH NEXT FROM m_cursor INTO @m_srname, @m_name, @m_ptname, @m_var

END

CLOSE m_cursor

5. Запросы Π½Π° Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ записСй

5.1 Запрос Π½Π° Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ записСй, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ логичСской ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½

SELECT * FROM Employe

WHERE YEAR (BrithDate) BETWEEN 1980 AND 1990

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ сотрудников Ρ€ΠΎΠ΄ΠΈΠ²ΡˆΠΈΡ…ΡΡ Π² ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ с 1980 ΠΏΠΎ 1990 Π³ΠΎΠ΄Ρ‹.

5.2 Запрос Π½Π° Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ записСй, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ логичСской ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π² мноТСство + запрос Π½Π° Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ записСй ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΡΠ²Π»ΡΡŽΡ‰Π΅ΠΉΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ соСдинСния Π΄Π²ΡƒΡ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΏΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ

SELECT Employe. SrName, Employe.Name, Employe. PtName, Departament.Name as DepName

FROM Employe INNER JOIN Departament

ON Employe. Dep_ID=Departament.ID

WHERE Departament.Name IN ('Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅', 'ΠžΡ‚Π΄Π΅Π» снабТСния', 'Π‘Π£-1')

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список сотрудников Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΡ‚Π΄Π΅Π»Π°Ρ…

5.3 Запрос с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ + запрос Π½Π° Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ записСй с ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ сортировки

SELECT Departament.Name AS [ΠžΡ‚Π΄Π΅Π»], COUNT (Employe.Dep_ID) AS [ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ сотрудников]

FROM Departament INNER JOIN Employe ON

Departament.ID = Employe. Dep_ID

GROUP BY Departament.Name

ORDER BY Departament.Name

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список ΠΎΡ‚Π΄Π΅Π»ΠΎΠ² ΠΈ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ сотрудников Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΡ‚Π΄Π΅Π»Π΅ с ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ ΠΎΡ‚Π΄Π΅Π»ΠΎΠ² ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ.

5.4 Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ запрос Π½Π° Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ записСй, Π² Ρ‚ΠΎΠΌ числС с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² EXIST, ANY, ALL

SELECT Employe. PtName, Employe.Name, Employe. SrName, Post.Name

FROM Employe INNER JOIN Post ON (Employe.Post_ID = Post. ID)

WHERE EXISTS (SELECT Post. Salary

FROM Post

WHERE (Salary>=30 000) AND (Post.ID=Employe.Post_ID))

Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ сотрудников, ΠΎΠΊΠ»Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π»ΠΈΠ±ΠΎ Ρ€Π°Π²Π΅Π½ 30 000.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ