gpt4 book ai didi

php - 为什么不应该在 sql 字段名称中包含逗号?

转载 作者:太空宇宙 更新时间:2023-11-03 10:57:53 24 4
gpt4 key购买 nike

人们一直告诉我列名中不应包含空格。我只是想知道,这是为什么?这是我为学校创建的一些数据库表遇到的问题。字段名称包括 Preble 和 Darke。

相反,它们需要是“Preble County (OH)”和“Darke County (OH)”。如果它们是行名称,我将只创建一个 ID # 列,然后将其与显示我希望它们成为的名称的表自然连接(“Darke County (OH)”而不是“Darke”)。

但是,我不知道如何更改这些名称,因为它们是我的字段名称。谁能帮我吗?任何帮助将不胜感激。

最佳答案

tldr; 尝试包含逗号(或其他特殊字符)通常表示列名称2 存在根本性缺陷。

这是一个糟糕的数据库设计。它不好,因为它试图将信息编码为列名1。这不是列名的重点!列名只是记录/元组元素的友好绰号 - 仅此而已。在关系代数 (RA) 和 SQL 下,它是包含信息的记录/元组。

除了导致难以处理的模式(额外的引用语法)需要基于不断变化的信息(列名和多重性)的硬编码查询之外,也不可能与许多 RA 技术一起使用一种灵活的方式。 RA 通常只能处理跨记录的多重性 - 正如所发现的那样,这包括连接。

相反,模式应该看起来类似于:

County    State   Other Columns=======   =====   =============Darke     OH      ..Prebel    OH      ..

例如,键所在的位置 (State,County) 和“Other Columns”取决于键。当然,模型应该相对于捕获的所有其他信息正确归一化。

请注意,上面显示的列名称中没有存储任何信息:名称只是代表存储在每列中的信息的友好名字。


1 现在是 PIVOT transformation ,主要用于人工输出/显示,可以根据需要执行。这是输出表(不是模式表!)中的一列,是按记录值集生成的。但是,这是次要问题,不应影响主要架构。

如果使用 SQL Server,可以先 UNPIVOT 信息填充的列名,执行连接,然后重新 PIVOT(给定一组已知的列名)。但是,我不知道这将如何在 MySQL 中完成——也许是一个困惑的动态查询。无论如何,这是我会避免的方法。


2 虽然裸标识符中不允许使用特殊字符,但可以在带引号的标识符中使用此类名称 - 例如`华盛顿州温哥华` 或使用 ANSI quotes ,“华盛顿州温哥华”。但是,请继续阅读反对使用此类标识符的此回复的其余部分。

关于php - 为什么不应该在 sql 字段名称中包含逗号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18704522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com