小编MDC*_*CCL的帖子

我不应该在列名中使用驼峰命名法吗?

我正在使用 Node.js 创建一个 GraphQL API,它迫使我返回camelCase.

在我的 PostgreSQL 数据库中,我目前的所有列都按照camelCase约定命名,但我在想:这是最好的主意吗?

我应该snake_case在数据库列中使用并在后端转换它们吗?

postgresql database-design naming-convention

5
推荐指数
2
解决办法
7352
查看次数

如何根据另一个表将布尔值放入 SELECT 操作中?

我有两个表:MessageAttachments(代表具有一对多关系的实体类型)如下:

CREATE TABLE message (
    messageId ..., 
    [from]..., 
    [to]..., 
    subject..., 
    body...
);

CREATE TABLE attachments (
    messageId..., 
    filename...
);
Run Code Online (Sandbox Code Playgroud)

我想选择基本消息数据并包含一个位列来表示消息是否有附件。我正在尝试在如下所示的操作中使用 EXISTS:

SELECT  
M.*,
hasAttachments = EXISTS(SELECT AttachmentId 
                          FROM Attachment 
                         WHERE messageId = M.messageId),
FROM Message M
Run Code Online (Sandbox Code Playgroud)

但这不起作用 - 有什么方法可以做我正在寻找的东西?

sql-server-2005 sql-server

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

第六范式,重构查询,高效实现

我发现 Hugh Darwen 为避免我的数据库中的空值而写的这篇论文:链接,它描述了如何以第 6 范式实现数据库,以便您可以避免空值。语言教程 D 中描述了逻辑。我了解如何将所有这些逻辑转换为 SQL Server。但是在最后他展示了在当前的数据库管理系统中可以很好地实现这一点,然后我看到了我需要实现的部分:

  • 重组查询:可以完成,但可能执行得很糟糕。最好将 PERS_INFO 存储为一个单独的表,以便分解产生的表可以作为到它的映射来实现。但是当前的技术并没有将物理存储与逻辑设计完全分开。也许是下一代软件工程师需要解决的问题?

它建议将 PERS_INFO 存储为一个单独的表,但这到底意味着什么?我将如何在 SQL Server 中实现它?

normalization database-design sql-server relational-theory

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

我的ER图是否正确?为什么要使用关系?

这是我第一次为将在 MySQL 上构建的数据库制作实体关系图 (ERD)。相关的业务领域是设备问题管理

在此之前,我永远不会在表之间创建关系,我只会在 MySQLAdmin 中创建表并在我的 PHP/MySQL 代码中进行链接。

我应该建立这些关系有什么理由吗?

我已经阅读了很多关于数据库设计和关系的信息。

我想确保我创建的 ERD 是正确的;我犯错了吗?或者有更好的方法来做到这一点?

正在考虑的 ERD

http://i.stack.imgur.com/XzGWz.png

我的数据库应该做什么:

  1. 我有一个可以创建票证 (issue_tickets) 的用户(用户)列表。
  2. 他们会描述问题,可能会添加一些文件(issue_files)。
  3. 然后将附加其他用户(issue_watchers)来解决问题。
  4. 所有用户(users)都可以对票证(issue_tickets)发表评论。
  5. 一张票 (issue_tickets) 一次只有一个状态 (issue_status)。
  6. 一张票 (issue_tickets) 只有一个类别 (issue_category)。
  7. 一张票(issue_tickets)可以有很多评论(issue_comments)和很多观察者(issue_watchers)
  8. 一张票 (issue_tickets) 只有一个创建该票的用户 (users)。
  9. 一张票(issue_tickets)只适用于一个设备(equipment)。
  10. 一个用户可以创建多张票
  11. 一个设备可以有很多张票

mysql erd database-design mysql-workbench database-diagrams

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

连接错误 (2054) - mysql_old_password 问题仍未解决

我使用 PHP 5.4.3,我想使用普通的面向对象编程 (OOP) 方式远程连接到 MySQL 数据库(为了简洁起见,DB)(PHP 脚本驻留在与 DB 不同的服务器上):

$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
Run Code Online (Sandbox Code Playgroud)

我收到错误:

警告:mysqli::mysqli():服务器请求客户端未知的身份验证方法 [mysql_old_password] 连接错误 (2054) 服务器请求客户端未知的身份验证方法

我找到了这个这个,但它们似乎没有帮助。我使用 PHP 5.2.9,一切正常,但降级 PHP 版本对我来说不是一个解决方案。

