PDA

نسخه کامل مشاهده نسخه کامل : دسترسی به چند جدول مرتبط به هم



Life24
06-03-2013, 12:47
سلام


جدولی دارم به نام Users
که شامل یک ای دی (کلید اصلی) نام و نام و خانوادگی تلفن و آدرس و حساب
برای آدرس یک جدول address درست کردم و توش موارد شهر استان و کد و ... قرار دارم و یک ID درست کردم و کلید اصلی گذاشتم.
در جدول users فیلد آدرس کلید خارجی هست و ربط داده شده به کلید اصلی ID در جدول آدرس.

در مورد شماره حساب فرق میکنه.
یک جدول درست کردم نوع حساب . یک ای دی (کلید اصلی) داره و فیلد بانک و نوع حساب. مثلا ملی سیبا ای دی 5
یک جدول درست کردم به نام شماره حساب. که دارای یک ای دی (کلید اصلی ) هست و فیلد شماره حساب و یک فیلد به نام نوع حساب که کلید خارجی هست ربط داده شده به کلید اصلی جدول نوع حساب

مثلا میشه جدول نوع حساب
ID=5
bank=melli
hessab=siba

جدول شماره حساب
ID=5
shomae=12346

آیا این ساختار اصلا درست هست؟ من خواستم افزونگی کم کنم و جدول نسازیم . هی بزنیم ملی و سیبا
و سوال مهم. ما از جدول users مثلا کاربر شماره 5 رو چطوری میتوینم شماره حساب رو در بیاریم؟
اگر یک جدول ربط داشته باشه با select و برابر قرار دادن کلید خارجی و اصلی دو جدول داده رو میاریم.
اما اینجا شده ارتباط 3 جدول دستور ما چطوری هست؟ که با این ساختار کاربر 5 شماره حساب رو بکشیم بیرون؟
یعنی بزنه کاربر 5 ملی سیبا 12346
شرمنده طولانی شد خواستم دقیق بیان کنم
ممنون

senaps
06-03-2013, 14:47
بله.... این رو بهش میگن نرمال مرحله‌ی سوم و خوبه که بتونین اینجوری طراحی بکنین..!!

البته باید تحلیل، نیازها و .... رو هم دید ولی یه دید کلی و یه روخانی سرهمی، به نظرم درست هستش! :)

Life24
06-03-2013, 16:06
سلام
ببخشید یک جدول در دیتابیس داریم به نام کاربران
میخواهیم از برخی فیلد هایی از این جدول در جدول فاکتور و ایمیل و این قضایا استفاده کنیم
بهترین راه استفاده از
view
است؟ مثلا جدول کاربارن دارای نام و نام خانوادگی و ای دی و پسورد و ایمیل و ادرس و ... هست اما در فاکتور مثلا فقط ادرس و نام و نام خانوادگی و ایمیل تلفن نیاز است.
چنین چیزی را در نمودار
ER
چطور باید نشان دهم؟
ایا باید مثلا برای فاکتور موجودیتی درست کنم و برخی از ویژگی های جدول کاربارن ار برایش بکشم؟ اما دیگر در ایجاد جداول از view استفاده کنم؟ خوب اگر طراح جدول کسی دیگر باشد.چطور می فهمد این view است؟
یا راه دیگری است؟
من چطور این رو در جدول er نمایش دهم. در کتاب چیز خاصی در این مورد ندیدم
سپاس گزارم

senaps
06-03-2013, 16:54
در ER این مسایل نشون داده نمیشه!‌:).....
شما موقع سلکت، جداول رو به هم وصل میکنی(جوین) و در موارد پیشرفته تر حالت های دیگه و راه‌حل های دیگه رو به کار می‌بندی....

اگر بخوای مشخصات یک کاربری رو در داخل مثلا فاکتور نشون بدی، در جدول فاکتور فقط Id یا کلید اصلی رو میذاری و بقیش رو از جدول کاربر میگیری....

