تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 6 از 6

نام تاپيک: كمك ضروري در پايگاه داده در #c خواهشن يه نگاهي بندازيد.

  1. #1
    داره خودمونی میشه farman-h's Avatar
    تاريخ عضويت
    Dec 2007
    پست ها
    171

    پيش فرض كمك ضروري در پايگاه داده در #c خواهشن يه نگاهي بندازيد.

    با سلام خدمت دوستان
    من يه سوال در مورد پايگاه داده دارم .يك جدول دارم كه دو تا فيلد داره(يكي فيلد آدرس و ديگري شماره) من ميخوام هر وقت خواستم داده هايي به(فيلد آدرس وشماره) در جدول بانك اطلاعاتي وارد(INSERT) كنم به من بگه كه اطلاعات اين فيلد تكراري هست يا نه يعني اطلاعات قبلا وارد شده يا نه(در كل جستجويي ميخوام كه اين كار رو انجام بده)
    فيلد آدرس من از نوع varchar هست و اندازه اش هم 8000 است و نمي تونم اون فيلد رو كليد در نظر بگيرم .تازه ميخوام كه اطلاعاتم بصورت فارسي وار بشه

  2. #2
    داره خودمونی میشه
    تاريخ عضويت
    Jun 2009
    محل سكونت
    تهران
    پست ها
    21

    پيش فرض

    فکر می کنم یا باید تک تک رکوردها رو چک کنی یا یه سرچ بزاری اگر چیزی پیدا شد که به کاربر می گی نمی تونی اگر هم نه اضافه می کنی.
    از ویزارد داری استفاده می کنی ؟

  3. #3
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    با توجه به شرایط بهتر است در جهت سرعت ایندکس بندی بالاتر برای کلید از یک فیلد autonumber عددی استفاده کنید.

    سپس میتوانید فیلد تلفن (اگر منظورتان از شماره همین باشد) را یکتا معرفی کنید ولی ....
    گاهاً لازم میشود چندین تلفن وارد شود که یک راه ساده میتوانید (و پرهیز از ایجاد جدول دیگر و رابطه یک به چند) داشتن یک فیلد بزرگ برای تلفن با یک textbox چند خطی در برنامه باشد تا خودکاربر بتواند بین شماره تلفن های مختلف از اینتر(Enter - خط جدید) استفاده کنید.

    برای ذخیره متون غیر انگیلیسی (از جمله فارسی) نوع varchar و char (و یا text قدیمی) مناسب نیستند و شما باید از nvarchar و nchar (و یا ntext قدیمی) استفاده کنید.

    در خصوص جستجو باید توجه داشته باشید در متون بزرگ و چند خطی مثل همین آدرس و یا درج چندین تلفن در یک فیلد با جداسازی اینتر(همان که در فوق پیشنهاد کردم) جستجوهای معمول فایده خاصی ندارد.

    باز برای تلفن کار ساده تر است.

    دلیل آن است که از نظر برنامه نویسی دو عبارت وقتی برابر هستند که کاملاً و تک تک حروفشان برابر باشد...
    یعنی خیلی بعید و غیر ممکن است که یک آدرس اگر دوبار تایپی شود، همه حروفش مثل هم باشد، بالاخره فاصله ای و نقطه ای و خط تیره ایب کم و زیاد میشود، شاید یک بار "خیابان" تایپ شود و بار دوم "خ-" و سایر موارد و...

    سرچ عادی با اپراتور = انجام میشود که باید کاملاً برابر باشد.

    سرچ پیشرفته تر بعدی با اپراتور LIKE انجام میشود هکه میتواند کاراکترهای جاینشین (wildcard) را هم قبول کنید و مثلاً میتوان از ان برای پیدا کردن تلفنهای تکراری استفاده کرد. (البته همچنان میتوان برای درج چندیت تلفن از رابطعه یک به چند استفاده کرد ک ایندکس بندی پیدا میکند و سرچ ساده تر میشود.)

    آخرین نوع و پیشرفته ترین نوع سرچ سرویس FTS است که نیاز به تعریف کاتالوگ و ایندکس بندی دوره ای کامل فیلد مورد نظر دارد تا بتوان سرچ پیشرفته و مفهومی و سریعتری را پییده سازی کرد ولی همچنان نمیتوان به قطع گفت دو آدرس یکی هستند یا نه، در بهترین شرایط میتوان به کاربر هشدار داد که امکان دارد آدرس وارد شده قبلا ثبت شده باشد...

    و...

    موفق باشید.

  4. #4
    داره خودمونی میشه farman-h's Avatar
    تاريخ عضويت
    Dec 2007
    پست ها
    171

    پيش فرض

    فکر می کنم یا باید تک تک رکوردها رو چک کنی یا یه سرچ بزاری اگر چیزی پیدا شد که به کاربر می گی نمی تونی اگر هم نه اضافه می کنی.
    از ویزارد داری استفاده می کنی ؟
    نه ويزارد نيست كد نويسيه خواهش ميكنم اگه نظري داري برام بنويس

  5. #5
    داره خودمونی میشه farman-h's Avatar
    تاريخ عضويت
    Dec 2007
    پست ها
    171

    پيش فرض

    سلام
    با توجه به شرایط بهتر است در جهت سرعت ایندکس بندی بالاتر برای کلید از یک فیلد autonumber عددی استفاده کنید.

    سپس میتوانید فیلد تلفن (اگر منظورتان از شماره همین باشد) را یکتا معرفی کنید ولی ....
    گاهاً لازم میشود چندین تلفن وارد شود که یک راه ساده میتوانید (و پرهیز از ایجاد جدول دیگر و رابطه یک به چند) داشتن یک فیلد بزرگ برای تلفن با یک textbox چند خطی در برنامه باشد تا خودکاربر بتواند بین شماره تلفن های مختلف از اینتر(Enter - خط جدید) استفاده کنید.

    برای ذخیره متون غیر انگیلیسی (از جمله فارسی) نوع varchar و char (و یا text قدیمی) مناسب نیستند و شما باید از nvarchar و nchar (و یا ntext قدیمی) استفاده کنید.

    در خصوص جستجو باید توجه داشته باشید در متون بزرگ و چند خطی مثل همین آدرس و یا درج چندین تلفن در یک فیلد با جداسازی اینتر(همان که در فوق پیشنهاد کردم) جستجوهای معمول فایده خاصی ندارد.

    باز برای تلفن کار ساده تر است.

    دلیل آن است که از نظر برنامه نویسی دو عبارت وقتی برابر هستند که کاملاً و تک تک حروفشان برابر باشد...
    یعنی خیلی بعید و غیر ممکن است که یک آدرس اگر دوبار تایپی شود، همه حروفش مثل هم باشد، بالاخره فاصله ای و نقطه ای و خط تیره ایب کم و زیاد میشود، شاید یک بار "خیابان" تایپ شود و بار دوم "خ-" و سایر موارد و...

    سرچ عادی با اپراتور = انجام میشود که باید کاملاً برابر باشد.

    سرچ پیشرفته تر بعدی با اپراتور LIKE انجام میشود هکه میتواند کاراکترهای جاینشین (wildcard) را هم قبول کنید و مثلاً میتوان از ان برای پیدا کردن تلفنهای تکراری استفاده کرد. (البته همچنان میتوان برای درج چندیت تلفن از رابطعه یک به چند استفاده کرد ک ایندکس بندی پیدا میکند و سرچ ساده تر میشود.)

    آخرین نوع و پیشرفته ترین نوع سرچ سرویس FTS است که نیاز به تعریف کاتالوگ و ایندکس بندی دوره ای کامل فیلد مورد نظر دارد تا بتوان سرچ پیشرفته و مفهومی و سریعتری را پییده سازی کرد ولی همچنان نمیتوان به قطع گفت دو آدرس یکی هستند یا نه، در بهترین شرایط میتوان به کاربر هشدار داد که امکان دارد آدرس وارد شده قبلا ثبت شده باشد...

    و...

    موفق باشید.
    دستت درد نكنه.اگه ميشه كد اون جستجو رو برام بزار ممنون ميشم.راستش ميخوام دو تا آدرس رو با هم مقايسه كنم ببينم آدرس دومي چقدر حرف تكراري در آدرس اولي داره.

  6. #6
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    همانطور که گفتم جستجو آدرس الگوریتم آسانی پیدا نمیکند و در بهترین شرایط هم نمیتوان به نتیجه قطعی رسید و true و false ای گفت که آدرس تکراری است یا نه.

    شاید طبق یک الگوریتم معمولی به این نتیجه برسیم که...
    1- شما آدرس را باید به کلمات تشکیل دهنده اش بشکند که با فاصله و یا نقطه و یا خط تیره و... جدا شده اند...

    2- بعد باید کلمات از یک حد کوچکتر ار حذف کنید (مثلاً کلمات سه حرفی به پایین ...)

    3- سپس باید بیشترین حضور این کلمات باقی مانده را در هر سطر جداگانه محاسبه کنید.

    4- بعد مهم درصد تعداد کلمات عبارت اول (نتیجه آیتم 2 توضیحات) است که در هر سطر تکرار شده و اگر از یک مقدار خاص (مثلاً 70 یا 80) بیشتر باشد، میتوان اینطور نتیجه گرفت که احتمالاً دو آدرس شاید برابر باشند.

    =====

    من متاسفانه فرصت خالی کافی برای پیاده سازی این الگوریتم را ندارم، شاید دوستان دیگر بتوانند کمک کنند...
    ولی اگر سوال موردی و خاصی داشته باشید همچنان در خدمت هستم.

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •