2012-02-13 7 views
-2

なぜ私のテーブルの関係が逆転しているのですか?外部キーを自動インクリメントに設定するにはどうすればよいですか?そのため、親テーブルにデータを挿入すると、子テーブルの主キーも増加します。私はそれを行うだろうかSQL Server Managementスタジオの1対多の関係です

そして、それは私の図に関係が反転しているのはなぜ、ここでは他の方法で回避することになっている

enter image description here

顔をしていますか、?

+0

この質問に関連していますか? http://stackoverflow.com/q/9260543/27535 – gbn

答えて

2

私は正直言って、あなたの要件にUIを曲げようとするのは大変です。代わりに、いくつかのDDLを学びましょう!

CREATE TABLE dbo.People 
(
    PeopleID INT IDENTITY(1,1) PRIMARY KEY, 
    FirstName NVARCHAR(32) 
    --, LastName, etc. 
); 

CREATE TABLE dbo.Address 
(
    AddressID INT IDENTITY(1,1) PRIMARY KEY, 
    PeopleID INT NOT NULL FOREIGN KEY 
    REFERENCES dbo.People(PeopleID), 
    Address VARCHAR(255) 
    --, other columns 
); 

データ集団の例。 2つのアドレスを持つBobという名前の新しい人物を追加したいとします。

DECLARE @PeopleID INT; 

INSERT dbo.People(FirstName) SELECT N'Bob'; 

SELECT @PeopleID = SCOPE_IDENTITY(); 

INSERT dbo.Address(PeopleID, Address) SELECT @PeopleID, '255 Hemlock Lane'; 
INSERT dbo.Address(PeopleID, Address) SELECT @PeopleID, '345 Hutcheson Ave'; 
+0

。私は親テーブルのプライマリにデータを追加した場合、他のテーブルの外部キーは更新されますか? – KyelJmD

+0

いいえ、自分で行う必要があります。外部キーテーブルには自動入力されません。 'INSERT dbo.People'を実行して新しい人物を追加した場合、SQL Serverはアドレステーブルに入れなければならない他のデータを推測する必要がありますか? –

+0

どうすればいいでしょうか?私が親テーブルに新しいデータを追加した場合、それに関連する他のテーブルの外部キーは、参照されているキーと同じ値になります。またはリンクされています。私は自分自身を明確にしていますか? – KyelJmD

4

私に邪魔されていません。 Peopleには、Addressの主キーを参照する外部キーがあるようです。この場合、それはそうではないと思われます。これは、データベースダイアグラムツールが外部キーの関係をどのように表現するかです。

外部キーを自動インクリメントに設定しません。外部キーは、別のテーブルの主キーへの参照です。つまり、親テーブルのプライマリキー値と一致します。

+0

私はAddressテーブルにリンクされているかどうかを知るために、どのようにAddress_idテーブルに値を追加しますか?もう一つのこと。私は自分のアドレステーブルを人民のテーブルに依存させたいのですが、どうすればいいでしょうか? – KyelJmD

+0

@KyelJmDあなたのダイアグラムはそれとは逆です。あなたのPeoplesテーブルは、あなたのAddressテーブルに依存していて、参照しています。 –

+0

どうすればいいですか?住所は人によって異なりますか?それと同時に、それは1対1の関係を持っています。 1人は多くの住所を持つことができますか? – KyelJmD