oghab
سه شنبه 08 بهمن 1387, 19:22 عصر
به نام خدا
سلام
من يك برنامه دارم كه DataBase ش SQL Server 2000 است با بيشتر از 100 تا جدول. اينترفيس اش را هم با دلفي 7 نوشتم.
يكي از اين جدولها (patients) جدول اصليه. كه شامل يه فيلد id است كه idenitity اش yes است و يه فيلد patient_no كه كليد اصلي است و دستي شماره ميگيره و تعداد فيلد شبيه نام و فاميل و غيره است.
تعدادي بقيه جدولها به اين صورت هستند كه يك فيلد id دارند با identity ي yes و يك فيلد patient_no كه كليد خارجي است به كليد اصلي جدول اول و فيلدهاي مورد نياز ديگر. و تعدادي جدول ديگر كه در سطح سوم قرار مي گيرند و يكي از جدولهاي سطح دوم رابطه كليم خارجي دارند. و كليد اصلي آنها id با identity ي yes است.
ساختاري اينچنيني: (البته با تعداد جدولهاي بسيار زيادتر)
http://night-skin.com/up/images/v3cxvxxwqbvq9n6m0ldj.gif
حالا مشكل اينجاست كه سفارش دهنده امكان اينكه برنامه را تحت شبكه استفاده كنه نداره نميتونند همشون به يك database وصل بشند.
و حدود 7 تا كاربر مي خوان بشيند در منزلشون اطلاعات را به صورت همزمان وارد كنند.
اگه هر كدوم به نوبت اطلاعات را وارد ميكردند. ميشد از database بك آپ گرفت و نفر بعدي resotore كنه و بقيه اطلاعات را در ادامه وارد كنه! ولي مشكل اينجاست كه ميخواهند همشون مثلا در روز جمعه بشيند و يك نفر اطلاعات پرونده 1-100 و ديگري 101-200 و ديگري 201-300 و به همين ترتيب وارد كنند.
و بعد اطلاعات را به هم بچسبانند. انگار فايل وُرده!!!!!! :اشتباه:
حالا مشكل اينجاست كه وقتي هر كدوم اطلاعات وارد كنند idenditiy براي هر فيلد به ترتيب اضافه ميشه و مثلا ممكنه هر كدوم اطلاعات متفاوتي را با id شماره 50 وارد كنند. و اگه بخوام از Export و Import براي كپي اطلاعات استفاده كنم. شماره هايي كه براي كليدها در نظر گرفته شده مشابهند. و هنگام import اطلاعات. بعضي از ركوردها Repalce ميشند و تعدادي از اطلاعات از بين ميره. يا اشتباه ميشه.
مثلا ممكنه كاربر اولي براي شماره پرونده 63 يك ct كه ثبت كنه كه شماره 43 گرفته است. و براي همان ct چند ركورد در جدولهاي بعدي ثبت بشه! مثلا در هر 3 جدول ct_chd , ct_cbd , ct_lhd و كاربر دوم براي پرونده شماره 145 يك ct ثبت كند كه شماره 43 بگيرد و تعدادي ركورد در ct_chd ثبت كند. و در ct_cbd , ct_lhd ركوردي ثبت نكند.
هنگامي كه اطلاعات را از database كه كاربر دوم اطلاعات در آن ثبت كرده به DataBase ي كه كاربر اول اطلاعات در آن ثبت كرده Export و Append كنيم.و چون در هر دو databse ركوردي در جدول ct با id شماره 43 داري. اطلاعات ct پرونده 145 جايگزين اطلاعات ct پرونده 63 ميشود. و اطلاعات ct پرونده 63 پاك شده و همچنين اطلاعاتي كه در ct_cbd , ct_lhd براي پرونده 63 ثبت شده به پرونده 145 نسبت داده مي شود. و بدين ترتيب اطلاعات يا از دست مي رود يا اشتباه مي شود.
حالا سوال من اينه:
اگر يك Database داشته باشيم و هر كاربر در كامپيوتر شخصي خود اطلاعات را وارد database كند. چطور مي توان اطلاعات وارد شده توسط تمام كاربران دنبال هم كپي كرد. بطوري كه اطلاعات همه آنها در يك database قرار بگيرد و داده اي از دست نرود و ارتباط بين ركوردهاي جدولها بهم نخورد؟
سلام
من يك برنامه دارم كه DataBase ش SQL Server 2000 است با بيشتر از 100 تا جدول. اينترفيس اش را هم با دلفي 7 نوشتم.
يكي از اين جدولها (patients) جدول اصليه. كه شامل يه فيلد id است كه idenitity اش yes است و يه فيلد patient_no كه كليد اصلي است و دستي شماره ميگيره و تعداد فيلد شبيه نام و فاميل و غيره است.
تعدادي بقيه جدولها به اين صورت هستند كه يك فيلد id دارند با identity ي yes و يك فيلد patient_no كه كليد خارجي است به كليد اصلي جدول اول و فيلدهاي مورد نياز ديگر. و تعدادي جدول ديگر كه در سطح سوم قرار مي گيرند و يكي از جدولهاي سطح دوم رابطه كليم خارجي دارند. و كليد اصلي آنها id با identity ي yes است.
ساختاري اينچنيني: (البته با تعداد جدولهاي بسيار زيادتر)
http://night-skin.com/up/images/v3cxvxxwqbvq9n6m0ldj.gif
حالا مشكل اينجاست كه سفارش دهنده امكان اينكه برنامه را تحت شبكه استفاده كنه نداره نميتونند همشون به يك database وصل بشند.
و حدود 7 تا كاربر مي خوان بشيند در منزلشون اطلاعات را به صورت همزمان وارد كنند.
اگه هر كدوم به نوبت اطلاعات را وارد ميكردند. ميشد از database بك آپ گرفت و نفر بعدي resotore كنه و بقيه اطلاعات را در ادامه وارد كنه! ولي مشكل اينجاست كه ميخواهند همشون مثلا در روز جمعه بشيند و يك نفر اطلاعات پرونده 1-100 و ديگري 101-200 و ديگري 201-300 و به همين ترتيب وارد كنند.
و بعد اطلاعات را به هم بچسبانند. انگار فايل وُرده!!!!!! :اشتباه:
حالا مشكل اينجاست كه وقتي هر كدوم اطلاعات وارد كنند idenditiy براي هر فيلد به ترتيب اضافه ميشه و مثلا ممكنه هر كدوم اطلاعات متفاوتي را با id شماره 50 وارد كنند. و اگه بخوام از Export و Import براي كپي اطلاعات استفاده كنم. شماره هايي كه براي كليدها در نظر گرفته شده مشابهند. و هنگام import اطلاعات. بعضي از ركوردها Repalce ميشند و تعدادي از اطلاعات از بين ميره. يا اشتباه ميشه.
مثلا ممكنه كاربر اولي براي شماره پرونده 63 يك ct كه ثبت كنه كه شماره 43 گرفته است. و براي همان ct چند ركورد در جدولهاي بعدي ثبت بشه! مثلا در هر 3 جدول ct_chd , ct_cbd , ct_lhd و كاربر دوم براي پرونده شماره 145 يك ct ثبت كند كه شماره 43 بگيرد و تعدادي ركورد در ct_chd ثبت كند. و در ct_cbd , ct_lhd ركوردي ثبت نكند.
هنگامي كه اطلاعات را از database كه كاربر دوم اطلاعات در آن ثبت كرده به DataBase ي كه كاربر اول اطلاعات در آن ثبت كرده Export و Append كنيم.و چون در هر دو databse ركوردي در جدول ct با id شماره 43 داري. اطلاعات ct پرونده 145 جايگزين اطلاعات ct پرونده 63 ميشود. و اطلاعات ct پرونده 63 پاك شده و همچنين اطلاعاتي كه در ct_cbd , ct_lhd براي پرونده 63 ثبت شده به پرونده 145 نسبت داده مي شود. و بدين ترتيب اطلاعات يا از دست مي رود يا اشتباه مي شود.
حالا سوال من اينه:
اگر يك Database داشته باشيم و هر كاربر در كامپيوتر شخصي خود اطلاعات را وارد database كند. چطور مي توان اطلاعات وارد شده توسط تمام كاربران دنبال هم كپي كرد. بطوري كه اطلاعات همه آنها در يك database قرار بگيرد و داده اي از دست نرود و ارتباط بين ركوردهاي جدولها بهم نخورد؟