• 1398/01/12

سوال در مورد SQL :

سلام استاد عزیز وقتتون بخیر سال نو بر شما مبارک

من چند سوال داشتم خدمتتون :

1 - به نظر شما میشه ما User Name فرد رو در بانک اطلاعاتی کلید اصلی در نظر بگیریم چون به هر حال منحصر به فرد هست ؟

و اگه میشه از لحاظ فنی مشکلی داره یا خیر ؟

2- اگر شرایطی خاص پیش بیاد که ندونیم تاریخ ورودی میلادی وارد میشه یا شمسی (به عنوان مثال ما تاریخ چاپ کتاب رو می خوایم ولی ممکن کتاب خارجی باشه ممکنه ایرانی باشه) در اون صورت فیلد تاریخ رو NVarChar در نظر بگیریم درست هست یا راهکار دیگه ای داره؟

3-به نظر شما تو جدول زیر User/Pass رو باید در همین جدول ذخیره کنیم یا به یک جدول جدا نیاز داره ؟

CustomerTBL                               جدول مشتری
-CustomerID             INT        Primary Key     Identity    Not Null                                   کد مشتری
-CustomerName       NVarChar(30)                                 Not Null                                  نام مشتری
-CustomerLast          NVarChar(30)                                 Not Null                    نام خانوادگی مشتری
-CustomerUser          NVarChar(50)                                 Not Null                       نام کاربری مشتری
-CustomerPass          NVarChar(30)                                 Not Null                        کلمه عبور مشتری
-RegisterDate            DateTime                                       Not Null                              تاریخ عضویت
-CustomerPhone        BigInt                                            Not Null                    شماره تماس مشتری
-CustomerAddress      NVarChar(Max)                            NotNull                             آدرس مشتری

  • 1398/01/12
  • ساعت 12:04

سلام و عرض ادب.

ممنون. امیدوارم سال خوبی باشه براتون.

برای انتخاب کلید اصلی میشه Username رو در نظر گرفت اما ولی داره:

1- سرعت کوئری زدن روی این جدول افزایش پیدا می کنه زمانیکه کلید از نوع عدد باشه

2- بهتره کلید معنا دار نباشه مثلا identity باشه

3- در مبحث ایندکس ها که در دوره پیشرفته میگیم، متوجه میشید که اگر کلید اصلی فیلد حروف باشه پخش شدن و دسته بندی دیتا نا متعادل میشه و سرعت سرچ میاد پایین.

4- اگه بخواید با این فیلد به جدول دیگه جوین بزنید بازم سرعت پایین تر میاد.

در مورد تاریخ هم بگم که اگر روی این تاریخ عملیات محاسباتی و توابع مربوط به تاریخ رو استفاده نمی کنید اشکالی نداره که از نوع رشته استفاده کنید ولی نه nvarchar . باید از (10)CHAR استفاده کنید. چون چه میلادی و چه شمسی تعداد کاراکترهای تاریخ با علامت بینشان 10 کاراکتر است.

اگر تعداد رکوردهای جدولتون خیلی زیاد نیست یعنی کمتر از چندصدهزارتا اشکالی نداره که نام کاربری و رمز در همین جدول باشه. ولی 2 تا نکته:

1- آدرس و تلفن مشتری بیش از یک عدد نمی تواند باشد و در صورتی که مشتری بیش از 2 تلفن بدهد به مشکل می خورید.

2- حتما روی فیلد نام کاربری یک نان کلاستر ایندکس بزنید.

موفق باشید.


  • 1398/01/12
  • ساعت 12:11

ممنونم از راهنماییتون 


logo-samandehi