相关疑难解决方法(0)

每个表都应该有一个主键吗?

我正在创建一个数据库表,并且没有为其分配逻辑主键.所以,我正考虑在没有主键的情况下离开它,但我对此感到有点内疚.我是不是该?

每个表都应该有一个主键吗?

database database-design

319
推荐指数
9
解决办法
24万
查看次数

MySQL唯一ID或组合ID

我的项目和开发人员计划有以下结构:

developer table
id
developer name
etc...

project table
id
project name
etc...

developer _project table
???
Run Code Online (Sandbox Code Playgroud)

因为开发人员可以在多个项目中,并且项目可以有多个开发人员,所以我必须创建一个新表,但从我读到的是他们不知道我应该使用什么ID.

如果我使用id自动增量+ user_id + project_id,我会重复,因为id是主键吗?

mysql primary-key

12
推荐指数
2
解决办法
906
查看次数

表没有phpMyAdmin中的唯一列

这是我的表:

CREATE TABLE group_edits (
  vfile_id bigint(20) unsigned NOT NULL,
  editor_id int(10) unsigned NOT NULL,
  edits text
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

没有唯一索引,因为一个editor_id可以编辑多个vfile_id,也可以通过多个editor_id编辑一个vfile_id.

phpMyAdmin 4.1.6不允许我编辑这个表说:

Current selection does not contain a unique column. Grid edit, checkbox, Edit, Copy and Delete features are not available.
Run Code Online (Sandbox Code Playgroud)

现在它让我觉得这样的桌子有什么问题吗?当您获取editor_id和vfile_id的值时,行是唯一的,而单独的列都不是唯一的.

我知道要修复它我可以添加

`ID` int(11) NOT NULL AUTO_INCREMENT,
Run Code Online (Sandbox Code Playgroud)

但它并不反映我的数据库架构的设计,我想避免添加技巧只是为了使phpMyAdmin工作.

我的数据库设计是错误的还是phpMyAdmin?

mysql phpmyadmin

4
推荐指数
1
解决办法
2万
查看次数

SQL表中的ID字段:规则还是法律?

只是一个快速的数据库设计问题:你是否总是在每张表中使用ID字段,或者只是大部分?显然,您的大多数表都会受益,但是您是否曾经有过可能不想使用ID字段的表格?

例如,我想添加向另一个表(foo)中的对象添加标签的功能.所以我有一个带有varchar字段的表FooTag来保存标记,还有一个fooID字段来引用foo中的行.我真的需要围绕一个基本上任意的ID字段创建聚簇索引吗?使用fooID和我的文本字段作为聚集索引会不会更有效率,因为我几乎总是会通过fooID进行搜索?另外,使用聚集索引中的文本可以保持数据的排序,使我在查询数据时更容易排序.缺点是插入需要更长时间,但不会被选择期间的增益所抵消,这种情况会更频繁地发生?

您对ID字段有何看法?可弯曲的规则,还是坚不可摧的法律?

编辑:我知道提供的示例未规范化.如果标记是项目的主要部分,标记了多个表,以及其他"附加",那么双表解决方案将是一个明确的答案.但是在这个最简单的情况下,归一化是否值得?它会节省一些空间,但在运行查询时需要额外的连接

sql

1
推荐指数
1
解决办法
835
查看次数

普通密钥是否应包含主密钥?

这个问题与 MySQL表需要一个ID有关吗?

有一个无意义的auto_incremental ID作为表的PRIMARY KEY,然后当我创建其他KEY时,我应该在KEY中包含这个ID吗?

例如,在此表中:

CREATE TABLE `location` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `country` varchar(50),
  `states`  varchar(50),
  `city`    varchar(50),
  `county`  varchar(50),
  `zip`     int(5),
  PRIMARY KEY(ID),
  KEY zip1 (zip),
  KEY zip2 (zip, ID)
} ENGINE=InnoDB ;
Run Code Online (Sandbox Code Playgroud)

因为我需要使用邮政编码搜索表格,所以我需要一个从邮政编码开始的KEY.我应该使用KEY zip1或KEY zip2.这两个KEY中哪一个更好?

mysql indexing innodb

1
推荐指数
1
解决办法
773
查看次数