YetAnotherForum
სალამი სტუმარს ძებნა | აქტიური თემები | შესვლა | რეგისტრაცია

ფავორიტებში დამატება
ხის სტრუქტურა როგორ გადავიტანო მონაცემთა ბაზაში ასევე C# -ში?
levan omadze Offline
#1 Posted : Wednesday, June 16, 2010 5:24:53 PM

Rank: Member

Medals:

Groups: Registered
Joined: 6/11/2010
Posts: 14
Points: 48
Location: Agara

Thanks: 1 times
Was thanked: 0 time(s) in 0 post(s)
გამარჯობათ?

ხის სტრუქტურა როგორ გადავიტანო მონაცემთა ბაზაში ასევე C# -ში?
მაგალითად?

მაქვს განყოფილებელი
1. ადმინისტრაცია // ადმინისტრაციის შვილი განყოფილებები
ბუღალტერია
კადრები
ლაბორატორია
2. მექანიკური განყოფილება // მექანიკური განყოფილების შვილი განყოფილებები.
შვილი განყოფილება 1
შვილი განყოფილება 2
3. სამშენებლო განყოფილება // სამშენებლო განყოფილების შვილი განყოფილება
შვილი განყოფილება 1
შვილი განყოფილება 2

მაგალითად მაუსით დავაკლიკე შვილ განყოფილება ბუღალტერიას, მინდა შვული განყოფილების ანუ ბუღალტერიაში მომუშავე პერსოლალის მომაცემები აისახოს გირდზე.
რომელ შვილ განყოფილებასაც დავაკლიკავ მისი მონაცემები აისახოს გირდზე.

როგორ შეიძლება ამის გაკეთება, პროგრამული კოდით?
Sponsor  
 
Apex ltd. http://www.apex.ge
vajaGM Offline
#2 Posted : Wednesday, June 16, 2010 7:00:48 PM

Rank: Administration

Medals:

Groups: Administrators
Joined: 10/20/2012
Posts: 106
Points: 327
Location: Tbilisi

Thanks: 0 times
Was thanked: 0 time(s) in 0 post(s)
ამ ამოცანას С#-თან ნაკლებად აქვს რაიმე კავშირი. ეს უფრო მონაცემთა ბაზების კითხვაა .
გთხოვთ სხვა შემთხვევაში, კითხვები დასვათ შესაბამის თემებში (SQL Server).
ასევე: გარკვევით ჩამოაყალიბოთ ამოცანა და მოახდინოთ სატესტო მონაცემების წინასწარი მომზადება



ახლა კი ვეცდებით მოგიყვანოთ მოკლე მაგალითი, თუ როგორ მოახდინოთ ამ ყველაფრის ორგანიზება SQL Server-ისათვის :


