【发布时间】:2012-06-22 16:51:14
【问题描述】:
我想获取有关每个item 的所有信息。 Items 有全局变量(这里是on_stock),但每个项目在不同的表中也有自己的属性,并且该表的名称与项目类型名称相同。
- 选择项目
- 在类型表 id 上加入其 type_id ->
name - 在
name.id 上加入所选项目
示例如下:
[items]
id | on_stock | type_id
-----+----------+-----------
1 1 1(=car)
2 0 1(=car)
3 1 2(=ship)
4 0 2(=ship)
[types]
id | name
----+--------
1 car
2 ship
[car]
id | top_speed
----+-----------
1 200
2 300
[ship]
id | color
-----+-------
3 red
4 blue
预期结果:
1 on_stock=1 top_speed=200
2 on_stock=0 top_speed=300
3 on_stock=1 color=red
4 on_stock=0 color=blue
请帮助实现这一目标!
【问题讨论】:
-
这就是为什么这不是一个很好的数据库设计。我建议你重新设计你的桌子。这只是该设计给您带来的众多麻烦中的第一个。
-
@JohnFx 这是重新设计的。你能告诉我你会如何重新设计这个吗?
-
@JohnFx 如果我将类型名称存储在 items 表中会更容易,我知道,但这样更优雅,不是吗?
-
需要更多的重新设计。数据库的代码异味是 A)您需要在查询中使用动态表名来完成工作;或 B) 当您有新数据要添加时,您需要修改数据库结构。让我模拟一个更好的快速设计,它会更好地为您服务。一秒。