2014-10-19 68 views
0

我有一个JDBC MySQL数据库中的一个表,它具有唯一字符串字段的记录,该字符串是一个URL。每个网址需要有一个以该确切网址命名的表格。作为表名称的URL

问题: 某些URL由超过64个字符组成,超过了表标识符的最大长度(MySQL Reference)。 URL包含不允许的字符。

我该如何处理? 我的想法是找到或创建一种编码器,它将遵循限制并充当双射功能。有任何想法吗?

+1

为什么不使用附加表从URL中存储的映射到一个表名?你可以使用表名如table1,table2,... – Barry 2014-10-19 15:01:08

+0

除了这是一个可怕的想法,你可以存储散列值,SHA1生成确切的32个字节,这样你就可以用64个字符来表示它。 – msrd0 2014-10-19 15:07:32

回答

0

将表格命名为URL是一个可怕的想法。您不仅会遇到最大名称长度问题,还会遇到编码问题和转义问题。

一个更好的方法将生成自动名称(表1,表2等),并有一个URL映射到为其创建的表的索引表

0

每个URL的表?不,这很愚蠢。

您应该有一个带有URL的表格,另一个带有1:多关系的表格。你的想法不可扩展。

我建议您不要使用URL作为主键。

一个更好的想法是从数据库中自动生成密钥并在URL列上使用UNIQUE约束。如果您愿意,现在您的URL可以是CLOB。不应该以这种方式与任何length limitations发生冲突。