PDA

View Full Version : ساختار جداول قطعات سیستم



fakhravari
یک شنبه 25 خرداد 1393, 21:31 عصر
با سلام
دوستان یه نظر بدین برای درست کردن مثلا این برنامه چه جداولی نیاز است.

برنامه من ثبت اطلاعات سیستم است.

مثال

مادربورد - گیگابایت - مدل x

Ram king ddr2 2 gb

manitor Lg flat 17

و شاید مثلا برای ما مهم نباشه
کار شبکه مدل و ظرفیت چقدره
مثلا باشه

کارت شبکه موجود

یا شاید مدل نداشته باشه مثل : پاور 450w

alireza_s_84
یک شنبه 25 خرداد 1393, 22:37 عصر
با سلام
دوستان یه نظر بدین برای درست کردن مثلا این برنامه چه جداولی نیاز است.

برنامه من ثبت اطلاعات سیستم است.

مثال

مادربورد - گیگابایت - مدل x

Ram king ddr2 2 gb

manitor Lg flat 17

و شاید مثلا برای ما مهم نباشه
کار شبکه مدل و ظرفیت چقدره
مثلا باشه

کارت شبکه موجود

یا شاید مدل نداشته باشه مثل : پاور 450w

دو راه برای اینکار وجود داره.
اگر میزان ستونهایی که مقدار اونها null میمونه از اونهایی که مقدار میگیرن کمتر باشه بهتره که خصیصه ها به صورت ستون تعرفی کنید و هرجایی لازم نبود مقدار ندین.
راه دوم معمولا زمانی استفاده میشه که شما تعداد ستونهای زیادی رو بدون مقدار رها میکنید و اینطوری فضای null زیادی توی جدول وجود خواهد داشت. راه دوم استفاده از یک جدول واسط با سه ستون هست:
1- آیدی خصیصه (ویژگی)
2- ستون مقدار
3- آیدی قطعه
بعد شما یک جدول برای خصیصه ها خواهید داشت با دو ستون:
1- آیدی خصیصه
2- نام خصیصه
کلیدهای خارجی هم که فکر میکنم مشخص باشه

fakhravari
یک شنبه 25 خرداد 1393, 22:59 عصر
با مثال بهتر جا می افتاد

alireza_s_84
یک شنبه 25 خرداد 1393, 23:53 عصر
با مثال بهتر جا می افتاد

120216

120217

120218

fakhravari
دوشنبه 26 خرداد 1393, 17:59 عصر
جدول Piece توضیح میدین.

alireza_s_84
دوشنبه 26 خرداد 1393, 19:03 عصر
جدول Piece توضیح میدین.

جدول اصلی نگهداری قطعات میشه. میتونه شامل یک ستون دیگه باشه بنام ModelId که کلید خارجی داشته باشه به جدولی با ستون های زیر:
1- modelId
2-Brands
برای مثال هنگام افزودن یک قطعه جدید:
Ram 2G DDR3 Kingmax
Ram از جدول نوع قطعه میاد
2G از جدول خصیصه ها میاد (Size)
DDR3 از جدول خصیصه ها (Technology)
Kingmax هم از جدول مدل
در واقع هنگام افزودن قطعه فوق ما ابتدا به جدول قطعه شناسه ی رم رو به جدول قطعات اضافه میکنیم در اینجا 1 و مدل قطعه که از جدول مدل میاد
سپس به جدول خصیصه ها دو تا رکورد اضافه میکنیم رکورد اول برای شناسه قطعه و سایز و رکورد دوم برای شناسه قطعه و تکنولوژی
در واقع ما فقط دوتا خصیصه رو برای رم مقدار دهی میکنیم.

fakhravari
دوشنبه 26 خرداد 1393, 19:20 عصر
چطوری بتونیم یک متن کنیم مثلاما رم یک بار ثبت میکنیم با ظرفیت 1 گیگبعد چطوری نام سازنده بدیم؟

fakhravari
دوشنبه 26 خرداد 1393, 19:36 عصر
علی رضا زحمتت دادم ممنونم ازت.میشه ساختار جداول بدی همراه با داده تستی با یه query من نگرفتم چطوری رشته Ram 2G DDR3 Kingmax بسازیhttp://barnamenevis.org/images/smilies/yahoo/114.gif

fakhravari
دوشنبه 26 خرداد 1393, 19:48 عصر
خروجیhttp://www.pic.tooptarinha.com/images/l0qiomoqnd11xhef9e1.png

