在一个字段中存储多个引用

时间:2015-12-04 17:31:57

标签: mysql

我需要为表的每一行存储对其他5个表的可能引用,因为我需要知道,对于五个表中的每一个,是否有对该行的引用。

我正在考虑使用“二进制类型”代码,因此对于每个表我将有一个“0/1”,对于五个表我将从“00000”(对于没有引用)到“11111”(五个参考文献)。

所以,如果我只引用表3,我将存储“00100”。

现在我的问题是:

1)这是个好主意吗?有更好的解决方案吗?

2)我需要使用哪种领域? (我在想ENUM)

编辑(清除)

我需要知道我是否需要访问(或不访问)五个表中的每个表来获取与该行相关的数据。

这五个表是web表,所以我需要知道我是否可以在表上找到信息。

编辑2 (进一步澄清)

我不查询网络表:我通过代码从他们那里获取信息。代码从我的数据库中读取,以了解需要访问多少Web表以及现有的5个。

1 个答案:

答案 0 :(得分:0)

我可能会将信息存储在关系数据库管理系统中;尽可能接近第3范式或更好。这意味着我会有两张桌子。

一个表列出了可用选项。第二个表列出了与该对象相关联的所有选项,这些选项正在访问5个Web表。

我这样做的原因与能够扩展应用程序有关。如果其他Web表可用,或者随着时间的推移其他对象需要访问不同的Web对象,则此模型将支持Web对象数量和访问Web对象的对象的增长,而无需触摸代码。

现在,如果保证不会发生这种情况,那么我可以看到将值存储在位置重要的单个字段中;也许使用" SET"数据类型。但鉴于几乎没有保证,我可能不会采用这种方法,因为它没有代码更改就无法扩展,并且在音量不足的情况下表现不佳。

解决您的具体问题:

1)这是个好主意吗?有更好的解决方案吗?

就我个人而言,我觉得这个想法很差,因为如果没有代码更改就无法轻松扩展;而且我没有看到如何在不使用设置数据类型的情况下将ENUM存储在一个字段中。 (这两个工作很好但我不认为我在一个字段中存储多个值时没有设置ENUM)我更喜欢更多的关系方法。但是,如果我们知道它永远不会增长,那么我认为这种方法是合理的。

2)我需要使用哪种字段? (我在考虑ENUM)

我更喜欢SET数据类型。我认为它更容易扩展并且更加一致。我不确定如何多选ENUM数据类型;不以关系方式存储或使用设置数据类型。如果您要添加新表来存储ENUM值,那么这与我的推荐值大致相同。

但是我对ENUM的曝光和使用在这方面是有限的;所以我可能没有一些经验可以使这成为一种合理的方法。