مثلا من میخوام داخل فاکتورم، نام و نام خانوداگی و شماره تلفن و ادرس مشتریم و سمتش رو درج بکنم(با مشخصاتی که در جدول فاکتور هستش...)
برای این کار، ما id رو از جدول فاکتور میگیریم، بعد مطابقت میدیم با جداول دیگه....
(مشخصات مشتریان، جدول شماره‌های تلفن، جدول ادرس مشتری‌ها، جدول سمت ها و ....)....
همه‌ی این اطلاعات رو با جوین کردن جدول ها و فقط با داشتن id کاربر به دست میاری! :)

Life24
06-03-2013, 22:10
در ER این مسایل نشون داده نمیشه!‌:).....
شما موقع سلکت، جداول رو به هم وصل میکنی(جوین) و در موارد پیشرفته تر حالت های دیگه و راه‌حل های دیگه رو به کار می‌بندی....

اگر بخوای مشخصات یک کاربری رو در داخل مثلا فاکتور نشون بدی، در جدول فاکتور فقط Id یا کلید اصلی رو میذاری و بقیش رو از جدول کاربر میگیری....

مثلا من میخوام داخل فاکتورم، نام و نام خانوداگی و شماره تلفن و ادرس مشتریم و سمتش رو درج بکنم(با مشخصاتی که در جدول فاکتور هستش...)
برای این کار، ما id رو از جدول فاکتور میگیریم، بعد مطابقت میدیم با جداول دیگه....
(مشخصات مشتریان، جدول شماره‌های تلفن، جدول ادرس مشتری‌ها، جدول سمت ها و ....)....
همه‌ی این اطلاعات رو با جوین کردن جدول ها و فقط با داشتن id کاربر به دست میاری! :)

سُلام
ممنون از شما
منظورم از نمودار ER این نبود.
این 3 جدول پست

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
در نظر بگیریم.
این ER جطور باید رسم کنیم؟
خوب موجودیتی به نام users داریم. از این ویژگی به نام حساب شکل میگیره.
حالا ما دو تا مورد داریم. نوع حساب و شماره حساب. که شماره حساب از نوع حساب سرچشمه میگیره
الان من این دو تا رو چطور رسم کنم؟
در کتابی موردی دیدم. برای آدرس در جدول کاربران. اومده بود ویژگی آدرس رو کشیده بود و شماره پلاک و شهر و استان و .. هم
به همان آدرس وصل کرده بود. یعنی مشخصات ادرس همه وصل شدن به خود ویژگی آدرس و مشخصات آدرس هم با دایره(ویژگی ) نشان داده بودند.
حال ادر حالت کا رما 3 جدول هست باید چطور نشان بدیم؟


مورد بعدی »:
منظورم از نمایش view در نمودار ER این هست که در موجودیت فاکتور من باید نام و تلفن و ادرس و .. رو به عنوان ویژگی اطراف موجودیت فاکتور رسم کنم؟ (میخواهیم در طراحی veiew )بزنیم. یعنی یکبار این مشخصات برای موجودیت کاربارن نوشتیم الان باید برای فاکتور هم در نمودار ER رسم کنیم؟

این 2 مشکل حل بشه خیلی می افتم جلو :n12:
ممنون ازت

senaps
06-03-2013, 22:28
اهان گرفتم چی میگید....!
تا جایی که یادم هست، فقط کلید خارجی رو می‌نویسیم و اون مشخصات رو دیگه نمیاریم تو موجودیت هامون....

اینجا هر موجودیت مستطیل خودش رو داره و کاری به کار دیگران نداره...!!!! ما با جداول کار داریم نه چیزایی که ازشون میگیرم!!!

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

Life24
06-03-2013, 22:41
سلام
ممنون ازت
میشه یکم واضح تر بگی؟ گرفتم میخوام اشتباه نکنم.
خوب این که اومده موجودیت کاربران. ویژگی آدرس رو بهش وصل کرده و به ویژگی آدرس یک سری ویژگی به نام تلفن استان کد و شهر اضافه کرده . درسته . چون در کتاب دیدم.
پس این فیلد ها رو اضافه کرده. فیلد هایی که در جدول میاد.
شما میفرمائید ما فیلد های که در جدول مستقیم و صریح ایجاد میکنیم در نمودار میاریم؟ اونهایی که با view و کلید خارجی میان رو دیگه نمی نویسیم در نمودار ER ?

