【发布时间】:2014-09-20 18:40:55
【问题描述】:
对于配置数据之类的东西,我一直使用以下表结构:
- id(int11) 主要 AI
- 名称(varchar255)
- 值(varchar255)
可能的行如下:
- (1) site_name > '我的网站'
- (2) admin_email > 'some@email.com'
虽然这可行,但我觉得它没有达到配置相关数据的一般目的:
- 它可以包含多个同名的条目>值关系。我可以有多个“背景颜色”条目。
- 表格感觉很笨重,因为 ID 列是不必要的。
克服上述问题的最佳实践或方法是什么,创建一个仍可被索引并具有唯一“名称”值的表,但显然仍要考虑其他表可能与上表?
【问题讨论】:
-
您的
name显然应该是唯一的密钥,除此之外我认为我无法提出任何建议。 -
如果你有两行
name = 'duck',你怎么知道使用哪个?您需要某种标识符,例如条目类型或其他内容。 -
您也可以将“名称”列设为主键
-
是否最好放弃
id,因为它并没有真正被使用并让name成为主要/唯一?还可能出现哪些性能问题?一个站点实际上只有这么多的配置数据,将 varchar 列作为主要列会对最多 50 行的性能产生影响吗?
标签: php mysql sql database-design