Требуется оптимальное решение для вставки нескольких данных в один столбец одной строки - PullRequest
0 голосов
/ 16 декабря 2011
DROP TABLE District_Info;

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

для этого кода, для каждого Dname существует более одного Boundary_dist. было бы лучше, если бы я мог использовать массив varchar2 (20) и вставить столько border_dist, сколько мне нужно. хочу несколько полезных предложений.

Ответы [ 3 ]

4 голосов
/ 17 декабря 2011

Как уже упоминалось, идеальный способ сделать это - сохранить дополнительную строку для каждой комбинации 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 голосов
/ 16 декабря 2011

Согласитесь, было бы лучше иметь Boundary_dist во второй таблице и связать их с идентификатором, но если вам, как правило, нужно, чтобы я сохранил его как "1,2,3,4,5" таким образом,код, которым я могу довольно легко манипулировать с помощью PHP с помощью Explode или с помощью MySQL с помощью IN.

0 голосов
/ 16 декабря 2011

вам нужно создать отдельную таблицу для Boundary_dist и создать внешний ключ, который ссылается на таблицу District_Info.

...