担心表中的字段过多

时间:2012-02-21 20:06:24

标签: php mysql html sql

我目前正在计划我的下一个项目,这是一个基于文本的mmorpg游戏。我目前正在尝试设计数据库的某些部分,并遇到了一些我以前从未遇到过的问题。游戏的一部分允许玩家购买汽车并添加插件。我将完全有一个不同的桌子来管理汽车的插件,但是一个用户可以为一辆汽车配备多达100个插件,这将需要超过100个字段,当然我对这一多个字段不满意因为它可能变得难以管理,有没有其他方法将它们分成多个表?

由于

4 个答案:

答案 0 :(得分:9)

为什么每个插件都必须是一个单独的列?难道你没有一个可以将汽车链接到插件的多对多连接表吗?

Car
ID | Owner
1  | Jacob
2  |  Mary

Addon
ID | Name        | Price
1  | Flame decal | $10
2  | CD Changer  | $150

Car_Addon
Car_ID | Addon_Id
1      |  1
1      |  2
2      |  2

这表明雅各布的汽车有火焰贴纸和换碟机,而玛丽的汽车只有换碟机。

这种方法的优点:

  • 您可以使用外键约束来确保不能创建无效记录
  • 很容易向任何一个方向询问 - 这辆车有哪些插件或哪辆车有给定的插件
  • 关系的含义很明确 - 您不依赖于在单个字段内解码序列化数据
  • 您可以存储有关汽车和插件之间关联的数据 - car_addon表格可以包含添加到该汽车的插件的时间,付款方式,是否属于折扣的一部分包等等。

答案 1 :(得分:7)

你在汽车和插件之间有多对多的关系。您需要一个中间联结表来解决这种关系。

enter image description here

答案 2 :(得分:1)

没有。

将它们拆分为多个表格。如果您在表格中有100多个字段,那么99.9%的时间您没有足够的规范化您的设计。结构严重的数据库的确定标志是许多人口稀少的领域。

你为什么犹豫不决分裂?

答案 3 :(得分:0)

你应该有一个汽车表(ID,名称),例如,一个表用于ADDON(ID,名称),另一个表用于链接这些名为CAR_ADDON(idCar,idADDON)的表。

这将是最好的方法