如何使用SQL Server創建一對多關係?使用SQL Server創建一對多關係
回答
- 定義的兩個表(例如A和B),用自己的主鍵
- 定義於表A中的列作爲基於表B的
主鍵具有外鍵關係這意味着該表中可以有一個或多個與在表B.
一個記錄的記錄如果您已經到位的表,使用ALTER TABLE語句創建外鍵約束:
ALTER TABLE A ADD CONSTRAINT fk_b FOREIGN KEY (b_id) references b(id)
fk_b
:外鍵約束的名稱,必須是唯一的數據庫b_id
:在表A中所創建的b
的外鍵關係列的名稱:表的名稱,在這種情況bid
:表b列的名稱
如果你在談論關於兩類不同enitities的,老師和學生說,你會爲每個創建兩個表,第三個存儲關係。這第三個表格可以有兩列,比如teacherID和StudentId。 如果這不是你正在尋找的,請詳細說明你的問題。
我不認爲這是我想要的。我規範化了一張桌子,現在我想創建一個關係。 – Tim 2009-08-20 19:38:38
由於所提供的解決方案是向下投票,因此是多對多關係之一。即使使用一對多,當必須運行連接時,這也是額外的開銷。另外,您必須在3個表格內部連接,因此需要更多類型的連接。 – andrewWinn 2009-08-20 19:40:00
這個是用來創建m-n關係的:) – nXqd 2011-01-14 20:37:05
如果你不使用SSMS那麼這裏是語法:
ALTER TABLE <table_name>
ADD <constraint_name> FOREIGN KEY
(<column_name1> ,
<column_name2>)
REFERENCES <table_name>
(<column_name1> ,
<column_name2>)
這是怎麼了,我通常做(SQL服務器)。
Create Table Master (
MasterID int identity(1,1) primary key,
Stuff varchar(10)
)
GO
Create Table Detail (
DetailID int identity(1,1) primary key,
MasterID int references Master, --use 'references'
Stuff varchar(10))
GO
Insert into Master values('value')
--(1 row(s) affected)
GO
Insert into Detail values (1, 'Value1') -- Works
--(1 row(s) affected)
insert into Detail values (2, 'Value2') -- Fails
--Msg 547, Level 16, State 0, Line 2
--The INSERT statement conflicted with the FOREIGN KEY constraint "FK__Detail__MasterID__0C70CFB4".
--The conflict occurred in database "Play", table "dbo.Master", column 'MasterID'.
--The statement has been terminated.
正如你可以看到第二個插入到細節,因爲外鍵的失敗。 這是一個很好的網絡鏈接,它顯示了在表創建或之後定義FK的各種語法。
這是一個典型的例子令一個簡單的例子。每個客戶可以有多個訂單 s,並且每個訂單可以包括多個訂單行 s。
您可以通過添加foreign key列來創建關係。每個訂單記錄都有一個CustomerID,它指向客戶的ID。同樣,每個OrderLine都有一個OrderID值。這是數據庫圖表的外觀:
SQL one-to-many diagram http://www.subbot.net/personal/external/stackoverflow/sql-one-to-many.png
在此圖中,有實際foreign key constraints。它們是可選的,但它們確保數據的完整性。另外,它們使數據庫的結構更清晰,以供使用它的任何人使用。
我假設你知道如何自己創建表。那麼你只需要定義它們之間的關係。您當然可以在T-SQL中定義約束(由多人發佈),但也可以使用設計器輕鬆添加。使用SQL Management Studio,你可以右擊訂單表,點擊設計(我認爲它可能被稱爲2005年編輯)。然後,在打開右鍵單擊的窗口中的任意位置選擇關係。
你會得到另一個對話框,在右邊應該有一個網格視圖。第一行的其中一行顯示「表格和列說明」。點擊該行,然後再次點擊右側出現的小[...]按鈕。你會得到這個對話框:
Foreign key constraint http://www.subbot.net/personal/external/stackoverflow/sql-fk.png
的訂購表應該已經在正確的選擇。選擇左側下拉菜單中的客戶表。然後在左側網格中,選擇ID
列。在右側網格中,選擇CustomerID
列。關閉對話框,然後關閉對話框。按Ctrl + S保存。
擁有這個約束將確保在沒有伴隨的客戶記錄的情況下不存在訂單記錄。
要有效地查詢這樣的數據庫,您可能需要read up on JOINs。
- 1. 如何使用JDBI SQL對象API創建一對多關係?
- 2. 創建一對多關係
- 3. 如何在SQL Server中創建真正的一對一關係
- 4. 創建一個多對多的關係,並給每個關係一個對象
- 5. 使用SQL插入一對多關係
- 6. 創建多對一的關係
- 7. 創建具有一對多的關係
- 8. Sequelize:創建一對多關係
- 9. 在Yii2中創建一對多關係
- 10. 在FuelPHP中創建一對多關係
- 11. 使用NHibernate創建一個虛擬的多對多關係
- 12. SQL Server幫助創建外鍵關係
- 13. SQL Server:無法創建關係
- 14. 無法創建表關係 - SQL Server 2005
- 15. 使用Mongoid嵌入多對一關係創建對象
- 16. SQL Server:使用一對一和一對多關係獲取所有外鍵
- 17. 如何建模SQL Server中的多對多關係?
- 18. Sql一對多關係
- 19. SQL一對多關係
- 20. 多對多關係:獲取或創建
- 21. SQL一對多關係,但多對一表關係
- 22. 我如何創建一對一的多對多關係在我的sql
- 23. sql在一對多關係中創建視圖
- 24. 正確地創建關係,多對一或一對多
- 25. 在Rails中創建多對多關係
- 26. 使用實體框架創建一對多關係的問題
- 27. 使用一對多關係爲3個表創建ORMapping
- 28. 使用jpa創建一對多關係(MYSQL)
- 29. RestKit創建多對多關係
- 30. SQL Server的許多一對多的關係
我在USC的教授告訴我們這個簡單的規則:當有一對多的關係時,把'一邊'作爲外鍵放在'多邊'一邊。當有多對多的關係時,把兩個鍵作爲外鍵放在第三個表中。 – user3885927 2017-08-02 22:22:18