Π‘Π°ΠΊΠ°Π»Π°Π²Ρ€
Π”ΠΈΠΏΠ»ΠΎΠΌΠ½Ρ‹Π΅ ΠΈ курсовыС Π½Π° Π·Π°ΠΊΠ°Π·

ЀизичСскоС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. 
Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы "Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°" с использованиСм ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрной Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

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

Imya_chitatelya d_name /* d_name = varchar (45) not null */,. Alter table chitatel add primary key (nomer_chitatelya); Otchestvo d_name /* d_name = varchar (45) not null */,. Ulica d_name /* d_name = varchar (45) not null */,. Create or alter trigger chitatel_bi0 for chitatel. Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°. Π’Π°Π±Π»ΠΈΡ†Π° 2. Бписок Π΄ΠΎΠΌΠ΅Π½ΠΎΠ². NEW. nomer_chitatelya=gen_id (gen_chitatel, 1); Π’Π°Π±Π»ΠΈΡ†Π° 1. ER… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ЀизичСскоС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы "Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°" с использованиСм ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрной Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ПослС даталогичСского проСктирования запускаСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ администрирования Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Firebird IBExpert ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π² ΡΡ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ срСдствС, создаСм ΠΈ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ Π½ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Firebird «Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°». Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… инсталлируСт инфраструктуру, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ для Π½Π°Ρ‡Π°Π»Π° создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ для постоянного хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… являСтся Ρ‚Π°Π±Π»ΠΈΡ†Π°.

ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ Ρ‚Π°Π±Π»ΠΈΡ†, прСдполагаСтся, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π°Π½Π°Π»ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π° модСль, Π° Ρ‚Π°ΠΊΠΆΠ΅ имССтся ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ прСдставлСниС ΠΎ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°Ρ… Π³Π»Π°Π²Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ ΠΈΡ… Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ…. Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ инфологичСского ΠΈ Π΄Π°Ρ‚алогичСского проСктирования, спроСктировал Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΠΏΠΎΠ»Ρ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ поля ΠΈ ΠΏΠΎΠ»Ρ Not null (см. Π’Π°Π±Π»ΠΈΡ†Π° 1).

Π’ Π΄Π°Π½Π½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… для опрСдСлСния Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… столбцов Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄ΠΎΠΌΠ΅Π½Ρ‹ (см. Π’Π°Π±Π»ΠΈΡ†Π° 2). Π”ΠΎΠΌΠ΅Π½Ρ‹ Π² Firebird схоТи с ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠ΅ΠΉ «Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ». Π₯отя ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅ΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π΄ΠΎΠΌΠ΅Π½Π°. ПослС этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΌΠ΅Π½ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… для опрСдСлСния столбцов любой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° инкапсуляции опрСдСлСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Firebird отсутствуСт логичСский, Π΄Π΅Π½Π΅ΠΆΠ½Ρ‹ΠΉ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄ΠΎΠΌΠ΅Π½Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Π½Ρƒ этим Ρ‚ΠΈΠΏΠ°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ….

Имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Имя поля.

Π’ΠΈΠΏ.

Π”Π»ΠΈΠ½Π°.

ДСсятичная Ρ‡Π°ΡΡ‚ΡŒ.

Имя домСна.

bibliotekor.

Nomer_bibliotekorya.

SMALLINT.

D_INDEXTYPE.

Nomer_otdela.

SMALLINT.

D_INDEXTYPE.

Fio_bibliotekorya.

VARCHAR.

D_NAME.

chitatel.

Nomer_chitatelya.

SMALLINT.

D_INDEXTYPE.

Familiya_4itatelya.

VARCHAR.

D_NAME.

Imya_chitatelya.

VARCHAR.

D_NAME.

adres.

VARCHAR.

D_ADRES.

telefon.

VARCHAR.

D_TEL.

Knigi.

Nomer_knigi.

SMALLINT.

D_INDEXTYPE.

Nomer_otdela.

SMALLINT.

D_INDEXTYPE.

nazvanie_knigi.

VARCHAR.

D_NAME.

kol_vo_stranic.

SMALLINT.

D_INDEXTYPE.

avtor.

VARCHAR.

D_NAME.

id.

SMALLINT.

D_INDEXTYPE.

New_table.

Nomer_knigi.

SMALLINT.

D_INDEXTYPE.

Nomer_otdela.

SMALLINT.

D_INDEXTYPE.

nazvanie_knigi.

VARCHAR.

D_NAME.

kol_vo_stranic.

SMALLINT.

D_INDEXTYPE.

avtor.

VARCHAR.

