نمایش نتایج 1 تا 26 از 26

نام تاپیک: طراحی یک دیتابیس

  1. #1

    طراحی یک دیتابیس

    من میخواهم یک دیتا بیس فرضی طراحی کنم:
    writer:name ,family and .. etc
    books:name subject and ...etc
    حالا ماندهام که چه فیلدهایی برای انها اضافه کنم تا بین این دو جدول رابطه برقرار کنم.؟لطفا کاملا شرح دهید
    thanks in advanced....

  2. #2
    1- جداول بانک باید هر کدام یک کلید داشته باشند(یک فیلد که مقدارش unique باشد و بتوان به رکورد های جدول با آن دسترسی داشت مثل book_id در جدول book)
    2- نیاز به جدول واسطه دارید برای ارتباط این دو جدول(البته بدون واسطه هم میشه ولی اگه یک کتاب چند نویسنده داشته باشه و برعکس کارتون مشکل میشه) توی جدول واسطه فیلد کلید جدولbook رو به کلید جدول writer ربط بدید و اگه فیلد های دیگه ای هم دارید اضافه کنید.
    یعنی اینجوری:

    tbl_tree : book_id,writer_id ,...

    3- پیشنهاد می کنم یک کتاب پایگاه داده بگیرید و مبحث نرمال سازی رو مطالعه کنید.

  3. #3
    نقل قول نوشته شده توسط reza_rad
    1- جداول بانک باید هر کدام یک کلید داشته باشند(یک فیلد که مقدارش unique باشد و بتوان به رکورد های جدول با آن دسترسی داشت مثل book_id در جدول book)
    2- نیاز به جدول واسطه دارید برای ارتباط این دو جدول(البته بدون واسطه هم میشه ولی اگه یک کتاب چند نویسنده داشته باشه و برعکس کارتون مشکل میشه) توی جدول واسطه فیلد کلید جدولbook رو به کلید جدول writer ربط بدید و اگه فیلد های دیگه ای هم دارید اضافه کنید.
    یعنی اینجوری:

    tbl_tree : book_id,writer_id ,...

    3- پیشنهاد می کنم یک کتاب پایگاه داده بگیرید و مبحث نرمال سازی رو مطالعه کنید.
    اقا رضا دمت گرم.فقط اگه ممکنه بگو جدول سوم رو چه جوری طراحی کنم.توی em یا qa و چگونه.؟

  4. #4
    نقل قول نوشته شده توسط 13841384
    اقا رضا دمت گرم.فقط اگه ممکنه بگو جدول سوم رو چه جوری طراحی کنم.توی em یا qa و چگونه.؟
    خواهش می کنم.
    فرقی نمی کنه. توی enterprise manager راحت تر می تونی بسازیش.

  5. #5
    در سمپلی که بررای اکسس بود دیدم که در جدول واسطه هر دو ای دی را پرایمری کی کرده بود.ایا اینجا نیز این کار را انجام بدهم.
    آخرین ویرایش به وسیله 13841384 : جمعه 26 اسفند 1384 در 01:56 صبح

  6. #6
    برای ساختن جدول سوم ایا من باید ابتدا ان را طراحی کنم وسپس فیلدهای متناظر ان را با دو جذول دیگر ربلط بدهم.؟

  7. #7
    دوست عزیزم،
    PK بودن این دو فیلد با هم، کار صحیحی هستش.
    طبیعتا تا این جدول سوم ساخته نشه، ارتباط دادن فیلدهای سه جدول به هم، امکان پذیر نیست.

  8. #8
    سلام
    در ساختن جدول سوم من هرچه سعی کردم نتوانستم دو فیلد را به طور همزمان primery کنم.ایا روش خاصی دارد. در ضمن ایا نیاز هست که هر دو قیلد جدول سوم یونیک باشند.منتظر لطف اقای ثباتی و سایر دوستان هستم.

  9. #9
    دوست عزیزم،
    کلید Control رو نگه دارین و با Mouse فیلدها رو انتخاب و Right Click کنید تا هر دو PK بشن.
    بله، لازمه که یونیک باشند

  10. #10
    اقای ثباتی متشکرم

  11. #11
    وقتی که میخواهم به کمک این کد دو فیلد را یونیک کنم این خطا را میدهد:
    Server: Msg 2744, Level 16, State 2, Line 2
    Multiple identity columns specified for table 'link'. Only one identity column per table is allowed.
    حتی در em نیز فقط یک فیلد یونیک را قبول میکند.البته شرمنده ام از اینکه اینقدر سوال میکنم.

  12. #12
    دوست عزیز من فکر نمیکنم که منظور اقای ثباتی این بود که هر دو یونیک باشند .اخه همچین کاری ممکن نیست.

  13. #13
    ظاهرا معنی Identity با یونیک بودن رو ترکیب کردین!!
    یونیک یعنی مقدار تکراری در یک فیلد (یا در ترکیب دو فیلد (یا بیشتر)) وجود نداشته باشه. ممکنه مقادیر این فیلد رو خودتون وارد کنین اما به شکلی که تکراری نداشته باشه. از اونجاییکه معمولا نیاز هست که یک فیلد عددی و یونیک در جدول داشته باشیم، قابلیت Identity به Database Developer این امکان رو میده که به صورت اتوماتیک، عدد تولید بشه و ضمنا یونیک بودن این اعداد تولید شده توسط SQL Server تضمین میشه.
    فیلد Identity فقط یکی برای هر جدول ممکنه. پس منظور من روشن تر شد: هر دو فیلد در کنار هم میتونین یونیک باشند، نه Identity! ضمنا اینکه دو فیلد، مستقلا برای خودشون یونیک باشند یا اینکه در کنار هم یونیک باشند، دو چیز کاملا متفاوته.
    همچنین در جدول سومی که برای ربط دو جدول قبلی طراحی میکنید، الزاما فیلد Identity نیاز نیست.

  14. #14
    اقای ثباتی بالاخره با راهنمایی شما تونستم رابطه برقرار کنم.حالا میخواهم در این دو جدول اطلاعاتی درج کنم.ایا باید در کوئری همزمان که در در جدول اول و دوم درج میکنم در جدول سوم نیز درج کنم!!!!!!!!!
    مثلا این کد تا چه حد درست است.
    insert into tblbook (name) values(@namevl)
    insert into tbllink values(select id from tblbook where name =@nameval) .
    tbllink اسم جدول سوم است.
    آخرین ویرایش به وسیله 13841384 : سه شنبه 01 فروردین 1385 در 01:49 صبح

  15. #15
    اقا تو رو خدا یکی راهنمایی کند.
    با سپاس فراوان.

  16. #16
    دوست عزیزم،
    با توجه به اینکه جدول سوم، Child برای دو جدول دیگه به حساب میاد، لذا اول باید رکورد دو جدول Parent رو وارد کنید و بعد رکوردهای جدول سوم رو.

  17. #17
    من این سه جدول را طراحی کردم و بین انها رابطه برقرار کردم اما حالا در نوشتن کوئری ها مشکل دارم.اگه یه کوئری برای درج و یکی برای سلکت مثالی بزنید خیلی ممنون میشم.امیدوارم به این سوال سطح پایین جواب بدین.

  18. #18
    نقل قول نوشته شده توسط nazanin_1384
    من این سه جدول را طراحی کردم و بین انها رابطه برقرار کردم اما حالا در نوشتن کوئری ها مشکل دارم.اگه یه کوئری برای درج و یکی برای سلکت مثالی بزنید خیلی ممنون میشم.امیدوارم به این سوال سطح پایین جواب بدین.
    هنوز هم منتظر لطف دوستان هستم.خواهشا تلگرافی جواب ندید.

  19. #19
    دوست عزیزم، باید از دستور Insert استفاده کنین، خیلی ساده است. در مورد Query هم دقیقا گزارش رو بفرمایید که چی مد نظرتونه

  20. #20
    ببینید امین خان مشکل اینست که باید با هر درج در جدول book در جدول link نیز فیلد bid نیز پر شود انهم با همان id جدول book .علاوه بر این در همین لحظه در جدول writer نیز نام نویسنده وارد شود و در همان لحظه فیلد wid در جدول link نیز پر شود انهم هم با همان فیلد id مربوط به
    جدول writer ..فکر نمیکنم که یک دستور insert ساده این کار رو انجام بده??.
    با سپاس از اقای امین سباتی.

  21. #21
    دوست عزیزم اشکال کار شما اینجاست که تصور میکنید با وارد کردن رکورد در book، بلافاصله باید در جدول link هم چیزی وارد کنید!
    روش صحیح به این شکله: رکورد مورد نظر رو در book وارد کنید و bid بدست اومده رو در یک متغیر نگه دارید (هنوز با link کاری نداریم). حالا در writer هم Insert کنید و wid که حاصل شده رو در متغیر بریزید.
    الان وقتشه که این دو مقدار بدست اومده رو وارد link کنید.
    اگر bid و wid فیلدهای Identity هستند، بلافاصله بعد از Insert، باید مقدار Identity@@ رو بخوانید که میشه id مورد نظر شما.

  22. #22
    فکر میکنم این کد بتواند درست باشد
    declare @wid as int
    declare @bid as int
    insert into book values ('')
    select @@identity
    set @bid=@@identity
    insert into writer values ('')
    select @@identity
    set @wid=@@identity

    insert into link values(@bid,@wid)

  23. #23
    سلام
    در همین دیتا بیس میخواهیم یک join انجام دهیم که در ستون سمت چپ نام نویسنده ها و در ستون سمت راست نام کتابهای انها را نمایش دهد.به این صورت:
    w1 b1
    w1 b2
    w1 b3
    w2 b4
    w2 b5

  24. #24
    این توضیح را هم بدهم که در اینجا join بین 3 جدول است انهم در شرایطی که نمیخواهیم اطلاعات جدول سوم ظاهر شوند من نمونه ای از این نوع جوین در سایت ندیدم....امیدوارم که دوستان راهنمایی بفرمایند.

  25. #25
    کاربر دائمی آواتار Kamyar.Kimiyabeigi
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    تهران
    پست
    1,276

    SELECT T1.WRITER, T2.BOOKNAME
    FROM T1 INNER JOIN T2 ON T1.WCODE = T2.WCODE
    INNER JOIN T3 ON T3.BCODE = T2.BCODE

  26. #26
    ممنون ( 10 تا کاراکتر)

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •