PDA

View Full Version : کلیدهای خارجی(1)



faramarz_s
دوشنبه 04 اسفند 1382, 16:21 عصر
دو تا جدول هستند که لازمست بین آنها Relationship ایجاد نمود:



if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblUrl]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tblUrl]
GO

CREATE TABLE [dbo].[tblUrl] (
[username] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[url] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
) ON [PRIMARY]
GO


جدول دوم:

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblUserAccounts]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tblUserAccounts]
GO

CREATE TABLE [dbo].[tblUserAccounts] (
[UserId] [int] IDENTITY (1, 1) NOT NULL ,
[Username] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Password] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[email] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[StudentCode] [int] NULL ,
[SignDate] [nchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
GO


ok
دقت بفرمایید بین username که در هر دو تا هست را باید کلید خارجی کنیم.
الف-در tblUserAccounts ما username کاملا یکتا باید داشته باشیم اما در tblurl اصلا نباید یونیک باشه.
1-آیا چنین کاری ممکنه؟
2-چرا در محیط Enterprise پیغام خطا می ده؟

3-با T-Sql چونه می توانم همین کار را انجام بدهم؟
http://Boein.europe.webmatrixhosting.net/sql/match01.gif

vadood
دوشنبه 04 اسفند 1382, 18:10 عصر
اگر توی جدول دوم فیلد UserAccounts را Primary Key کنی مشکلت حی می شه.

اما Primary Key کردن فیلدی از نوع<span dir=ltr> varchar(50)</span> خیلی کار خوبی نیست.

faramarz_s
دوشنبه 04 اسفند 1382, 20:39 عصر
اگر توی جدول دوم فیلد UserAccounts را Primary Key کنی مشکلت حی می شه.

چنین فیلدی وجود ندارد!!!!

http://Boein.europe.webmatrixhosting.net/sql/d1.gif
http://Boein.europe.webmatrixhosting.net/sql/d2.gif
http://Boein.europe.webmatrixhosting.net/sql/r1.gif
http://Boein.europe.webmatrixhosting.net/sql/r2.gif
http://Boein.europe.webmatrixhosting.net/sql/e1.gif
http://Boein.europe.webmatrixhosting.net/sql/e2.gif

vadood
سه شنبه 05 اسفند 1382, 09:44 صبح
اگر توی جدول دوم فیلد UserAccounts را Primary Key کنی مشکلت حی می شه.

ببخشید باید می گفتم
اگر توی جدول tblUserAccounts فیلد UserName را Primary Key کنی مشکلت حی می شه
در ضمن توی جدول اولی اونو از PK بودن در آر.
اما چرا نمیشه، فکر نمی کنی متن پیغام خطا چیز بیشتری داره که توی عکس های شما دیده نمیشه؟

faramarz_s
سه شنبه 05 اسفند 1382, 17:23 عصر
آنچه فرمودید را انجام دادم و ایرادی نگرفت.تشکر :!:
1-برای اینزرت 22 کووری متفاوت در یک آن (بر فرض درون همین 2 جدول )بهترین راهکار کدامست؟
الف-نوشتن SP
ب-؟

vadood
چهارشنبه 06 اسفند 1382, 10:26 صبح
یک یونیون از اون 22 کویری

faramarz_s
جمعه 08 اسفند 1382, 15:29 عصر
The UNION operator allows you to combine the results of two or more SELECT statements into a single result set. The result sets combined using UNION must all have the same structure. They must have the same number of columns, and the corresponding result set columns must have compatible data types.


This query creates a UNION between the tables&#58;

SELECT * FROM Table1
UNION
SELECT * FROM Table2


1-عنایت بفرمایید نمونه ای از اینزرت بنویسید.
2-چرا SP پیشنهاد نمی کنید؟

vadood
یک شنبه 10 اسفند 1382, 18:42 عصر
INSERT INTO MyTable &#40;PriKey, Description&#41;
SELECT ForeignKey, Description
FROM SomeView

حالا با جای این یه select شما هر چند تا را که می خواهی یونیون کن

faramarz_s
یک شنبه 10 اسفند 1382, 21:17 عصر
بله خیلی جالب بود.
حالا در جدول tblurl بدون در نظر گرفتن دیگر جداول 22 تا کویری بصورت زیر منتها با تغییر مقدار url در هر کویری لازم دارم:

INSERT INTO tblUrl&#40;Username,url&#41; " +
"VALUES&#40;@username,'http&#58;//localhost/School/AdminBestStudent/AddStudent.aspx
ببینید اصل ماجرا اینه که در قالب چک باکسهایی که تیک می خورند قرار است به کاربران مجوز بدهیم(که همان url می باشد)
ممکنه کاربری با یک یوزرنیم 22 تا مجوز مجزا داشته باشه .
به این معنی که 22 تا کویری نظیر آنچه نوشته شده لازم باشد.حالا پیشنهاد شما چی هست؟ :roll:

faramarz_s
چهارشنبه 13 اسفند 1382, 16:05 عصر
:oops:

vadood
پنج شنبه 14 اسفند 1382, 13:24 عصر
من پیشنهادی ندارم! جز این که سوال را نمی فهمم. خوب دیگه برنامه تون را چه جوری می خواین بنونیسین را که من نمی تونم نظر بدم