在mysql中存储数组数组

时间:2013-09-09 21:46:19

标签: mysql sql database arrays set

我正在制作各种类型车辆的产品表:汽车,卡车等。它们由一系列国家制造,每个国家都有一系列制造商,如日本有丰田,本田等,美国有福特,通用汽车等。一旦建立了数据库,我就需要进行类似&#34的操作;选择丰田制造的所有车辆"。

存储它的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

数据结构不一定与数组结构相同。关键词是“规范化”:以避免冗余的方式设计表格,并确保表格中的每条记录都包含与描述特定表格主题相关的信息。

可能的结构可能是:

create table vehicles(
vid int auto_increment primary key,
void int,
vname nvarchar(32),
vtype int,
vmotor varchar(32), ...)

create table oem (
oid int auto_increment primary key,
oname nvarchar(32),
countryid int, ... )

void的列vehicles引用oid(原始设备制造商)表的主键oem

典型的查询可以是:

select * from vehicles where 
exists (select 1 from oem where oid=void and countryid=7)

countryid只是一个整数键,引用另一个包含国家/地区名称等的表(此处未列出)。假设国家/地区表的记录7包含“日本”,则上述查询将列出所有在日本。

或 - 回到原来的例子 -

select * from vehicles where 
exists (select 1 from oem where oid=void and oname='Toyota')

会列出该特定制造商的所有车辆。

这个小例子只是你理解“规范化”的起点。就像Marc B已经说过:为自己研究这个概念,你将能够自己回答你的问题。以下是另一个可能有用的基于示例的链接:http://db.grussell.org/section008.html

答案 1 :(得分:0)

为什么不只有一张名为Automobiles的表, 然后是像Car,Model,Company,Country

这样的行

然后你可以

SELECT * FROM Automobiles WHERE Company = 'Toyota' AND Country = 'Japan'