PDA

View Full Version : طراحی دیتابیس سایت خبری



r.tooshani
جمعه 26 آبان 1391, 20:34 عصر
سلام
من دارم یه وب سایت خبری با ای اس پی دات نت طراحی میکنم . روند کار هم بدین شکله:
میخوام یه خبرنگار و یه مدیر تو سایت داشته باشم و همچنین کاربران عضو سایت
هر کدوم بتونن وارد سیستم و پنلهای جداگانه بشن
البته مدیر و خبرنگار فعالیت بیشتری دارن
کاربران عضو سایت فقط برای نظردهی تو سایت لاگین میکنن.
حالا من 4 تا جدول برای مدیر ، خبرنگار ، کاربران و همچنین ورود انواع کاربران طراحی کردم ، ولی اشکال پیدا کردم
میخوام ساده ترین طراحی رو برای لاگین کردن اونها داشته باشم.
میخوام مدیر و خبرنگار از قبل تو سیستم باشن و با کنترل دسترسی خود دات نت فعالیت کنن ولی کاربران که ثبت نام میکنن هم بتونن لاگین کنن.
حالا از شما دوستان محترم تقاضای راهنمایی دارم

farghabil
جمعه 26 آبان 1391, 21:02 عصر
یه فیلد تعریف کن که مقداری منحصر به فرد بگیره و بگه اینی که داره وارد میشه مدیره یا خبرنگاره یا کاربر و بر اساس همین پنل مخصوص خودشو بهش نشون بده و بفرستش به صفحه ای که باید دسترسی داشته باشه

اگه متوجه شدی یه OKEY بده

r.tooshani
یک شنبه 28 آبان 1391, 21:47 عصر
یه فیلد تعریف کن که مقداری منحصر به فرد بگیره و بگه اینی که داره وارد میشه مدیره یا خبرنگاره یا کاربر و بر اساس همین پنل مخصوص خودشو بهش نشون بده و بفرستش به صفحه ای که باید دسترسی داشته باشه

اگه متوجه شدی یه OKEY بده

خب همین فیلد رو تو جدول سومی با نام User_usertype تعریف کردم که میتونه مثلاً سه تا مقدار Admin,Guser,Newswriter داشته باشه و براساس همین 3 مقدار وارد صفحات مخصوص به خودشون بشن.
سوال اینجاست که این کارو باید با تعریف نقش و سطح دسترسی خود دات نت انجام بدم یا با جدولی که تو SQL میسازم؟
اگه هر سه کاربر مدیر و خبرنگار و کاربر عضو بخوان از طریق جدول لاگین وارد بشن ، ارتباط جداول این سه نوع کاربر با جدول لاگین چند به چند و چگونه باشه؟
ممنون میشم اگه جواب بدین.

zarifcomputer
یک شنبه 28 آبان 1391, 23:58 عصر
سلام
نمیدونم در مورد نرمال سازی مطالعه داشتی ؟

1- تمام کاربران با توجه به اینکه در ابتدا رفتار مشابهی انجام میدن باید در یک جدول نگهداری بشوند . این رفتار هم در ابتدایی ترین سطح اینه که همه کاربر سایت هستند. پس فقط کافیه یک جدول داشته باشی که اطلاعات زیر را برای تمام کاربران در این جدول نگهداری کنی . تمام کاربران شامل Admin , NewsWrite , GUser یا هر نوع دیگری از کاربران که ممکنه در آینده بخوان کاربر سایت بشن
2- انواع کاربران را هم در یک جدول دیگر نگهداری کن تا بتونی بدون دستکاری در هارد کد براحتی دامنه فعالیت سایت را افزایش بدی . مثلا خبرنگار افتخاری یا کاربر خاص یا هر مفهوم دیگه ای که ممکنه بعدا بوجود بیاد . تا اینجاشو برات با نمونه مثال میزنم
--------------------------------------------------------------------------------------------------------------

CREATE TABLE [dbo].[UserType](
[TypeID] [tinyint] IDENTITY(1,1) NOT NULL,
[utTypeTitle] [nvarchar](100) NOT NULL,
CONSTRAINT [PK_UserType] PRIMARY KEY CLUSTERED
(
[TypeID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

CREATE TABLE [dbo].[Users](
[UserID] [int] IDENTITY(1,1) NOT NULL,
[uUsername] [nvarchar](20) NOT NULL,
[uPassword] [nvarchar](100) NOT NULL,
[uFirstName] [nvarchar](50) NULL,
[uLastName] [nvarchar](50) NULL,
[uEmail] [nvarchar](255) NULL,
[uStatus] [tinyint] NULL,
[uRegisterDate] [datetime] NULL,
[uGender] [bit] NULL,
[UserTypeID] [tinyint] NOT NULL,
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED
(
[UserID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[Users] WITH CHECK ADD CONSTRAINT [FK_Users_UserType] FOREIGN KEY([UserTypeID])
REFERENCES [dbo].[UserType] ([TypeID])
ON UPDATE CASCADE
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[Users] CHECK CONSTRAINT [FK_Users_UserType]
GO



تمام ویژگی های منحصر به فرد کاربران را خودت میتونی به جدول Users اضافه کنی مثل تلفن یا آدرس .
-------------------------------------------------------------------------------------------------------------------
3- هر نوع داده دیگری که مربوط به نقش کاربر میشه باید در یک جدول دیگه قرار بگیره و فقط با فیلد UserID در ارتباط باشه . وقتی کاربری لاگین میکنه ارتباطش با جدول نقش تعیین کننده اینه که باید به کدوم پنل هدایت بشه . مثلا اگه نوع کاربر Admin باشه باید پنل ادمین و اگه کاربر عادی باشه صفحه اول سایت یا پروفایل کاربری خودشو ببینه . اینو باید تو کد مشخص کنی.

فراموش نکن که نگهداری ستون های نام و نام خانوادگی و username , password درجداول جداگانه اشتباه است