View Full Version : آیا جداول اسنادم رو تو دیتابیس درست طراحی کردم؟
zharfa
جمعه 04 مهر 1393, 19:54 عصر
درود بر دوستان
من برا نگهداری اسناد حسابداری اومدم دو تا جدول ساختم
1. جدولی به نام sanad1 شامل :
id_s : شماره سند
name_s : شرح کلی سند
date_s : تاریخ سند
state_s : وضعیت سند
2.جدولی به نام sanad2 شامل:
id_s : شماره سند
r_id : شماره ردیف
k_id شماره کل
m_id شماره معین
t_id شماره تفصیلی
name شرح
bd بدهکار
bs بستانکار
تو هر دوی این جدولها id_s فیلد کلید شده تو اولی فیلد اصلی و تو دومی کلید خارجی
آیادی این طراحی مشکلی داره؟
و اینکه راهی برای ویرایش کد سند
zharfa
جمعه 04 مهر 1393, 21:07 عصر
من وقت زیادی ندارم خواهشا کسی نیست کمکم کنه؟
mohammad reza beizavi
جمعه 04 مهر 1393, 21:11 عصر
درود
معمولا به ازای هر موجودیت شما یه جدول توی بانک اطلاعاتی تعریف می کنید.
اینجا تمام مشخصات درج شده مربوط به یک سند هستند. دلیلی برای جدا کردن جداول دارید؟؟؟
zharfa
جمعه 04 مهر 1393, 22:12 عصر
تو جدول اول فیلد id_s رو کلید اصلی تعریف کردم
تو جدول دوم دوتا فیلد id_s و r_id v رو با هم انتخاب کردم گزینه کلید رو زدم
همین
mohammad reza beizavi
جمعه 04 مهر 1393, 22:17 عصر
همونجور که قبلا گفتم دلیلی برای تعریف کردن دو جدول برای اسنادتون ندارید.
اما در اون صورت هم دیگه نیازی به تعریف دوتا فیلد به عنوان pk ندارید. همون فیلد pk توی جدول اول رو به عنوان کلید خارجی جدول دوم تعریف کنید
zharfa
جمعه 04 مهر 1393, 22:20 عصر
پس تو جدول اول id_s رو کلید کنم
تو جدول دوم هم فقط همین فیلدو درسته؟
zharfa
جمعه 04 مهر 1393, 22:22 عصر
آخه من اینجا هم شماره ردیفم میتونه تکراری باشه 1و 2و3 برای هر سند شماره سندم که خب تو جدول دوم باز تکرار میشه برا هر ردیف
چاره ای ندارم جز اینکه هر جفتشم بگیرم
mohammad reza beizavi
جمعه 04 مهر 1393, 22:24 عصر
توی جدول دوم همون فیلد رو به عنوان FK تعریف کنید بهتره
zharfa
جمعه 04 مهر 1393, 22:26 عصر
خب روش کلیک راست میکنم فقط یه علامت کلید بیشتر نیست
zharfa
جمعه 04 مهر 1393, 22:33 عصر
شما روش پیشنهادیتون که فقط یه جدوله رو بهم توضیح میدید؟
شمامل چه فیلدهاییه و همینطور کدومشون کلید اصلی ان؟
mohammad reza beizavi
جمعه 04 مهر 1393, 22:34 عصر
فیلدی که توی جدول اولی به عنوان pk دارید. حالا یه فیلد توی جدول دوم از همون نوع تعریف می کنید.
حالا روی این فیلد توی جدول دوم کلیک کن و گزینه relationship رو بزن. توی صفحه جدید add رو بزن و از اونجا جلوی Table and column specification یه علامت ... هست بزن و عناصر FK رو مشخص کن. بعدشم Ok
یه راه دیگه هم هست و اونم اینکه توی diagram جداولت رو add کنی و با ماوس از pk جدول اول بکشی تا روی فیلد توی جدول دوم و بعد همین مشخصات برات میاد و کارت رو ادامه میدی.
zharfa
جمعه 04 مهر 1393, 23:04 عصر
من روش شما رو رفتم منتاهال تو جدول دوم نمیذاره فیلد سند تکراری بشه که
داده ها باید اینطور باشه تو جدول دوم
1 1
1 2
1 3
2 1
2 2
2 3
اما این روشی که شما گفتید نمیذاره دومین سطر رو با شماره سند 1 درج کنم
mohammad reza beizavi
جمعه 04 مهر 1393, 23:10 عصر
اکی
الان مشخص شد که به ازای هر موجودیت توی جدول اول شما مبخواید چند موجودیت/ توی جدول دوم داشته باشید
پس توی جدول دوم یه Id برای خود جدول باید داشته باشد و یه فیلد هم برای FK که با id جدول اول ارتباط داره
zharfa
جمعه 04 مهر 1393, 23:11 عصر
اصلا از جدول دوم فیلد کلید رو کلا بر میدارم
میشه جدولی بدون فیلد اصلی
الآن جواب میده ویرایشش اما نمیدونم چقدر درسته وجود جدولی بدون فیلد اصلی
mohammad reza beizavi
جمعه 04 مهر 1393, 23:14 عصر
کار ددست برای ارتباط یک به چند همینی هست که توی پست 13 گفتم. اما با این روشی که الان کار می کنید هم درسته
zharfa
جمعه 04 مهر 1393, 23:16 عصر
اکی
الان مشخص شد که به ازای هر موجودیت توی جدول اول شما مبخواید چند موجودیت/ توی جدول دوم داشته باشید
پس توی جدول دوم یه Id برای خود جدول باید داشته باشد و یه فیلد هم برای FK که با id جدول اول ارتباط داره
خب فیلد جدول دوم که گفتید یه id داشته باشه همون r_id هستش شمارنده ردیفها
و دوباره همون id_s رو هم تو جدول دوم لحاظ کردم اما فقط کنار فیلد id_r علامت کلید هست کنار id_s خالیه ولی تو ریلشن لحاظ شده که برا جدول 2 فیلد خارجیه
حالا اینجا چون ردیف رو یه بار برا سند اول 1 دادم دیگه نمیذاره برا سند دوم 1 بدم
mohammad reza beizavi
جمعه 04 مهر 1393, 23:24 عصر
از این ساختار یه عکس بذارید، توضیحاتتون سخته راستش
zharfa
جمعه 04 مهر 1393, 23:25 عصر
روشی که من کار میکنم اینه که تو جدول دوم دو تاشو فیلد اصلی کردم ضعفم هم فقط و فقط تو ویرایشه که نمیشه
zharfa
جمعه 04 مهر 1393, 23:29 عصر
این جدول
123930
mohammad reza beizavi
جمعه 04 مهر 1393, 23:29 عصر
مشکلتون هم فقط و فقط همینه، آخه اگر رو دوتا فیلد key تعریف بشه یعنی اینکه هیچ ترکیب مشابهی از این دوتا نمیتونه توی جدول باشه.
دلیلی نداره که دوتاش رو بذارید pk
یانجور که ارتباط یک به چند جداولتون یک به یک میشه!!!!!:متفکر:
zharfa
جمعه 04 مهر 1393, 23:30 عصر
اینم جدول 2
123931
zharfa
جمعه 04 مهر 1393, 23:35 عصر
ببینید با توجه به عکسا
و فیلد کلید ها
بدرستی درج میشه فقط ویرایش انجام نمیشه
از هر دوتا جدول که میخوای ویرایش کنی خطا میده که تو اون یکی کلیده
جالبه وقتی از جدول دوم فیلد کلیدارو دوتاشم برمیدارم هم درجش درست کار میکنه هم ویرایشش
ولی خب نمیشه که جدولی فیلد کلید نداشته باشه که
mohammad reza beizavi
جمعه 04 مهر 1393, 23:45 عصر
پست 20 رو با دقت بخون
zharfa
جمعه 04 مهر 1393, 23:50 عصر
مشکلتون هم فقط و فقط همینه، آخه اگر رو دوتا فیلد key تعریف بشه یعنی اینکه هیچ ترکیب مشابهی از این دوتا نمیتونه توی جدول باشه.
دلیلی نداره که دوتاش رو بذارید pk
یانجور که ارتباط یک به چند جداولتون یک به یک میشه!!!!!:متفکر:
میدونید اگر هر دو تاشو فیلد بگیرم بهتره نبایدم شکل مشابه باشه
مثلا من برای سند 1 فقط یدونه ردیف 1 دارم
اینش درسته
اما ویرایشش واقعا شاخ شده
zharfa
شنبه 05 مهر 1393, 00:03 صبح
واقعا موندم توش
از دوستان حاضر کسی نیست یاری برسونه؟
zharfa
شنبه 05 مهر 1393, 00:12 صبح
الآن شما میگید من چیکار کنم؟
zharfa
شنبه 05 مهر 1393, 00:14 صبح
فیلد کلیدارو بردارم؟
که هم درجش جواب بده هم ویرایشش؟
اصلا اینطوری منطقی هست؟
یا اگر باید فیل کلید هم باشه بالاخره باید یه راهی برای ویراش وجود داشته باشه دیگه
zharfa
شنبه 05 مهر 1393, 11:31 صبح
بالاخره حل شد
ضمن تشکر از آقای صادقیان عزیز راه حل رو که خیلی ساده بوده رو میذارم اینجا قابل توجه بقیه دوستان
تنها کار لازم اینه که گزینه Cascade Update رو روی Design جدول اول روی این فیلد فعال کنیم
یا اینکه یک تریگر برای اصلاح اون بنویسیم.
درغیر اینصورت اجازه تغییر رو بهمون نمیده.
گزینه اول مارو کفایت کرد
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.