相关疑难解决方法(0)

外键约束:何时使用ON UPDATE和ON DELETE

我正在使用MySQL Workbench设计我的数据库模式,这非常酷,因为你可以做图表并转换它们:P

无论如何,我决定使用InnoDB因为它的外键支持.我注意到的一件事是,它允许您为外键设置On Update和Delete选项.有人可以解释在一个简单的例子中可以使用"限制","级联"和设置null的位置吗?

例如,假设我有一个user包含a 的表userID.并说我有一个message多对多的消息表,它有2个外键(userIDuser表中引用相同的主键).在这种情况下,设置On Update和On Delete选项是否有用?如果是这样,我选择哪一个?如果这不是一个好例子,你能否提出一个很好的例子来说明这些如何有用?

谢谢

mysql sql database foreign-keys

181
推荐指数
1
解决办法
13万
查看次数

代理与自然/商业密钥

我们再来一次,旧的论点仍然出现......

我们是否更好地将业务密钥作为主键,或者我们是否更愿意在业务键字段上具有唯一约束的代理ID(即SQL Server标识)?

请提供支持您的理论的示例或证明.

database database-design key primary-key

166
推荐指数
13
解决办法
6万
查看次数

UNIQUE约束是否自动在字段上创建INDEX?

我应该在列上定义一个单独的索引email(用于搜索目的),还是"自动"添加索引以及UNIQ_EMAIL_USER约束?

CREATE TABLE IF NOT EXISTS `customer` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `first` varchar(255) NOT NULL,
  `last` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `created_at` datetime NOT NULL,
  `updated_at` datetime NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UNIQ_SLUG` (`slug`),
  UNIQUE KEY `UNIQ_EMAIL_USER` (`email`,`user_id`),
  KEY `IDX_USER` (`user_id`)
) ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)

编辑:正如Corbin所建议我EXPLAIN SELECT * FROM customer WHERE email = 'address'在空桌上查询.这是结果,我不知道如何解释它:

id select_type type possible_keys key  key_len …
Run Code Online (Sandbox Code Playgroud)

mysql sql indexing

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