PDA

View Full Version : برقراری ارتباط در برخی از جدول ها



jaykob
یک شنبه 29 خرداد 1390, 16:09 عصر
سلام دوستان

من یک دیتابیس با یکسری خانه ها و جداول دارم که از نظر ارتباطی می خوام ببینم به چه شکل بهتره که ارتباط داشته باشند با توجه به column ها که در اجرا کوئری ها مناسب باشه من اطلاعات زیادی در این رابطه ندارم ممنون می شم بررسی کنید و ارتباطات رو اعمال کنید و بفرمایید با تشکر




USE [course]
GO
/****** Object: Table [dbo].[SISTER] Script Date: 06/19/2011 16:24:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[SISTER](
[id#1] [smallint] NOT NULL,
[id#2] [smallint] NOT NULL,
[Father] [smallint] NOT NULL,
[Mother] [smallint] NOT NULL,
[Add#] [smallint] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[PARENTS] Script Date: 06/19/2011 16:24:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[PARENTS](
[Relation] [char](10) NOT NULL,
[id#1] [nchar](10) NOT NULL,
[id#2] [smallint] NOT NULL,
[Add#] [smallint] NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object: Table [dbo].[NAMES] Script Date: 06/19/2011 16:24:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[NAMES](
[id#] [smallint] NOT NULL,
[Name] [char](30) NOT NULL,
[Family] [char](50) NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object: Table [dbo].[ME] Script Date: 06/19/2011 16:24:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[ME](
[Add#] [smallint] NOT NULL,
[id#] [smallint] NOT NULL,
[Name] [char](30) NOT NULL,
[Family] [char](50) NOT NULL,
[City] [char](30) NULL,
[Relation] [char](10) NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object: Table [dbo].[Dead] Script Date: 06/19/2011 16:24:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Dead](
[id#] [smallint] NOT NULL,
[Year] [smallint] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[BROTHERS] Script Date: 06/19/2011 16:24:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[BROTHERS](
[id#1] [smallint] NOT NULL,
[id#2] [smallint] NOT NULL,
[Father] [smallint] NOT NULL,
[Mother] [smallint] NOT NULL,
[Add#] [smallint] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[BIRTHDATE] Script Date: 06/19/2011 16:24:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[BIRTHDATE](
[id#1] [smallint] NOT NULL,
[Year] [smallint] NOT NULL,
[Month] [char](10) NOT NULL,
[Day] [smallint] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object: Table [dbo].[ADDRESS] Script Date: 06/19/2011 16:24:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[ADDRESS](
[Add#] [smallint] NOT NULL,
[Country] [char](30) NOT NULL,
[City] [char](30) NULL,
[Address] [char](200) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO

Galawij
دوشنبه 30 خرداد 1390, 07:29 صبح
سلام
سیستم رو شرح بدید و این که چه جداولی رو تعریف کردید با چه فیلدهایی.

jaykob
دوشنبه 30 خرداد 1390, 10:55 صبح
سلام
سیستم رو شرح بدید و این که چه جداولی رو تعریف کردید با چه فیلدهایی.

ممنون دوست عزیز اما من کد بالا رو generate کردم برای همین موضوع که شما ملاحظه کنید شما اگر وقت دارید کد بالا رو کوئری بزنید و راهنمایی کنید یک ارتباط ساده و منطقی باشه ممنون

Galawij
دوشنبه 30 خرداد 1390, 11:18 صبح
شما هفت تا جدول درست کردید با نام های (Me,Parents,Names,Sister,Daed,address,Brothers).
الان می خواید چکار کنید ؟؟
هدفتون از این جدول ها چیه؟؟
سیستم رو تعریف کنید تا مشخص بشه که باید چیکار کرد. بعد تصمیم به ایجاد ارتباط بین جداول گرفت. ممکنه تحلیل اشتباه باشه.

jaykob
دوشنبه 30 خرداد 1390, 11:59 صبح
شما هفت تا جدول درست کردید با نام های (Me,Parents,Names,Sister,Daed,address,Brothers).
الان می خواید چکار کنید ؟؟
هدفتون از این جدول ها چیه؟؟
سیستم رو تعریف کنید تا مشخص بشه که باید چیکار کرد. بعد تصمیم به ایجاد ارتباط بین جداول گرفت. ممکنه تحلیل اشتباه باشه.

ممنون از جوابتون

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

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

با تشکر

Galawij
دوشنبه 30 خرداد 1390, 12:35 عصر
باورکنید با توضیح و این جدولهای که من دیدم خیلی سخته بشه دقیق راهنمایی کرد. ولی به هر حال با توجه به توضیحات شما، جداول رو این طور می شه تعریف کرد که:

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


:لبخندساده:اما روشی که من پیشنهاد می کنم به این صورت هست:

یک جدول برای مشخصات خود شخص(کد شخص، نام، نام خانوادگی، شماره شناسنامه و ....)
یک جدول برای افراد خانواده(کد، کد شخص، کد عضو، کد مدرک، نام، نام خانوادگی، شماره شناسنامه، کد ملی، نام پدر، تاریخ تولد، تاریخ فوت، شماره تماس، آدرس و ....)
یک جدول برای نوع عضو خانواده(کد عضو ، نام عضو) اطلاعات این جدول می تونه پدر، مادر، خواهر و برادر باشد.
یک جدول برای مدارک تحصیلی (کد مدرک، نام مدرک)
نوشته های با رنگ قرمز کلید خارجی هستند.