数据库设计的一些讨论
2009-04-20 19:32
274 查看
根据斑竹的推荐,数据库设计中不应有实际意义的id,但实践中却经常出现有业务意义的id,
如:
create table users (
user_id varchar(10),
user_password varchar(10));
这个表,大多都是使用user_id作为主键,如果不用它做主键,那就要增加一个字段 id 作为字段,而且还要对 user_id 作唯一性索引,似乎会有效率上的损失,不知各位的看法...
第一,不会有效率损失
第二,在你这种情况下,使用user_id做主键,会非常糟糕!
举一个实际的例子,拿本论坛来说,前不久一个版主要我帮他改他的user_id。但是user表关联了另外3个表,也就是说,实际上user表的主键同时作为其他3个表的外键。假设我用user_id做了主键,那么我修改这个版主的user_id的话,我需要同时修改4个表,修改很多条记录。而由于本论坛使用了无业务意义的id做主键,user_id只是唯一性约束的字段,因此我只需要修改user表这一个记录的user_id值,那么就OK了,所有关于这个版主的信息的4张表都被改好了。
如:
create table users (
user_id varchar(10),
user_password varchar(10));
这个表,大多都是使用user_id作为主键,如果不用它做主键,那就要增加一个字段 id 作为字段,而且还要对 user_id 作唯一性索引,似乎会有效率上的损失,不知各位的看法...
第一,不会有效率损失
第二,在你这种情况下,使用user_id做主键,会非常糟糕!
举一个实际的例子,拿本论坛来说,前不久一个版主要我帮他改他的user_id。但是user表关联了另外3个表,也就是说,实际上user表的主键同时作为其他3个表的外键。假设我用user_id做了主键,那么我修改这个版主的user_id的话,我需要同时修改4个表,修改很多条记录。而由于本论坛使用了无业务意义的id做主键,user_id只是唯一性约束的字段,因此我只需要修改user表这一个记录的user_id值,那么就OK了,所有关于这个版主的信息的4张表都被改好了。
相关文章推荐
- 数据库设计中一些注意事项
- 数据库设计中的一些技巧
- 魔兽世界电子令牌数据库设计的一些推测
- 数据库设计中,多对多关系使用使用逗号分割关联讨论
- 关于大型数据库设计的一些建议
- 转:表设计兼一些设计分析的讨论
- MySQL优化技巧之四(数据库设计中的一些技巧)
- 数据库设计中的一些原则
- sql server 数据库设计表的一些小问题
- 数据库设计中的一些问题
- 关于数据库设计的一些概念
- 数据库设计的一些小技巧
- NoSql数据库使用半年后在设计上面的一些心得
- 数据库70多张表设计的一些思考…
- 数据库设计:关于数据库范式一些理解
- 在Domino中如何为一些特定的邮箱数据库更新设计
- 码农们来一起讨论下数据库设计....
- oracle 数据库设计的一些原则
- 数据库设计时设计标识字段的一些思考[mysql]
- NoSql数据库使用半年后在设计上面的一些心得 (转)