1384/02/28 ﺗﺎرﻳﺦ ﺗﺤﻮﻳﻞ 3 ﺗﻤﺮﻳﻦ ﺷﻤﺎره :در ﻃﺮاﺣﻲ ﺷﺮح داده ﺷﺪه در ﻛﻼس ﺑﻪ ﻃﺮاﺣﻲ زﻳﺮ ﺟﻬﺖ ﻧﻜﻬﺪاري اﻃﻼﻋﺎت ﻣﺮﺑﻮط ﺑﻪ ﻓﺮﻣﻬﺎي ﻳﻚ ﺳﺎزﻣﺎن رﺳﻴﺪﻳﻢ : آﻣﺪه اﺳﺖSQL Server آن ﺑﺮاي ﺳﺎﺧﺖ آن درSQL در زﻳﺮ ﻛﺪ CREATE DATABASE [form] ON (NAME = N'form_Data', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\form_Data.MDF' , SIZE = 2, FILEGROWTH = 10%) LOG ON (NAME = N'form_Log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\form_Log.LDF' , SIZE = 1, FILEGROWTH = 10%) COLLATE SQL_Latin1_General_CP1_CI_AS GO CREATE TABLE [dbo].[form] ( [formName] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [generationDate] [smalldatetime] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[formInstance] ( [formInstanceSerialNo] [int] NOT NULL , [formName] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[formField] ( [fieldTitle] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [formName] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[formInstanceFieldValue] ( [formName] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [formInstanceSerialNo] [int] NOT NULL , [fieldTitle] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [fieldValue] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO 1 ALTER TABLE [dbo].[form] WITH NOCHECK ADD CONSTRAINT [PK_form] PRIMARY KEY CLUSTERED ( [formName] ) ON [PRIMARY] GO ALTER TABLE [dbo].[formInstance] WITH NOCHECK ADD CONSTRAINT [PK_formInstance] PRIMARY KEY CLUSTERED ( [formInstanceSerialNo], [formName] ) ON [PRIMARY] GO ALTER TABLE [dbo].[formField] WITH NOCHECK ADD CONSTRAINT [PK_formField] PRIMARY KEY CLUSTERED ( [fieldTitle], [formName] ) ON [PRIMARY] GO ALTER TABLE [dbo].[formInstanceFieldValue] WITH NOCHECK ADD CONSTRAINT [PK_formFieldValue] PRIMARY KEY CLUSTERED ( [formName], [formInstanceSerialNo], [fieldTitle] ) ON [PRIMARY] GO ALTER TABLE [dbo].[formInstance] ADD CONSTRAINT [FK_formInstance_form] FOREIGN KEY ( [formName] ) REFERENCES [dbo].[form] ( [formName] ) GO ALTER TABLE [dbo].[formField] ADD CONSTRAINT [FK_formField_form] FOREIGN KEY ( [formName] ) REFERENCES [dbo].[form] ( [formName] ) GO ALTER TABLE [dbo].[formInstanceFieldValue] ADD CONSTRAINT [FK_formInstanceFieldValue_formField] FOREIGN KEY ( [fieldTitle], [formName] ) REFERENCES [dbo].[formField] ( [fieldTitle], [formName] ), CONSTRAINT [FK_formInstanceFieldValue_formInstance] FOREIGN KEY ( [formInstanceSerialNo], [formName] ) REFERENCES [dbo].[formInstance] ( [formInstanceSerialNo], [formName] ) GO 2 ﻫﻤﭽﻨﻴﻦ ﭘﺎره اي از داده ﻫﺎي ذﺧﻴﺮه ﺷﺪه در اﻳﻦ ﭘﺎﻳﮕﺎه را در ﺷﻜﻞ زﻳﺮ ﻣﻴﺒﻴﻨﻴﺪ: در ﺷﻜﻞ زﻳﺮ queryﻣﺮﺑﻮط ﺑﻪ FormInstanceﻫﺎﻳﻲ ﻛﻪ از ﻧﻮع ﻓﺮم StaffFormﺑﻮده و ﺗﺎرﻳﺦ ﺗﻮﻟﺪ آﻧﻬﺎ از ’ ‘1980/01/01ﺑﺰرﮔﺘﺮ ﻣﻲ ﺑﺎﺷﺪ ﻧﺸﺎن داده ﺷﺪه اﺳﺖ: -1ﻳﻚ ﻓﺮم ﻃﺮاﺣﻲ ﻧﻤﻮده و دادﻫﺎي ﻣﺮﺑﻮط ﺑﻪ آن را ﺑﺎ ﺳﺎﺧﺘﺎر ﻓﻮق ﺗﺒﺪﻳﻞ ﻧﻤﻮده و ﻳﻚ queryدﻟﺨﻮاه ﺑﻬﻤﺮاه ﻧﺘﻴﺠﻪ آن را ﺑﻨﻮﻳﺴﻴﺪ. -2ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ اﻳﻦ ﻃﺮاﺣﻲ ﻣﺰاﻳﺎ و اﻳﺮادات ﻣﺘﺼﻮر ﺑﺮاي اﻳﻦ ﻃﺮاﺣﻲ را ﻧﺎم ﺑﺒﺮﻳﺪ. 3 ﻣﻲ ﺑﺎﺷﺪ40 و ﻛﻤﺘﺮ از20 ’ ﺑﻮده و ﺣﻘﻮق آﻧﻬﺎ ﺑﻴﺸﺘﺮ از1983/01/01’ ﻫﺎﻳﻲ ﻛﻪ داراي ﺗﺎرﻳﺦ ﺗﻮﻟﺪ ﺑﺰرﮔﺘﺮ ﻟﺰStaffForm ﺑﻨﻮﺳﻴﺪ ﻛﻪquery ﻳﻚ-3 .را ﺑﺎزﮔﺮداﻧﺪ name, را ﺑﺼﻮرت ﻳﻚ ﺟﺪول ﺑﺎ ﺳﺘﻮﻧﻬﺎيStaffForm ﺑﺮ رويQuery ﺑﺮﻧﺎﻣﻪ ﻛﺎرﺑﺮدي ﻣﻴﺨﻮاﻫﻴﻢ ﻧﺘﻴﺠﻪ ﺣﺎﺻﻞ ازUI در ﺻﻮرﺗﻴﻜﻪ ﺑﺮاي ﻣﺜﺎل در-4 ﺑﺎ ﺳﺘﻮﻧﻬﺎي ﻓﻮقRelation زﻳﺮ را ﺑﮕﻮﻧﻪ اي ﺗﻐﻴﻴﺮ داد ﻛﻪ ﻧﺘﻴﺠﻪ آن ﻳﻚquery آﻳﺎ ﻣﻴﺘﻮان, ﻧﺸﺎن دﻫﻴﻢ ﭼﻪ ﭘﻴﺸﻨﻬﺎدي دارﻳﺪbirth Date, Salary ﺑﺎﺷﺪ؟ select FormInstanceSerialNo, FormName From FormInstanceFieldValue Where fieldTitle = 'birthDate' AND fieldValue > '1980/01/01' AND formName = 'staffForm' زﻳﺮ ﭼﻪ ﻧﺘﻴﺠﻪ اي ﻣﻴﺪﻫﺪ؟Query -5 select formInstanceFieldValue.FieldTitle, FieldValue from formInstanceFieldValue, (select distinct FormName, FormInstanceSerialNo, FieldTitle From FormInstanceFieldValue a Where EXISTS(Select * From formInstanceFieldValue Where fieldTitle = 'birthDate' And fieldValue>'1980/01/02' AND formName='StaffForm' AND formInstanceFieldValue.FormInstanceSerialNo=a.FormInstanceSerialNo) AND EXISTS(Select * From formInstanceFieldValue Where fieldTitle = 'birthDate' And fieldValue<'1990/01/02' AND formName='StaffForm' AND formInstanceFieldValue.FormInstanceSerialNo=a.FormInstanceSerialNo)or EXISTS(Select * From formInstanceFieldValue Where fieldTitle = 'salary' And fieldValue>'4000' AND formName='StaffForm' AND formInstanceFieldValue.FormInstanceSerialNo=a.FormInstanceSerialNo) )result Where formInstanceFieldValue.FormName = result.FormName AND formInstanceFieldValue.FormInstanceSerialNo = result.FormInstanceSerialNo AND formInstanceFieldValue.FieldTitle = result.FieldTitle SQL در ﺻﻮرت اﺳﺘﻔﺎده از.ﻫﺎي ﺧﻮد را روي آن اﺟﺮا ﻧﻤﺎﻳﻴﺪQuery ﻫﺎ اﻳﺠﺎد ﻛﺮده وDBMS در ﺻﻮرت اﻣﻜﺎن اﻳﻦ ﺳﺎﺧﺘﺎر را در ﻳﻜﻲ از-6 .( )ﺗﻤﺮﻳﻦ اﺧﺘﻴﺎري. ﻣﻴﺘﻮاﻧﻴﺪ از ﻛﺪ ﻧﻮﺷﺘﻪ ﺷﺪه در ﺑﺎﻻ اﺳﺘﻔﺎده ﻧﻤﺎﻳﻴﺪSERVER 4
© Copyright 2026 Paperzz