在mysql中存储阵列数组
我正在制作一个表格,其中包括不同类型的汽车:轿车、卡车等。它们由一系列国家生产,每个国家都有一系列制造商,如日本有丰田、本田等,美国有福特、通用等。一旦建立了数据库,我需要执行“选择所有丰田制造的车辆”等操作在mysql中存储阵列数组,mysql,sql,database,arrays,set,Mysql,Sql,Database,Arrays,Set,我正在制作一个表格,其中包括不同类型的汽车:轿车、卡车等。它们由一系列国家生产,每个国家都有一系列制造商,如日本有丰田、本田等,美国有福特、通用等。一旦建立了数据库,我需要执行“选择所有丰田制造的车辆”等操作 什么是最好的存储方式?为什么不干脆有一张叫做汽车的桌子, 然后是像汽车、模型、公司、国家这样的排 然后你就可以 SELECT * FROM Automobiles WHERE Company = 'Toyota' AND Country = 'Japan' 数据结构不一定与数组结构相同。
什么是最好的存储方式?为什么不干脆有一张叫做汽车的桌子, 然后是像汽车、模型、公司、国家这样的排 然后你就可以
SELECT * FROM Automobiles WHERE Company = 'Toyota' AND Country = 'Japan'
数据结构不一定与数组结构相同。关键词是“规范化”:以避免冗余的方式设计表,并确保表中的每个记录都包含与描述特定表主题相关的信息 一种可能的结构可以是:
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, ... )
表vehicles
的void
列引用了oem
(原始设备制造商)表的主键oid
典型的查询可以是以下内容:
select * from vehicles where
exists (select 1 from oem where oid=void and countryid=7)
countryid
只是一个整数键,引用另一个包含国家名称等的表(此处未列出)。。假设country表的记录7包含“Japan”,则上述查询将列出日本制造的所有车辆
或者——回到你最初的例子-
select * from vehicles where
exists (select 1 from oem where oid=void and oname='Toyota')
将列出该特定制造商的所有车辆
这个小例子只是你理解“标准化”的起点。就像Marc B已经说过的:自己研究这个概念,你就能自己回答你的问题。下面是另一个可能有帮助的基于示例的链接:。您应该学习基本的数据库技术,尤其是,然后您将能够自己回答这个问题。最好的方法是不要使用数组。数组在数据库中是可怕的,如果您所做的只是存储数组,那么您还不如在某个地方引用文本文件。研究一下数据规范化以及如何在不使用数组的情况下存储数据。(MarcB抢先发表评论;))不,我不需要数组。我曾考虑序列化为JSON,但怀疑这是一个标准的数据库问题。看起来确实如此,从一群高中天才的投票结果来看,他们否决了所有他们知道答案的问题。谢谢西奥多。那就行了。这也意味着每个数据对象都会扩展成一个可能非常长的表,对吗?我同意,但想知道这是否是标准方式。我不知道这样做是否正确,但我过去有一个类似列的设置,基本上包含json数组。但是可能有一些更好的使用sql的方法,我只是不知道。对我来说,这是一个很好的开始。谢谢