我还必须提到,我没有对数据库设置的完全访问权限,因为客户端没有给我这种访问权限。我告诉他向 Hostgator 请求更新的密码格式支持,但他们回答说他们不能做任何超出我预期的事情。我从另一台远程服务器做了一项新的努力,现在我得到了:

连接错误 (1045) 用户“用户”@“主机”的访问被拒绝(使用密码:YES)

使用 PHP 5.3.9。由于远程服务器的 PHP 脚本,数据库似乎没有“让我进入”,但使用 Oracle 的 Workbench 一切正常。

谢谢你的时间。

mysql php mysql-5.5

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

实现一对零或一关系

假设我正在使用 SQL 平台并希望实现基数一对零或一(1-0..1) 的关系。这种情况与业务环境有关,我们可以说:

  • Aproduct可以有零或一price

所以:

  1. 下面显示的两种场景(DDL 结构)之间有什么区别?
  2. 什么时候应该优先选择另一个?
  3. 他们中的任何一个被认为是一个糟糕的设计吗?

场景一:

CREATE TABLE product
(
    product_id       INT      NOT NULL,
    name             CHAR(30) NULL,
    product_price_id INT      NULL,
    CONSTRAINT PK_product       PRIMARY KEY (product_id),
    CONSTRAINT UQ_product_price UNIQUE      (product_price_id)
);

CREATE TABLE product_price
(
    product_price_id INT     NOT NULL,
    price            DECIMAL NOT NULL,
    tax_rate         DECIMAL NOT NULL,
    currency_id      INT     NOT NULL,
    CONSTRAINT PK_product_price            PRIMARY KEY (product_price_id),
    CONSTRAINT FK_product_price_to_product FOREIGN KEY (product_price_id)
        REFERENCES product (product_id)
);
Run Code Online (Sandbox Code Playgroud)

场景2:

CREATE TABLE product
( …
Run Code Online (Sandbox Code Playgroud)

schema database-design

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

在 Oracle 中创建布尔列时的最佳实践是什么?

我再次面临一个严重的问题,即 Oracle 根本没有布尔列类型。我需要使用char(1), 或smallint, 或其他一些。

最佳实践是什么,如何在 Oracle 中模拟布尔值?

(空间消耗现在不重要 - 但与 java/hibernate 线的良好合作很重要)。

oracle datatypes

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

自加入?还是我错了?

我们有一张用于存储客户和物品的表。我们需要能够找到购买了一件商品而没有购买另一件商品的客户:

customer     item  
Sally        1   
Sally        2  
Sally        3
John         1  
John         2  
Paul         2
Paul         3
Run Code Online (Sandbox Code Playgroud)

我们想找到购买“1”而不是“3”的用户。在这种情况下,我们只想要“约翰”。

join except

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

在实体关系图中对子类(或子类型)约束建模

场景描述

有人可以帮助我了解如何模拟以下情况:

  1. 有一个名为的超类(或超类型PRODUCTS,它具有名为和的子类(或子类型)。FOODSHOES

  2. 存在另一个命名为 的超类CUSTOMERS子类命名为SHOE STOREGROCERY STORE

  3. 我需要代表一些规则来表明:

    • FOOD只能送到GROCERY STORES.
    • SHOES可以专门分发给SHOE STORES.

暂定图

我试过下面显示的两个图表:

图表

图表注意事项

顶图

我真的不喜欢 (a) 相同实体类型的重复,即ORDERS,和 (b) 围绕它的关系。

底图

我很确定这不是正确的符号。我是否应该在超类级别创建关系并注意限制将在编程级别实现?

erd database-design database-diagrams subtypes

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

使用 SQL 查找仅与特定列表中的值匹配的行

我有一张这样的表:

  Id    Status
  --    -----------
  1     Closed
  1     In progress
  2     Rejected
  3     Cancelled
  4     Rejected
  4     Closed
  5     In progress
Run Code Online (Sandbox Code Playgroud)

我想说明,有行Status封闭拒绝取消。但是,我想排除具有不同状态值的 ID,即使它们也具有这三个中的任何一个。

所以,对于我的例子,我希望输出是这样的:

  Id    Status
  --    ---------
  2     Rejected
  3     Cancelled
  4     Rejected
  4     Closed
Run Code Online (Sandbox Code Playgroud)

我的查询应该是什么样的?

query except

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