2010-11-07 51 views
0

說我有一列定義爲地址。另外,我有一個記錄,我們稱之爲魯迪的。現在Rudy's有多個地址,所以我需要包含多個地址,以便它們都可以搜索。在SQL中處理解決方案的最佳方法是什麼?將多個值添加到sql

回答

2

你應該添加一個地址列的子表。地址存儲在子表中時,您將擁有一對多關係。您可以根據需要爲每個用戶添加儘可能多的地址。你也可以添加額外的信息,如地址類型(家庭,工作或小學,中學等)。

我不會去一列地址。如果這是一個郵政地址,最好有更多的專欄,如街道,城鎮,門牌號碼等。那麼你可以在你的列上使用索引。

+0

知道這個很好的教程? – scifirocket 2010-11-07 22:51:41

+0

@scifirocket - 閱讀關於關係數據庫和數據庫規範化:http://en.wikipedia.org/wiki/Database_normalization。你也可以在YouTube上找到一些不錯的例子。 – Novitzky 2010-11-08 00:47:31

1

你可以嘗試這樣的事:

CREATE TABLE [dbo].[Person](
[PersonId] [int] IDENTITY(1,1) NOT NULL, 
[FullName] [varchar](50) NULL, 
CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED ([PersonId] ASC)) 
GO 

CREATE TABLE [dbo].[Addresses](
[AddressId] [int] IDENTITY(1,1) NOT NULL, 
[PersonId] [int] NOT NULL, 
[AddressLine1] [varchar](50) NULL, 
[AddressLine2] [varchar](50) NULL, 
[City] [varchar](50) NULL, 
[State] [varchar](4) NULL, 
[Country] [varchar](50) NULL, 
CONSTRAINT [PK_Addresses] PRIMARY KEY CLUSTERED ([AddressId] ASC)) 
GO 

ALTER TABLE [dbo].[Addresses] 
WITH CHECK ADD CONSTRAINT [FK_Addresses_Person] FOREIGN KEY([PersonId]) 
REFERENCES [dbo].[Person] ([PersonId]) 
GO 

ALTER TABLE [dbo].[Addresses] CHECK CONSTRAINT [FK_Addresses_Person] 
GO 

當然,你可以把它複雜,只要你想,然後按照以前的建議,用於存儲地址類型等

這可能有助於MS下載來自http://sqlserversamples.codeplex.com/的示例並遵循其最佳做法。