我目前正在计划一个表在MYSQL数据库中的外观。我想做类似下面的事情,其中plant1和plant2将成为列,然后每个植物将具有分配给它们的特征,如下所示。
是否可以在MYSQL中以这种方式显示信息?
Array (
[plant1] => Array (
[image_url] => http://www.example.com/image1.png
[botanical_name] => Foo
[common_name] => Bar
),
[plant2] => Array (
[image_url] => http://www.example.com/image2.png
[botanical_name] => Foo
[common_name] => Bar
)
答案 0 :(得分:0)
您可以将其存储为序列化值(http://www.php.net/manual/en/function.serialize.php),但这不是一个好主意。
为此你必须创建另一个表来存储每个植物的特征,如:
**plants**
id_plant
name
**plants_ccharacteristics**
id_plant_characteristic
fk_plant
name
value
通过这种方式,您可以正确存储它。
作为一个额外的观点,您想要存储的结构看起来非常适合使用像MongoDB这样的NoSQL数据库。
答案 1 :(得分:0)
你的桌面设计存在缺陷。你应该拥有的是Plant是一行,数组中的每个项目都是植物表中的一列。
如果您需要将Plants作为另一个表中的列,则将plants表的第一列指定为唯一的自动递增键,然后将该键放在另一个表的列中。例如:
**Garden_Plants**
gp_key
gp_garden_id
gp_plant_id <-- p_id from Plants_Table
**Plants_Table**
p_id
p_botanical_name
p_common_name
p_image_url
答案 2 :(得分:0)
您将拥有一个名为plants的表,这将有一个名为plantDetails的相关表,该表具有来自相关工厂的引用ID。
这将给出1个植物,有多个参考
答案 3 :(得分:0)
这对于查询数据库似乎没有优化,但是如果您有这样做的具体原因,请告诉我们..
更优化的解决方案:
有一个名为Plants的表,其中包含字段ID,image_url,botanical_name,common_name。
将所有植物存放在该表中。 ID是该工厂的唯一标识符,可能设置为自动编号,因此无法重复
如果您需要在两个植物之间存储某种关系,请使用名为plant_relationships的表格,其中包含类似于plant_ID_1和plant_ID_2
的字段然后,您可以直接查询完整的植物清单,或查询关系表以查找与其他植物相关的植物
答案 4 :(得分:0)
如果你想在一个mysql字段中有多个值,我建议在将信息存储到数据库之前将其放在一个字符串中。每个子字符串都需要由不在子字符串中使用的字符分隔。
$value1 = aaa
$value2 = bbb
$value3 = ccc
$valueAll = aaa:bbb:ccc
当您从数据库中获取数据时,您需要将字符串拆分为:或选择其他字符。
答案 5 :(得分:0)
好吧,我不建议这样做,但你可以将php数组插入该字段,然后在从数据库获取数据时在php中解析它。所以那个领域的内容就是这样:
$plant1 = array('plant1' => array('image_url' => 'http://www.example.com/image1.png', 'botanical_name' => 'Foo', 'common_name' => 'Bar'));
$plant2 = array('plant2' => array('image_url' => 'http://www.example.com/image2.png', 'botanical_name' => 'Foo', 'common_name' => 'Bar'));
您可以将$plant1
$plant2
插入到您的mysql字段中,然后将其打印出来以获得想要的结果:
print_r(array_merge($mysql_plant1, $mysql_plant2));
函数array_merge
将数组连接在一起。