D_NAME.

izmen.

VARCHAR.

D_NAME.

data_tr.

DATE.

D_DATETYPE.

otdel_knig.

nazvanie_otdela.

VARCHAR.

D_NAME.

Nomer_otdela.

SMALLINT.

D_INDEXTYPE.

kol_vo_knig.

SMALLINT.

D_INDEXTYPE.

telefon.

VARCHAR.

D_TEL.

nomer_bibliotekorya.

SMALLINT.

D_INDEXTYPE.

Vida4a_knig.

Nomer_zapisi.

SMALLINT.

D_INDEXTYPE.

Nomer_knigi.

SMALLINT.

D_INDEXTYPE.

Nomer_bibliotekorya.

SMALLINT.

D_INDEXTYPE.

Nomer_4itatelya.

SMALLINT.

D_INDEXTYPE.

data_vyda4i_knigi.

DATE.

D_DATETYPE.

data_vozvrata_knigi.

DATE.

D_DATETYPE.

Π’Π°Π±Π»ΠΈΡ†Π° 1. ER — модСль Π‘Π”.

Имя домСна.

Π’ΠΈΠΏ.

Π”Π»ΠΈΠ½Π½Π°.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ.

D_INDEXTYPE.

SMALLINT.

VALUE>0.

D_NAME.

VARCHAR.

D_ADRES.

VARCHAR.

D_TEL.

VARCHAR.

D_DATETYPE.

DATE.

VALUE<='TODAY'.

Π’Π°Π±Π»ΠΈΡ†Π° 2. Бписок Π΄ΠΎΠΌΠ΅Π½ΠΎΠ².

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ всС тСорСтичСскиС аспСкты создания Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†. Для этого, запустив IBExpert, Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ SQL Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ мСню Tools->SQL Editor.

Π’ ΠΏΠΎΡΠ²ΠΈΠ²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ пишСм скрипт для создания Π΄ΠΎΠΌΠ΅Π½Π° D_NAME:

CREATE DOMAIN D_NAME AS.

VARCHAR (45) CHARACTER SET WIN1251.

NOT NULL.

COLLATE WIN1251.

ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ создал Π΄ΠΎΠΌΠ΅Π½Ρ‹ D_INDEXTYPE, D_ADRES, D_DATETYPE, D_TEL. (см. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1).

Π‘ΠΎΠ·Π΄Π°Π² Π΄ΠΎΠΌΠ΅Π½Ρ‹, приступаСм ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ Ρ‚Π°Π±Π»ΠΈΡ†. ВсСго Π² Π‘Π” Π±ΡƒΠ΄Π΅Ρ‚ создано ΡˆΠ΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†. Π’Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ связи, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Ρ… ΠΈ Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ. ΠšΡ€ΠΎΠΌΠ΅ связСй эти поля Ρ‚Π°ΠΊΠΆΠ΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ….

БрСдствами IBExpert создаСм Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ chitatel ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ поля, Π² ΡΡ‚ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… ΠΌΠ΅Π±Π΅Π»ΠΈ:

CREATE TABLE CHITATEL (

FAMILIYA_CHITATELYA D_NAME /* D_NAME = VARCHAR (45) NOT NULL */,

IMYA_CHITATELYA D_NAME /* D_NAME = VARCHAR (45) NOT NULL */,

OTCHESTVO D_NAME /* D_NAME = VARCHAR (45) NOT NULL */,

ULICA D_NAME /* D_NAME = VARCHAR (45) NOT NULL */,

NOMER_DOMA D_INDEXTYPE /* D_INDEXTYPE = INTEGER NOT NULL */,

TELEFON D_TEL /* D_TEL = VARCHAR (15) */,

NOMER_CHITATELYA D_INDEXTYPE NOT NULL /* D_INDEXTYPE = INTEGER NOT NULL */);

— Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°

ALTER TABLE CHITATEL ADD PRIMARY KEY (NOMER_CHITATELYA);

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° с Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΎΠΌ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ chitatel

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

CREATE GENERATOR GEN_ID_ CHITATEL;

— Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π°.

CREATE OR ALTER TRIGGER CHITATEL_BI0 FOR CHITATEL

ACTIVE BEFORE INSERT OR UPDATE POSITION 0

AS

begin

IF (NEW.nomer_chitatelya is null) then

NEW.nomer_chitatelya=gen_id (gen_chitatel, 1);

end

ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ создаСм ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π—Π°Π΄Π°Π΅ΠΌ для этих Ρ‚Π°Π±Π»ΠΈΡ† ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ поля, Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹ (см. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1).

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