我有以下创建语句:
CREATE TABLE venues
(
id integer NOT NULL,
fs_id varchar,
name varchar,
phone varchar,
address varchar,
latitude double precision,
longitude double precision,
city varchar,
state varchar,
country varchar,
category_fs_id varchar,
category_name varchar,
CONSTRAINT pk_venue_id PRIMARY KEY (id)
);
我可以用一个查询得到我想要的,但列太多了,所以我可以再创建一个表,比如:
CREATE TABLE venues
(
id integer NOT NULL,
fs_id varchar,
name varchar,
category_fs_id varchar,
category_name varchar,
venue_info_id integer,
CONSTRAINT pk_venue_id PRIMARY KEY (id)
CONSTRAINT fk_venue_info_id FOREIGN KEY (venue_info_id)
REFERENCES venue_info (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
);
CREATE TABLE venue_info
(
phone varchar,
address varchar,
latitude double precision,
longitude double precision,
city varchar,
state varchar,
country varchar,
);
但在此之后,我应该为select查询中的每个插入表和联接表编写两个查询这会降低性能吗?还是即使在这种情况下,我也可以用一个查询来完成?
如果所有这些信息都是特定于场地的,则应将其保存在一个表中,而不是单独的表中包含额外信息。根据类型的不同,一个表中最多可以有1600列。(尽管你可能不应该这样做!)尽量让你的表代表你正在处理的实体——venue_info
实际上并不是一个特定的东西。
尽管我可以看到在您的系统中有一个单独的address
表的论点,如果您有许多实体,它们的地址都需要相同的详细信息。
我的看法。不需要细分,因为该表包含所有地址详细信息&仅此而已。我们为什么要分解表的结构,从这里开始。希望,这个链接可能会帮助你。