جدول های پیشنهادی من :
1 - جدول اطلاعات کاربر
ID ... int ... PrimaryKey
UserName ... varchar
password .. varchar
email .. varchar
name ... vharChar
family ... varchar
bornDate .. SmallDateTime
...
2 - جدول نوبت دهی
userName .. Foreign Key
Date ..DateTime
دلیل :
- اگر هر کاربری تنها می تونه، یک UserName داشته باشه، به علت رابطه یک به یک، نباید از دو جدول استفاده کنین ولی اگر در سیستم شما این امکان رو قرار می دین که کاربر بیش از یک UserName داشته باشه، باید از دو جدول استفاده کنین.
- فیلد ID رو Identity قرار بدین تا بطور خودکار زده بشه و یکتا باشه ولی Username رو PrimaryKey انتخاب کنین به علت اینکه UserName یکتاست و کاربر همیشه از این فیلد برای شناسایی استفاده می کنه، و به علت اینکه جستجو روی این فیلد زیاد انجام می شه با PrimaryKey کردن اون، علاوه بر اینکه بقیه جدول ها می تونن به این فیلد Refrence داشته باشن بطور پیش فرض Index اون Clustered قرار می گیره که باعث افزایش سرعت جستجو ها تا حد زیادی می شه.
- سعی کنین بیشتر از Type های varChar و nvarChar استفاده کنین تا در صورتی که String های کوچکتری ذخیره می شود، فضای زیادی اشغال نشه.
- نام یک فرد، یا فارسی است و یا انگلیسی، پس دلیلی نداره تا با انتخاب nvarChar به جای varChar دو برابر فضا مصرف کنین!!
- وقتی نوع فیلد رو تاریخ انتخاب کنین، می تونین از تابع های مختلفی استفاده کنین ولی با انتخاب char این امکانات رو از دست می دهین.
شما نیاز به نوشتن Trigger بر روی جدول نوبت دهی دارین تا در روزها و ساعت هایی که وقت مشاوره وجود ندارد و یا اینکه وقت به شخص دیگری داده شده است، نوبت ندهد. که برای این کار نیاز دارین بدونین که در هر روز به چند نفر می توان نوبت داد و فاصله زمانی هر وقت مشاوره حدودا چه مدت زمان طول می کشد.
جوابم خیلی طولانی شد :wink: امیدوارم مفید باشه