假设我正在为存在一对零或一 (1-0..1) 关系的场景设计数据库。例如:
因此,我创建了两个对应的表,users
和customers
,但是……
…在给定的 SQL 平台中表示和实现这种情况的最佳方法是什么?我考虑了两种可能的解决方案:
在里面 users
表中,添加customer
可能是 FOREIGN KEY 引用customers
或NULL
标记的列。
在customers
表中,包括一个user
UNIQUE
指向users
表格列(设置有约束)。
我已经在一些论坛上问过类似的问题,但答案基本上是“你需要什么”,“你觉得方便什么”。我不喜欢这种回答。我想要一个严肃的 DB 理论,一个有根据的答案。我在哪里可以读到 1-0..1 关系?
我们的 MySQL 数据库将包含一个百科全书。百科全书将显示在每个页面都包含从一个字母开始的条目的页面中。
我应该使用哪些索引?我应该为字段“标题”设置两个索引(一个长度为 255 的索引用于排序,一个长度为 1 的索引用于按第一个字母进行索引)?
创建表`cyclopedy`( `id` int(10) unsigned NOT NULL auto_increment, `title` varchar(255) 整理 utf8_bin NOT NULL, `article` mediumtext collate utf8_bin NOT NULL, 主键(`id`), KEY `title` (`title`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
好吧,现在我明白长度 1 不足以按第一个字母进行索引,因为 UTF-8 字母可能由三个字节组成。
给我一个参考,如果将空字符串 ( ''
) 分配给一个INT NULL
字段会发生什么。
它变成NULL
或0
吗?
MySQL的所有版本(从5开始)都做同样的事情吗?
有一个表(MySQL)。
它的简化结构:
日期 val INT 未签名
我需要平均值val
:
什么是最简单的方法来做到这一点?
假设一个长(例如 1000000 个条目)MySQL 表的t
一列c
包含少于 10 个不同的 TINYINT 值。
还假设这些值中的大多数(例如 99% 甚至 99.9%)都等于 0。
在此列上添加索引是否会加快如下查询的速度?
SELECT * FROM t WHERE c > 1
Run Code Online (Sandbox Code Playgroud) “组”是一群学生。“话题”是课程的话题。
每个组对应一个主题。(因此每个主题可能有多个组。)
一个学生对应多个组,但每个主题最多一个组。
如何根据 MySQL 中的 UNIQUE 索引和外键实现这一点?