1. შევქმნათ საჭირო ცხრილები
BB კოდი:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[DepTable](
    [ID] [int] NOT NULL,
    [DepName] [nvarchar](50) NULL,
    [ParentID] [int] NULL,
CONSTRAINT [PK_DepTable] PRIMARY KEY CLUSTERED
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO



SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[DepData](
    [DepDataID] [int] NOT NULL,
    [DepID] [int] NULL,
    [info1] [date] NULL,
    [info2] [nvarchar](50) NULL,
    [info3] [money] NULL,
CONSTRAINT [PK_DepData] PRIMARY KEY CLUSTERED
(
    [DepDataID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO



ALTER TABLE [dbo].[DepData]  WITH CHECK ADD  CONSTRAINT [FK_DepData_DepTable] FOREIGN KEY([DepID])
REFERENCES [dbo].[DepTable] ([ID])
GO

ALTER TABLE [dbo].[DepData] CHECK CONSTRAINT [FK_DepData_DepTable]
GO

ALTER TABLE [dbo].[DepTable]  WITH CHECK ADD  CONSTRAINT [FK_DepTable_DepTable] FOREIGN KEY([ParentID])
REFERENCES [dbo].[DepTable] ([ID])
GO

ALTER TABLE [dbo].[DepTable] CHECK CONSTRAINT [FK_DepTable_DepTable]
GO


2. შევავსოთ სატესტო მონაცემები DepTable ცხილში

BB კოდი:
--SQL Server 2008
INSERT
INTO            DepTable(ID, DepName, ParentID)
VALUES     

(1,    N'ადმინისტრაცია',NULL),
(2,    N'ბუღალტერია',1),
(3,    N'კადრები',1),
(4,    N'ლაბორატორია',1),
(5,    N'მექანიკური განყოფილება',1),
(6,    N'შვილი განყოფილება 1',    5),
(7,    N'შვილი განყოფილება 2',    5),
(8,    N'სამშენებლო განყოფილება',1),
(9,    N'შვილი განყოფილება 1',    8),
(10,N'შვილი განყოფილება 2',    8)


3. ახლა გამოვიტანოთ იერარქიული სახით ყველა ის მონაცემი (დეპარტამენტი) DepTable ცხრილიდან, რომელიც შედის "ადმინისტრაციაში"
BB კოდი:
-- SQL Server 2005, 2008
DECLARE @parID int;
SET @parID = 1;
WITH cte AS
(
SELECT     ID, DepName, ParentID, 0 AS nlevel
FROM         DepTable
WHERE     (ID = @parID)
UNION ALL
SELECT     a.ID, a.DepName, a.ParentID, b.nlevel + 1 AS nlevel
FROM         DepTable AS a INNER JOIN
                      cte AS b ON b.ID = a.ParentID
)
SELECT ID, DepName, ParentID
FROM cte


-- რეზულტატი :

ქუოტა (Quote):
ID DepName ParentID
----------- -------------------------------------------------- -----------
1 ადმინისტრაცია NULL
2 ბუღალტერია 1
3 კადრები 1
4 ლაბორატორია 1
5 მექანიკური განყოფილება 1
8 სამშენებლო განყოფილება 1
9 შვილი განყოფილება 1 8
10 შვილი განყოფილება 2 8
6 შვილი განყოფილება 1 5
7 შვილი განყოფილება 2 5

(10 row(s) affected)


4. ახლა კი იგივე SELECT-ით გამოვიტანოთ იერარქიული სახით ყველა ის მონაცემი (დეპარტამენტი) DepTable ცხრილიდან, რომელიც შედის "სამშენებლო განყოფილება"-ში
BB კოდი:
-- SQL Server 2005, 2008
DECLARE @parID int;
SET @parID = 8;
WITH cte AS
(
SELECT     ID, DepName, ParentID, 0 AS nlevel
FROM         DepTable
WHERE     (ID = @parID)
UNION ALL
SELECT     a.ID, a.DepName, a.ParentID, b.nlevel + 1 AS nlevel
FROM         DepTable AS a INNER JOIN
                      cte AS b ON b.ID = a.ParentID
)
SELECT ID, DepName, ParentID
FROM cte


-- რეზულტატი :
ქუოტა (Quote):
ID DepName ParentID
----------- -------------------------------------------------- -----------
8 სამშენებლო განყოფილება 1
9 შვილი განყოფილება 1 8
10 შვილი განყოფილება 2 8

(3 row(s) affected)



5. ახლა კი ვცადოთ იმ მონაცემების გამოტანა DepData ცხრილიდან, რომლებიც შეესაბამება "სამშენებლო განყოფილება"-სა და მის დაქვემდებარებაში მყოფ ყველა სხვა განყოფილებას

BB კოდი:
DECLARE @parID int;
SET @parID = 8;
WITH cte AS
(
SELECT     ID, DepName, ParentID, 0 AS nlevel
FROM         DepTable
WHERE     (ID = @parID)
UNION ALL
SELECT     a.ID, a.DepName, a.ParentID, b.nlevel + 1 AS nlevel
FROM         DepTable AS a INNER JOIN
                      cte AS b ON b.ID = a.ParentID
)
SELECT     d.DepDataID, d.DepID, d.info1, d.info2, d.info3
FROM         DepData AS d INNER JOIN
                      DepTable AS t ON d.DepID = t.ID
vajaGM attached the following image(s):
DepTable Diagram.PNG (12kb) downloaded 11 time(s).
ქუოტა (Quote):
1 user thanked vajaGM for this useful post.
levan omadze on 6/21/2010
Users browsing this topic
Guest
ფავორიტებში დამატება
Forum Jump  
თქვენ არ შეგიძლიათ დაწეროთ ახალი თემა ამ ფორუმში.
თქვენ არ შეგიძლიათ გასცეთ პასუხი, თემას, ამ ფორუმში .
თქვენ არ შეგიძლიათ წაშალოთ თქვენი პოსტი ამ ფორუმში.
თქვენ არ შეგიძლიათ ჩაასწოროთ თქვენი პოსტი ამ ფორუმში.
თქვენ არ შეგიძლიათ შექმნათ გამოკითხვა ამ ფორუმში.
თქვენ არ შეგიძლიათ ხმის მიცემა ამ ფოუმში.

YAFVision Theme by Jaben Cargman (Tiny Gecko)
Powered by YAF | YAF © 2003-2009, Yet Another Forum.NET
This page was generated in 0.136 seconds.