PDA

View Full Version : تفکیک اطلاعات یک فیلد در سه فیلد



ali190
یک شنبه 11 اردیبهشت 1390, 20:14 عصر
باسلام و عرض خسته نباشید
من در پروژه ام میخوام نام کاربری ، تاریخ ثبت رکورد و زمان ثبت رکورد رو در یک فیلد وارد ، به جای وارد نمودن این اطلاعات در سه فیلد
مثلاً اینطوری:
ALI190-1389/12/20-18:30
هر کدام از این سه اطلاعات با یک "-" از هم جدا شده اند
حالا در این جا دو تا سئوال داشتم
آیا استفاده از یک فیلد به جای سه فیلد تاثیری مثبتی در حجم دیتابیس و نیز سرعت دیتابیس داره؟
چطور میتونم در یک کوئری این فیلد رو به سه فیلد بشکونم(آیا استفاده از یک کوئری سه فیلدی که بطور مجازی اجرای میشه بهتره یا از همون ابتدا از سه فیلد در جدولم استفاده کنم)
من کوئریش رو میتونم توسط توابع Instr و left و mid در اکسس بنویسم
اما هر کاری کردم نتونستم تو sql server بنویسم
نتیجه نهایی میخوام اینطور بشه:
فیلد یک table1 :
ALI190-1389/12/20-18:30
فلید یک view1
ALI190
فلید دو view1

1389/12/20

فیلد سه VIEW1
18:30
ممنون و متشکر از لطفتون
یاعلی

حمیدرضاصادقیان
دوشنبه 12 اردیبهشت 1390, 08:16 صبح
سلام.
با این کار شما قانون اول نرمال سازی 1NF رو نقض میکنید. در این قانون مطرح شده که در داخل هر فیلد باید یک مقدار تجزیه نشدنی باشه. چون با این روش اگر بخواهید Update,Delete انجام بدید به مشکل برخواهید خورد. و سرعت کوئری های شما نیز پایین خواهد اومد. چون مجبورید یک کوئری ساده رو اینقدر پیچیده بنویسید تا به مقصود برسید.
بهتره برای هرکدوم یک فیلد جداگانه در نظر بگیرید.

ali190
دوشنبه 12 اردیبهشت 1390, 21:30 عصر
سلام
ممنونم از توضیحاتتون
ولی اگر امکانش هست کد sql این قضیه رو بمن بفرمائید
ممنون و متشکر
یاعلی

حمیدرضاصادقیان
سه شنبه 13 اردیبهشت 1390, 16:38 عصر
کد نیازی نداره.
شما یک ستون برای نام کاربر نیاز دارید.اگر جدولی جداگانه برای کاربران دارید که اینجا به جای نام کاربر باید id اون کاربر قرار بگیره و بشه کلید خارجی جدول کاربران.
یک ستون برای تاریخ و زمان.