所以我有一个包含3列(id,city和country)的表,我正在尝试添加一个可以获取多个值的地址。这是一个行如何的示例:Id:1 ,城市:巴黎,国家:法国和我需要类似的东西Id:1,城市:巴黎,国家:法国,地址:Charonne,荣军院。我怎么能这样做?谢谢
答案 0 :(得分:2)
使用另一张表:
CREATE TABLE location(
id NUMBER(10,0) CONSTRAINT location__id__pk PRIMARY KEY,
city VARCHAR2(100),
country VARCHAR2(100)
);
CREATE TABLE location_addresses(
id NUMBER(10,0) CONSTRAINT location_addr__id__pk PRIMARY KEY,
location_id NUMBER(10,0) CONSTRAINT location_addr__li__fk FOREIGN KEY
REFERENCES location( id ),
address VARCHAR2(100)
);
或者,使用嵌套表:
CREATE OR REPLACE TYPE StringList IS TABLE OF VARCHAR2(100);
/
CREATE TABLE location(
id NUMBER(10,0) CONSTRAINT location__id__pk PRIMARY KEY,
city VARCHAR2(100),
country VARCHAR2(100),
address StringList
) NESTED TABLE address STORE AS location_addresses;
(注意:第一个选项允许您对表格应用约束 - 即您可以在UNIQUE
和location_id
上添加address
约束以防止重复或{对NOT NULL
的约束 - 但是,您无法轻易地将约束添加到嵌套表中。)
答案 1 :(得分:1)
不要将其存储在同一个表中,而是创建另一个Address
表。
表的结构可以是
ID ADDRESS
1 Charonne
1 Invalides
这有助于规范化表格。您可以通过在两个表之间使用连接来访问任何用户的地址。