fakhravari
دوشنبه 26 خرداد 1393, 21:21 عصر
داش علی شما نمونت ضمیمه کن مرسی.
خودم یه چیزی سر هم کردم خروجی درست میده اما روش حساب نمیکنم یکمی ناهماهنگ اما خروجی خوب میده
CREATE TABLE [dbo].[Constructor]( [ID] [int] IDENTITY(1,1) NOT NULL,
[ConstructorName] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_Constructor] 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 IDENTITY_INSERT [dbo].[Constructor] ON
INSERT [dbo].[Constructor] ([ID], [ConstructorName]) VALUES (1, N'Intel')
INSERT [dbo].[Constructor] ([ID], [ConstructorName]) VALUES (2, N'Gigabyte')
INSERT [dbo].[Constructor] ([ID], [ConstructorName]) VALUES (3, N'Asus')
INSERT [dbo].[Constructor] ([ID], [ConstructorName]) VALUES (4, N'King Mastor')
INSERT [dbo].[Constructor] ([ID], [ConstructorName]) VALUES (5, N'AMD')
INSERT [dbo].[Constructor] ([ID], [ConstructorName]) VALUES (6, N'LG')
INSERT [dbo].[Constructor] ([ID], [ConstructorName]) VALUES (7, N'Samsoung')
INSERT [dbo].[Constructor] ([ID], [ConstructorName]) VALUES (8, N'NVIDIA')
SET IDENTITY_INSERT [dbo].[Constructor] OFF
/****** Object: Table [dbo].[Section] Script Date: 06/16/2014 21:53:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Section](
[ID] [int] IDENTITY(1,1) NOT NULL,
[SectionName] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_Section] 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 IDENTITY_INSERT [dbo].[Section] ON
INSERT [dbo].[Section] ([ID], [SectionName]) VALUES (1, N'MB')
INSERT [dbo].[Section] ([ID], [SectionName]) VALUES (2, N'VGA')
INSERT [dbo].[Section] ([ID], [SectionName]) VALUES (3, N'CPU')
INSERT [dbo].[Section] ([ID], [SectionName]) VALUES (4, N'RAM')
INSERT [dbo].[Section] ([ID], [SectionName]) VALUES (5, N'Sound Card')
INSERT [dbo].[Section] ([ID], [SectionName]) VALUES (6, N'LAN')
INSERT [dbo].[Section] ([ID], [SectionName]) VALUES (7, N'Manitor')
INSERT [dbo].[Section] ([ID], [SectionName]) VALUES (8, N'HDD')
SET IDENTITY_INSERT [dbo].[Section] OFF
/****** Object: Table [dbo].[Model] Script Date: 06/16/2014 21:53:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Model](
[ID] [int] IDENTITY(1,1) NOT NULL,
[SectionID] [int] NOT NULL,
[ModelName] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_Model] 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 IDENTITY_INSERT [dbo].[Model] ON
INSERT [dbo].[Model] ([ID], [SectionID], [ModelName]) VALUES (1, 4, N'DDR')
INSERT [dbo].[Model] ([ID], [SectionID], [ModelName]) VALUES (2, 4, N'DDR2')
INSERT [dbo].[Model] ([ID], [SectionID], [ModelName]) VALUES (3, 4, N'Normal')
INSERT [dbo].[Model] ([ID], [SectionID], [ModelName]) VALUES (4, 5, N'Relatek')
INSERT [dbo].[Model] ([ID], [SectionID], [ModelName]) VALUES (5, 5, N'Onboard')
INSERT [dbo].[Model] ([ID], [SectionID], [ModelName]) VALUES (6, 6, N'دارد')
INSERT [dbo].[Model] ([ID], [SectionID], [ModelName]) VALUES (7, 3, N'Core i7')
INSERT [dbo].[Model] ([ID], [SectionID], [ModelName]) VALUES (8, 7, N'Flatron')
INSERT [dbo].[Model] ([ID], [SectionID], [ModelName]) VALUES (9, 1, N'X M.B')
INSERT [dbo].[Model] ([ID], [SectionID], [ModelName]) VALUES (10, 2, N'GeForce GTS 450')
SET IDENTITY_INSERT [dbo].[Model] OFF
/****** Object: Table [dbo].[Capacity] Script Date: 06/16/2014 21:53:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Capacity](
[ID] [int] IDENTITY(1,1) NOT NULL,
[SectionID] [int] NOT NULL,
[CapacityName] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_Capacity] 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 IDENTITY_INSERT [dbo].[Capacity] ON
INSERT [dbo].[Capacity] ([ID], [SectionID], [CapacityName]) VALUES (1, 3, N'2.2')
INSERT [dbo].[Capacity] ([ID], [SectionID], [CapacityName]) VALUES (2, 7, N'17')
INSERT [dbo].[Capacity] ([ID], [SectionID], [CapacityName]) VALUES (3, 7, N'14')
INSERT [dbo].[Capacity] ([ID], [SectionID], [CapacityName]) VALUES (4, 4, N'128 MB')
INSERT [dbo].[Capacity] ([ID], [SectionID], [CapacityName]) VALUES (5, 4, N'256 MB')
INSERT [dbo].[Capacity] ([ID], [SectionID], [CapacityName]) VALUES (6, 4, N'512 MB')
INSERT [dbo].[Capacity] ([ID], [SectionID], [CapacityName]) VALUES (7, 4, N'1 GB')
INSERT [dbo].[Capacity] ([ID], [SectionID], [CapacityName]) VALUES (8, 3, N'2.5')
INSERT [dbo].[Capacity] ([ID], [SectionID], [CapacityName]) VALUES (9, 3, N'2')
INSERT [dbo].[Capacity] ([ID], [SectionID], [CapacityName]) VALUES (10, 8, N'300 GB')
INSERT [dbo].[Capacity] ([ID], [SectionID], [CapacityName]) VALUES (11, 2, N'1 GB')
INSERT [dbo].[Capacity] ([ID], [SectionID], [CapacityName]) VALUES (13, 2, N'128 MB')
INSERT [dbo].[Capacity] ([ID], [SectionID], [CapacityName]) VALUES (14, 2, N'256 MB')
INSERT [dbo].[Capacity] ([ID], [SectionID], [CapacityName]) VALUES (15, 2, N'512 MB')
SET IDENTITY_INSERT [dbo].[Capacity] OFF
/****** Object: Table [dbo].[System] Script Date: 06/16/2014 21:53:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[System](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ModelID] [int] NULL,
[ConstructorID] [int] NULL,
[CapacityID] [int] NULL,
[SysID] [nvarchar](10) NOT NULL,
CONSTRAINT [PK_System] 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 IDENTITY_INSERT [dbo].[System] ON
INSERT [dbo].[System] ([ID], [ModelID], [ConstructorID], [CapacityID], [SysID]) VALUES (1, 2, 1, 7, N'SYS001')
INSERT [dbo].[System] ([ID], [ModelID], [ConstructorID], [CapacityID], [SysID]) VALUES (2, 6, NULL, NULL, N'SYS001')
INSERT [dbo].[System] ([ID], [ModelID], [ConstructorID], [CapacityID], [SysID]) VALUES (5, 7, 5, 8, N'SYS001')
INSERT [dbo].[System] ([ID], [ModelID], [ConstructorID], [CapacityID], [SysID]) VALUES (6, 9, 2, NULL, N'SYS001')
INSERT [dbo].[System] ([ID], [ModelID], [ConstructorID], [CapacityID], [SysID]) VALUES (7, NULL, 4, 10, N'SYS001')
INSERT [dbo].[System] ([ID], [ModelID], [ConstructorID], [CapacityID], [SysID]) VALUES (8, 10, 8, 15, N'SYS001')
SET IDENTITY_INSERT [dbo].[System] OFF
/****** Object: View [dbo].[View_2] Script Date: 06/16/2014 21:53:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[View_2]
AS
SELECT TOP (100) PERCENT SectionName, ConstructorName, ModelName, CapacityName, SysID, ID
FROM (SELECT dbo.Section.SectionName, dbo.Constructor.ConstructorName, dbo.Model.ModelName, Capacity_1.CapacityName, dbo.System.SysID, dbo.System.ID
FROM dbo.Model INNER JOIN
dbo.Section ON dbo.Model.SectionID = dbo.Section.ID INNER JOIN
dbo.System ON dbo.Model.ID = dbo.System.ModelID LEFT OUTER JOIN
dbo.Capacity AS Capacity_1 ON Capacity_1.ID = dbo.System.CapacityID AND Capacity_1.SectionID = dbo.Section.ID LEFT OUTER JOIN
dbo.Constructor ON dbo.System.ConstructorID = dbo.Constructor.ID
UNION
SELECT Section_2.SectionName, Constructor_2.ConstructorName, '' AS ModelName, Capacity_1.CapacityName, System_2.SysID, System_2.ID
FROM dbo.Capacity AS Capacity_1 INNER JOIN
dbo.Section AS Section_2 ON Capacity_1.SectionID = Section_2.ID RIGHT OUTER JOIN
dbo.System AS System_2 ON Capacity_1.ID = System_2.CapacityID LEFT OUTER JOIN
dbo.Constructor AS Constructor_2 ON System_2.ConstructorID = Constructor_2.ID
WHERE (System_2.ID NOT IN
(SELECT System_1.ID
FROM dbo.Model AS Model_1 INNER JOIN
dbo.Section AS Section_1 ON Model_1.SectionID = Section_1.ID INNER JOIN
dbo.System AS System_1 ON Model_1.ID = System_1.ModelID LEFT OUTER JOIN
dbo.Capacity AS Capacity_1 ON Capacity_1.ID = System_1.CapacityID AND Capacity_1.SectionID = Section_1.ID LEFT OUTER JOIN
dbo.Constructor AS Constructor_1 ON System_1.ConstructorID = Constructor_1.ID))) AS U
ORDER BY SectionName

alireza_s_84
دوشنبه 26 خرداد 1393, 22:11 عصر
خروجیhttp://www.pic.tooptarinha.com/images/l0qiomoqnd11xhef9e1.png
این کوئری رو اجرا کنید تا نتیجه رو ببینید:
SELECT Piece.PieceId, PieceType.Name,b.TitleFROM Piece INNER JOIN
PieceType ON Piece.PieceType = PieceType.PieceTypeId
left outer join
(Select f2.PieceId, Stuff(
(SELECT N'/' + CONVERT(Varchar, Value)
FROM PieceFeatures as f1
where f1.PieceId=f2.PieceId FOR XML PATH(''),TYPE )
.value('text()[1]','nvarchar(max)'),1,1,N'')AS Title
From PieceFeatures as f2 group by PieceId) as b on b.PieceId = Piece.PieceId

میتونید از تابع Stuff برای سرهم کردن ستون ها استفاده کنید. اگر نیازمند کوئری های پیچیده تر هستین میتونید در مورد این تابع بیشتر جستجو کنید.

fakhravari
سه شنبه 27 خرداد 1393, 17:41 عصر
سلام
داش علی اسکریپت جداول با داده هاش میزاری

alireza_s_84
سه شنبه 27 خرداد 1393, 18:43 عصر
سلام
داش علی اسکریپت جداول با داده هاش میزاری
http://Trainbit.com/files/2006191884/db.rar

fakhravari
چهارشنبه 28 خرداد 1393, 21:34 عصر
داش علی این جدول Piece اضافی نیست:متفکر:
کاربردش نفهمیدم Piece

alireza_s_84
جمعه 30 خرداد 1393, 00:59 صبح
داش علی این جدول Piece اضافی نیست:متفکر:
کاربردش نفهمیدم Piece




استفاده از این جدول بسته به سناریوی شما داره. اگر قرار باشه چند نوع ram مختلف یا هارد مختلف رو ثبت کنید بی شک این جدول لازمه. جدول قطعات میتونه از این هم گسترده تر باشه مثلا تاریخ خرید قطعه ، قیمت خرید ، شرکت گارانتی کننده ، تاریخ اتمام گارانتی و ...

مهدی هادیان2
شنبه 31 خرداد 1393, 10:41 صبح
بسم الله الرحمن الرحیم

بعد شما یک جدول برای خصیصه ها خواهید داشت با دو ستون:
1- آیدی خصیصه
2- نام خصیصه
با سلام
فکر میکنم به فیلد نوع هم نیاز است که مشخص کند فیلد مورد نظر از چه نوعی باشد.
شما دارید جدول ها را به صورت داینامیک طراحی میکنید؛ به نظر من در موردی که شما فرمودید این پیاده سازی لازم نیست.
شاید بهتر باشه برای قطعات مختلف کامپیوتر کلاس های مختلفی در نظر بگیرید و کار رو به راحتی دنبال کنید.
موفق باشید.

fakhravari
شنبه 31 خرداد 1393, 15:39 عصر
به نظر من ساختار خوبی داره مهدی (http://barnamenevis.org/member.php?242358-%D9%85%D9%87%D8%AF%DB%8C-%D9%87%D8%A7%D8%AF%DB%8C%D8%A7%D9%862)
--------------------
داش علی یه سوال

1) برای هر قطعه پس باید در Piece ایدی اون وارد بشه؟ در عکس بالا 2 بار رم با مشخصات مختلف داده شده حال برای ویرایش رم 1 باید چطوری داده ها را واکشی کرد؟

alireza_s_84
شنبه 31 خرداد 1393, 15:43 عصر
به نظر من ساختار خوبی داره مهدی (http://barnamenevis.org/member.php?242358-%D9%85%D9%87%D8%AF%DB%8C-%D9%87%D8%A7%D8%AF%DB%8C%D8%A7%D9%862)
--------------------
داش علی یه سوال

1) برای هر قطعه پس باید در Piece ایدی اون وارد بشه؟ در عکس بالا 2 بار رم با مشخصات مختلف داده شده حال برای ویرایش رم 1 باید چطوری داده ها را واکشی کرد؟
خب با شناسه قطعه میشه این کار رو کرد. برای اینکار شما قاعدتا لیست قطعات رو توی گرید به کاربر نشون میدین. هر قطعه هم یک کد منحصر به فرد داره. در واقع ممکنه 1000 تا رم با مارک های مختلف تو جدول داشته باشین ولی صد در صد آیدی اونها با هم فرق میکنه. درست متوجه مشکلتون نشدم.

alireza_s_84
شنبه 31 خرداد 1393, 15:45 عصر
بسم الله الرحمن الرحیم

با سلام
فکر میکنم به فیلد نوع هم نیاز است که مشخص کند فیلد مورد نظر از چه نوعی باشد.
شما دارید جدول ها را به صورت داینامیک طراحی میکنید؛ به نظر من در موردی که شما فرمودید این پیاده سازی لازم نیست.
شاید بهتر باشه برای قطعات مختلف کامپیوتر کلاس های مختلفی در نظر بگیرید و کار رو به راحتی دنبال کنید.
موفق باشید.
لطفا نمودار جداول و ارتباطات بین اونها رو قرار بدین تا بهتر بتونیم بحث کنیم!!!

مهدی هادیان2
یک شنبه 01 تیر 1393, 16:18 عصر
بسم الله الرحمن الرحیم

لطفا نمودار جداول و ارتباطات بین اونها رو قرار بدین تا بهتر بتونیم بحث کنیم!!!
با سلام
به نظرم هر کدوم از اجزای کامپیوتر که 1- لازم است اطلاعاتی راجع بهش ثبت شود و 2- دارای مشخصات متفاوتی می باشند؛ کلاس های مجزایی هستند.
بنابراین می توان بنا به نیاز سیستم هارد و مین و رم و ... رو کلاس های مجزایی در نظر گرفت که هر کدام ویژگی های خودشون رو دارند.
مادربورد - گیگابایت - مدل x : سایز، مدل

: Ram king ddr2 2 gb : مدل، تکنولوژی و سایز

ناگفته نمونه که در پیاده سازی این کلاس ها از وراثت استفاده میشود ولی با توجه به اینکه وراثت در SQL پشتیبانی نمی شود؛ فکر نمیکنم چاره ای داشته باشد.
موفق باشید.

fakhravari
یک شنبه 01 تیر 1393, 19:55 عصر
با سلام
یه فیلد Sorttinyintبرای مرتب سازی مثلا
H.D.D 20 GB/Maxtor/Sata

H.D.D Sata Maxtor 20 GB

و یه فیلد ID برای جدول PieceFeatures

-------------------

این [Features].Sort
سورت چطوری اعمال کنم؟

alireza_s_84
سه شنبه 03 تیر 1393, 22:34 عصر
با سلام
یه فیلد Sorttinyintبرای مرتب سازی مثلا
H.D.D 20 GB/Maxtor/Sata

H.D.D Sata Maxtor 20 GB

و یه فیلد ID برای جدول PieceFeatures

-------------------

این [Features].Sort
سورت چطوری اعمال کنم؟

متوجه منظورت نشدم!!!

fakhravari
چهارشنبه 04 تیر 1393, 16:00 عصر
مثلا چینش
Features بر اساس یک فیلد باشه
FeatureId int
Name nvarchar(50)
Sort tinyint

alireza_s_84
سه شنبه 10 تیر 1393, 17:01 عصر
مثلا چینش
Features بر اساس یک فیلد باشه
FeatureId int
Name nvarchar(50)
Sort tinyint




Order By رو واسه همین گذاشتن دیگه. شما بر اساس هر ستونی که دوست داشته باشین ، نتیجه رو با این عبارت مرتب کنید.

fakhravari
چهارشنبه 11 تیر 1393, 16:59 عصر
خب اره ولی نمیدونم کجای query بزارمش

fakhravari
جمعه 13 تیر 1393, 19:02 عصر
alireza_s_84 (http://barnamenevis.org/member.php?35861-alireza_s_84) منتظرم

fakhravari
سه شنبه 31 تیر 1393, 23:09 عصر
دوستان یه کمکی نمی کنید ،
داش علی نیست.
در مورد مرتب سازی بر اساس sort که گفته بودم.

fakhravari
شنبه 18 مرداد 1393, 18:48 عصر
دوستان نمیخوام تاپیک اضافی زده بشه.
کمکی کنید....

fakhravari
یک شنبه 30 شهریور 1393, 20:58 عصر
دوستان ج نگرفتم