توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : relationship بین جداول دیتابیس در مامبو
ghahremanimehdi
08-27-2009, 03:11 PM
سلام
من میخوام ارتباط بین جداول دیتابیس در مامبو ببینم به چه صورت است . ایا برنامه ای هست که این ارتباط رو نشون بده ؟
من میخوام یک مهندسی معکوس انجام بدم تا کمی مهارتم در طراحی برنامه های تحت وب بیشتر بشه ، شما چه روشی رو پیشنهاد میکنید؟
Mambo 4.6 Database Schema - pdf (<b><font color=red>فقط کاربران عضو انجمن می توانند لینک ها را مشاهده کنند</font></b>)
ghahremanimehdi
08-27-2009, 06:53 PM
ممنون. ولی اینو من قبلا از اینجا :<b><font color=red>فقط کاربران عضو انجمن می توانند لینک ها را مشاهده کنند</font></b> دیده بودم.
من میخوام بدونم در php myadmin از کجا میشه به این relation ها پی برد؟ در کدوم نرم افزار میشه این ارتباط بین جداول رو مشاهده و ادیت کرد؟
ارتباط بین جداول الزاما طوری نیست که از phpmyadmin مشخص بشه.
چون طراحی پایگاه داده صرفا در جداول دیتابیس خلاصه نمی شه. بلکه برقراری ارتباط به کد ها هم بر می گرده.
در هر صورت، اصل وجود ارتباط در این فایل مشخص شده. شما باید وجود ارتباط رو در جداول پیدا کنید.
مثلا در جدول #__contents فیلدی هست برای مشخص کردن شناسه مجموعه و در جدول #__categories فیلدی برای مشخص کردن شناسه مجموعه.
هر طور بخوام توضیح بدم، تا با مقدمات پایگاه داده آشنایی نداشته باشید، متوجه این موضوع نخواهید شد.
توصیه می کنم کتاب بانک اطلاعات علمی کاربردی، دانشگاه علم و صنعت، دکتر مصطفی حق جو رو مطالعه کنید.
این بهترین راهی هست تا درک مناسبی از پایگاه داده پیدا کنید.
ghahremanimehdi
08-27-2009, 10:45 PM
من با مفاهیم اولیه پایگاه داده مثل ارتباط جداول - inner , outer join - نرمالیزه کردن جداول و ... تا حدودی آشنا هستم.
ولی میخوام در عمل بدونم چطوری این ارتباط بین جداول ایجاد میشه؟ یعنی میخواستم بدونم مراحل ایجاد یک برنامه ی تحت وبی که با دیتابیس کار میکنه (مثل مامبو) به چه صورت هست ؟
آیا ابتدا جداول دیتابیس و ارتباط هاشون طراحی میشن ؟ به نظر شما بهترین کتاب برای درک عمیق و فراگیری برنامه های تحت وب دیتابیسی چه کتابیست ؟ من الان مجموعه ای عظیم از کتابهای PHP MySQL و ASP.NET SQL Server رو دانلود کردم ولی نمیدونم از کجا شروع کنم و اول چی رو بخونم.
برای اینکه بشه درک عمیقی از برنامه ای مثل مامبو داشت بهتر هست از کجا شروع کنم؟ :-\
اگر با این مفاهیم آشنایی داشته باشید، این مسئله باید برای شما کاملا روشن باشه !
اگر منظورتون دیتابیس هست که راهنمایی کردم. اما اگر منظورتون مراحل ساخت برنامه هست که موضوع فرق می کنه.
فرآیند طراحی دیتابیس رو در همون کتاب به خوبی شرح داده. من توصیه می کنم به جای اینکه 100 کتاب دانلود کنید و هیچ دومش رو نخونید، به کتابفروشی یا کتابخانه مراجعه کنید و یک کتاب رو بگیرید و نه 100 بار، بلکه حداقل یکبار بخونید !
نکات ساده برای درک عمیق! (<b><font color=red>فقط کاربران عضو انجمن می توانند لینک ها را مشاهده کنند</font></b>)
سلام
دوست عزیز این بحث کمی تخصصی هست
در database اول ببین میخوام چه دیتا بیسی را کار کنی برای مثال mysql که مامبو و ... الان دارند استفاده می کنند
بین mysql چند موتور یا ماشین برای ذخیره و بازیابی اطلاعات داره که innodb , myisam است .
اما تفاوت این هست که innodb کلید خارجی و کلا ارتباط های قوی بین جداول را پشتیبانی می کنه ولی myisam این کار نمیتوانه انجام بده یا خلاصه تر بگم امکانات ارتباطی کمتری داره ولی از سرعت پردازش بالایی برخورددار است بنابراین
اکثر برنامه های تحت وب مانند cms ها از این موتور استفاده می کنند
اما جواب اصلی شما پس دنبال ارتباطات در cms ها نگرد چون بیشتر از کلید اصلی استفاده می کنند و برای بهبود جستجو و ارتباط بین جداول از زبان برنامه نویسی مانند php استفاده می کنند یعنی در جدول متن برای این که بگن برای کدام موضوع هست یک فیلد برای شماره یا همان id اصلی موضوع در جدول متن می سازند تا با خود زبان php در آن ذخیره می کنند و ازکلید خارجی خبری نیست .
در صورتی که طراحی نرم افزار این کار رو خود دیتابیس با کلید خارجی انجام میده .
و البته در cms ها چیز هایی که ممکنه جستجو بشه را index می کنند تا سرعت بهبود پیدا کنه. ( فیلد هایی که در شرط where قرار میگیرند را فهرست میکنند)
من را ببخشید جسارت کردم اگر جاهایی را اشتباه گفتم انشاالله اساتید تصحیح کنند
درست می فرمایید.
بیشتر از کلید اصلی استفاده می کنند و برای بهبود جستجو و ارتباط بین جداول از زبان برنامه نویسی مانند php استفاده می کنند یعنی در جدول متن برای این که بگن برای کدام موضوع هست یک فیلد برای شماره یا همان id اصلی موضوع در جدول متن می سازند تا با خود زبان php در آن ذخیره می کنند و ازکلید خارجی خبری نیست
من همین همین موضوع رو عنوان کردم، (البته امکان تعریف foreign key هم هست)
منتها این دوستمون گفته بودند که با Innerjoin و ... آشنایی دارند. راستش من نمی دونم اگر با تلفیق آشنایی دارند، پس چه چیزی رو من باید توضیح بدم!
ghahremanimehdi
08-28-2009, 05:10 PM
ممنون ولی پستی که جناب رجبی دادند هنوز برام کمی گنگه.یعنی عملا نمیدونم چطوری میشه در PHP این کار رو کرد.
به نظرتون کدوم منبع رو بهتر هست مطالعه کنم تا کاملا با نحوه ی بازیابی و ذخیره ی محتوا در جداول دیتابیس در برنامه های تحت وب آشنا بشم؟
سلام گنگ نیست
برای مثال یک جدول داریم با این فیلد ها
id : primary
name
حالا یک جدول داریم با این فیلد ها
id : primary
name
topic-id
description
جدول اول اسمش topic و بعدی post
وقتی می خواهیم اطلاعات وارد post کنید باید id مربوط به موضوع آن پست را در فیلد topic-id نگر داریم پس قبلش لیست از تمام موضوع ها تهیه میکنیم
بعد این در فرم در قسمتی میخوام قرار میدیم و وقتی پست میشه id موضوع ما در topic-id گذاشته میشه .
پس ما در دیتابیس ارتباطی تعریف نکردیم بلکه در محیط برنامه نویسی این را گنجاندیم.
<p>سرویس :
<select name="service" id="sevice" >
<option value="<?php echo $row['id'];?>" title="<?php echo $row['name']; ?>"><?php echo $row['name']; ?></option>
<?php
$data=data_select("service","all",0);
while ($row=mysql_fetch_array($data)) {
if ($row['id']==$session['service']) continue;
?>
<option value="<?php echo $row['id'];?>" title="<?php echo $row['name']; ?>"><?php echo $row['name']; ?></option>
<?php }
$data=data_select("teeth",$session['teeth'],0);
$row=mysql_fetch_array($data);
?>
</select>
</p>
تابع select_data هم کارش انتخاب جدوال هست.
این هم یک نمننه کد بالا میره محتوایات جدولی را میخوانه و id آنرا در فرم قرار میده تا وقتی پست شد در جدول دیگر قرار بگیره.
امیدوارم که خوب توضیح داده باشم.
یا علی
ممنون ولی پستی که جناب رجبی دادند هنوز برام کمی گنگه.یعنی عملا نمیدونم چطوری میشه در PHP این کار رو کرد.
من می خواستم توضیحی بدم، اما دیدم شما نوشتید با join و ... آشنایی دارید، نمی دونم واقعا دیگه چه چیزی رو باید توضیح بدم!
اما به زبان ساده تر و بدون استفاده از شکل متعارف join توضیح میدم. به این کد دقت کنید :
SELECT a.title, c.title FROM #__content AS a, #__categories AS c WHERE a.catid=c.id
با توجه به اینکه شناسه id در جدول مجموعه ها کلید اصلی هست، و همچنین شناسه مجموعه ی هر مطلبی (که برابر با مقدار id متناظر با مجموعه ی اون مطلب، در جدول مجموعه ها هست) ، در در یک فیلد به نام catid در جدول مطالب ذکر میشه.
این کد، عنوان مطالب و عنوان مجموعه متناظر با هر مطلب رو برای شما انتخاب می کنه.
البته یک توضیح بدم که این کدها ، کدهای پرس و جو به زبان SQL هستند و در PHP با استفاده از توابعی دقیقا عین این پرس و جو اجرا میشه.
بطور خاص در Mambo از توابع داخلی API برای کار با دیتابیس استفاده میشه که اجرای پرس و جو با دستور (" ")db->setQuery$ امکان پذیر هست.
به نظرتون کدوم منبع رو بهتر هست مطالعه کنم تا کاملا با نحوه ی بازیابی و ذخیره ی محتوا در جداول دیتابیس در برنامه های تحت وب آشنا بشم؟
کتاب آموزش MySQL در 21 روز انتشارات نص تالیف پاچر هم مناسب هست اگر مطالعه کنید.
ghahremanimehdi
08-28-2009, 06:05 PM
ممنون.متاسفانه فروم دکمه تشکر نداره.
vBulletin® v4.2.5, Copyright ©2000-2026, Jelsoft Enterprises Ltd.