PDA

View Full Version : سوال: ثبت داده های تکراری در بانک



neda_dela
جمعه 16 بهمن 1388, 22:31 عصر
سلام دوستان
1- من دارم رو برنامه ثبت نام پیش دبستانی کار می کنم. در حال حاضر پیش دبستانی به دو سطح 5 سال و 6 سال تقسیم شده حالا سوال من اینه که بچه ای که برای 5 سالش میاد و توی این مهد ثبت نام می کنه و اطلاعاتش کامل توی سیستم ثبت میشه حالا میخاد برای 6 سالش هم به همین مهد مراجعه کنه خب اطلاعاتش از سال قبل توی سیستم هست. اینو چطوری می تونم مدیریت کنم به طوری که اطلاعات تکراری توی بانکم درج نشه؟:قلب:

cimiarnm
جمعه 16 بهمن 1388, 22:48 عصر
خب دوست عزیز این مونده به اینکه چطوری بانک خودت رو طراحی کرده باشی . من از جدولهای بانک برنامه ات اطلاعی ندارم ولی خوب میتونی برای جدول 5 ساله یک فیلدشماره . از همونایی که اس کیو ال خودش افزایشی انجام میده و یکتا هست پس در این حالت برای هر شخص یک عدد ثابت خواهی داشت و در ضمن این افزایش رکورد در صورتی که پیش بینی نکرده باشی ایرادی به برنام ات وارد نمیکند . خوب در هنگام ثبت نام برای 6 ساله ها اول سریع برنامه ات یه سرچ تو 5 ساله انجام بده اگه بود دیگه اطلاعات اضافی ثبت نکنه . کار دیگری که میتونی انجام بدی اینه که جدول 5 و 6 ساله ها رو جدا از هم طراحی نکنی و یک جدول در نظر بگیری فقط دو تا فیلدبه هر رکورد اضافه کن (میتونه از نوع BOOL ) باشه یکی برای 5 سالگی و یکی برای 6 سالگی . حالا وقتی یکی برای 5 سالگی ثبت نام کرد این فیلد علامت میخوره و اگر بعدا برای 6 سالگی هم ثبت نام بخواد بکنه اولیه سرچ کن اگه بود فیلد 6 سالگی رو هم علامت بزن. این روش دوم راحتره

ali.aghdam
جمعه 16 بهمن 1388, 22:49 عصر
خوب شما باید یک جدول برای تعیین سطح های ورودی (دانش آموزان) ایجاد کنید
فیلد هاش : 1- کد سطح 2- نام سطح (کد سطح کلید اصلی)

یک جدول نیز برای دانش آموزان ایجاد کنید
فیلد هاش : 1-کد دانش آموزی 2-کد سطح 3-نام و ...(کد دانش آموزی کلید اصلی و کد سطح کلید خارجی)

حالا هر موقع دانش آموزی خواست تغییر سطح بدهد کافی است کافی است مقدار فیلد "کد سطح" را در جدول دانش آموز تغییر دهید.

یا حق.

hakelberfin
شنبه 17 بهمن 1388, 23:12 عصر
به نظر من بهتره که این بررسی رو در SP ای که عمل اضافه کردن در بانکت رو میکنه ، انجام بدی
مثلا در کد زیر من بررسی میکنم که USER ی با این مشخصات قبلا وجود نداشته باشه


CREATE PROCEDURE dbo.NewUser
@UserName AS NVARCHAR(50),
@UserPass AS VARCHAR(10),
@SP_Result VARCHAR(32) OUTPUT
AS
BEGIN
SELECT * FROM [User] WHERE UserName=@UserName AND UserPass=@UserPass
IF(@@ROWCOUNT <> 0)
BEGIN
SET @SP_Result = 'Duplicated'
RETURN
END
INSERT INTO [User](UserName,UserPass) VALUES (@UserName,@UserPass)

SET @SP_Result = 'Success'

END