配置数据的MySQL表结构

时间:2014-07-29 11:44:54

标签: php mysql sql database-design

我总是使用以下表格结构来配置数据:

  • id(int11)主要AI
  • name(varchar255)
  • 值(varchar255)

可能的行如:

  • (1)site_name> '我的网站'
  • (2)admin_email> 'some@email.com'

虽然这很有效,但我认为配置相关数据的一般用途不符合:

  • 它可以包含多个具有相同名称>值关系的条目。我可以有多个“背景颜色”条目。
  • 由于ID栏不可取,桌子感觉很笨重。

克服上述内容的最佳实践或方法是什么,创建一个仍然可以编入索引并具有唯一“名称”值的表,但显然仍然考虑到其他表可能与某些键/值之间存在关系。上表?

1 个答案:

答案 0 :(得分:1)

您可以为name字段添加唯一键。这将阻止表中的双重名称。

ALTER IGNORE TABLE tablename ADD UNIQUE (name);

提示:来自manual

  

IGNORE是标准SQL的MySQL扩展。它控制ALTER的方式   如果新表中的唯一键上有重复项,则表可用   如果启用严格模式时发生警告。如果不是IGNORE   如果指定,则复制将被中止并在重复键错误时回滚   发生。如果指定了IGNORE,则只使用行的一行   复制一个唯一的密钥。其他冲突的行将被删除。   不正确的值被截断为最接近的匹配可接受   值。