senaps
06-03-2013, 23:48
بله....

ببینید، بذارید با یه مثال روشن‌تر براتون توضیح بدم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در این مثال که برا دوستمون حل کردیم و خوشبختانه مورد تایید استادشون بوده کاملا و نمره‌ی کامل هم بهش دادن، باز ما همین روند رو رفتیم برای طراحی ER ...

چیزی که من فکر میکنم که درسته(من تخصص چندان بالایی در امور دیتابیس ندارم و فقط دیتابیس های خودم رو طراحی کردم و بس:) )!....
این هستش که در ER، ما فقط موجودیت ها و فیلد‌هاشون رو نشون میدیم... و کاری به کار اطلاعاتی که ازشون گرفته میشه نداریم....
بنابرین، در نمودار مربوط به مثلا در شکل نمودار نوع حساب، ما یه id داریم، یه نام حساب داریم و یه بانک...
بعد برای نمودار شماره حساب، یه ای‌دی داریم، یه شماره حساب و یه فیلد خارجی(ای‌دی نوع حساب)... دیگه نمیایم نوع حساب رو در اینجا هم براش در نظر بگیریم! :)...

shotok
29-04-2013, 21:55
بسم الله الرحمن الرحیم

سلام


جدولی دارم به نام Users
که شامل یک ای دی (کلید اصلی) نام و نام و خانوادگی تلفن و آدرس و حساب
برای آدرس یک جدول address درست کردم و توش موارد شهر استان و کد و ... قرار دارم و یک ID درست کردم و کلید اصلی گذاشتم.
در جدول users فیلد آدرس کلید خارجی هست و ربط داده شده به کلید اصلی ID در جدول آدرس.

در مورد شماره حساب فرق میکنه.
یک جدول درست کردم نوع حساب . یک ای دی (کلید اصلی) داره و فیلد بانک و نوع حساب. مثلا ملی سیبا ای دی 5
یک جدول درست کردم به نام شماره حساب. که دارای یک ای دی (کلید اصلی ) هست و فیلد شماره حساب و یک فیلد به نام نوع حساب که کلید خارجی هست ربط داده شده به کلید اصلی جدول نوع حساب

مثلا میشه جدول نوع حساب
ID=5
bank=melli
hessab=siba

جدول شماره حساب
ID=5
shomae=12346

آیا این ساختار اصلا درست هست؟ من خواستم افزونگی کم کنم و جدول نسازیم . هی بزنیم ملی و سیبا
و سوال مهم. ما از جدول users مثلا کاربر شماره 5 رو چطوری میتوینم شماره حساب رو در بیاریم؟
اگر یک جدول ربط داشته باشه با select و برابر قرار دادن کلید خارجی و اصلی دو جدول داده رو میاریم.
اما اینجا شده ارتباط 3 جدول دستور ما چطوری هست؟ که با این ساختار کاربر 5 شماره حساب رو بکشیم بیرون؟
یعنی بزنه کاربر 5 ملی سیبا 12346
شرمنده طولانی شد خواستم دقیق بیان کنم
ممنون
با سلام
در مورد جدول های کاربر و آدرس که حرفی نیست. اما جدول های نوع حساب و شماره حساب.
به نظرم اینکه برای نوع حساب جدول ایجاد کردید کاملا بجاست. ولی تردید دارم که برای شماره حساب جدول درست کنید یا نه؟!
حالت 1) جدول شماره حساب:آیدی شماره حساب و شماره حساب و نوع حساب
جدول کاربر: آیدی کاربر و ...و آیدی شماره حساب
حالت 2) برای شماره حساب جدول در نظر نگیریم.
جدول کاربر: آیدی کاربر و ...و شماره حساب و آیدی نوع حساب
نظر شخصیم اینه که به سیستمی که روش کار می کنید نگاه کنید؛ اگه نیازمندیها طوریست که اکثر کاربرها یا تمامشون شماره حساب دارند برای شماره حساب جدول در نظر نگیرید. در غیر اینصورت فکر میکنم بهتره جدول در نظر بگیرید.
موفق باشید.