我有一张用于留言板的表格(见下文)。我知道最佳实践要求创建Primary Key
,但我认为没有理由创建一个UID, GRP_ID
。我将主要搜索(Last_timestp
)并将创建一个索引。删除将基于PK
。在这种情况下,是否应该有CREATE TABLE CP.CHAT
(UID BIGINT NOT NULL, GRP_ID BIGINT NOT NULL, CHAT VARCHAR(200) NOT NULL, LAST_TIMESTP TIMESTAMP);
?
class MyCustomException extends Exception {
public static function errorHandlerCallback($code, $string, $file, $line, $context) {
$e = new self($string, $code);
$e->line = $line;
$e->file = $file;
throw $e;
}
}
set_error_handler(['MyCustomException', 'errorHandlerCallback'], E_ALL);
答案 0 :(得分:0)
不需要主键,您的表格也可以正常使用。
以下是我几乎总是使用主键的一些原因。
他们让您唯一地定位一行。如果您有多行具有完全相同的数据,则将其删除可能会非常繁琐。
它们为表提供隐式排序。如果要对数据库进行故障排除,则按键顺序会告诉您创建它们的顺序。
最终,PK占用的空间在存储空间方面不会成为数据库的巨大开销。拥有它并没有什么坏处,但它可以帮助它。
答案 1 :(得分:0)
我认为没有必要告诉你主键是什么以及它的用途。看来你已经知道了,并且结构很好。
问题是,如果你没有任何其他依赖于这个表的表,那么你的表设置就足够了。由于你已经有了一个UID列,我说我会把它变成PK,因为它在存储方面不会花费太多,但也可以帮助你对表进行排序(通过自动递增整数)并且可以作为选择性的删除和更新操作。
仍然无法弄清楚你将如何通过Last_timestp值删除记录,但是......