2011-12-16 64 views
0
DROP TABLE District_Info; 

CREATE TABLE District_Info(
Dname VARCHAR2(20) primary key, 
Boundary_dist VARCHAR2(20) 
); 

對於此代碼,對於每個Dname存在多個Boundary_dist。它會更好,如果我可以使用VARCHAR2(20)的陣列,並插入儘可能多boundary_dist,因爲我需要。想要一些有用的建議。想要一個插入多個數據的單一列中的多個數據的最佳解決方案

+0

中關係的共同辦法數據庫是「一個數據,一行」,「多數據,多行」。您可能需要重新檢查表結構。 – 2011-12-16 19:56:09

回答

4

至於,要做到這一點,理想的方法是將存儲的附加行對每個DNAME/Boundary_Dist組合。做一個結構這個簡單的最簡單的方法是隻改變你的主鍵:

CREATE TABLE District_Info(
Dname VARCHAR2(20) primary key, 
Boundary_dist VARCHAR2(20) primary key); 

如果你要需要有一個1該表中的其他數據:1的相關性區,你會更好分裂BoundayDist到一個單獨的表:

CREATE TABLE District_Info(
Dname VARCHAR2(20) primary key, 
Other_info VARCHAR2(20) 
); 

CREATE TABLE District_Boundary(
Dname VARCHAR2(20) primary key, 
Boundary_dist VARCHAR2(20) primary key); 

如果你真的堅持將每行提供多個值,你可以使用一個用戶定義的數據類型:

create type varchar_20_list as table of varchar2(20); 

CREATE TABLE District_Info(
Dname VARCHAR2(20) primary key, 
Boundary_dist varchar_20_list); 
0

您需要創建Boundary_dist一個單獨的表,並創建引用District_Info表的外鍵。

-2

同意,這將會是最好有Boundary_dist在第二個表,並將它們與一個ID進行連接,但如果必須通常我做的是將其存儲爲「1,2,3,4,5」這樣在代碼中,我可以使用爆炸或使用IN使用mysql來輕鬆操作PHP。已經提到

相關問題