gpt4 book ai didi

json - REST API 的数据库列命名

转载 作者:行者123 更新时间:2023-12-03 18:50:11 31 4
gpt4 key购买 nike

tl/博士;

我的 db 和 JSON-Keys 中的列名是否都应该是 camelCase
或者

我的 db 和 JSON-Keys 中的列名是否都应该是 uppercase SNAKE_CASE
加长版

我正在设计一个与 sqlite 数据库通信的 REST API。我一直在关注一些 google 样式指南,尤其是 JSON 的指南。 .正如它所提到的, Camel 箱是 JSON 的首选样式。我还看到了 的评论。蛇盒 阅读起来更容易了约 20%。

目前,我已经实现了执行 SQL 查询的函数,将结果作为表对象接收,然后使用 json-smart 将其转换为实际的 JSON 字符串。

我在数据库中使用的列名实际上是 upper SNAKE_CASE ,因为这只是对 a standardized format for database column names 的少数引用.这个上SNAKE_CASE列名成为返回 JSON 中键值对的一部分。

所以,由于我处于设计的早期阶段,在我的数据库中使用驼峰式列标签或坚持 upper CAMEL_CASE 似乎合理吗? ,从而打破 JSON 标准?我不想在应用程序中的 sql 查询之后转换名称,因为这会增加不必要的复杂性和潜在的性能障碍。

最佳答案

你可能问错了问题。

一些预备知识

作为一名 DBA,按照一个接口(interface)指南命名数据库对象远非最佳实践。我的必须作为来源

  • HTML,
  • json,
  • XML,
  • 文字,
  • pdf,
  • 短信(短信),
  • 电子邮件,
  • 直邮和
  • 其他我想不到的头顶。

  • 用多种语言编写的程序可以访问数据库。

    在 SQL 中,标识符可能会或可能不会被分隔(用引号括起来)。 SQL 标准要求将未定界标识符折叠为大写。这意味着 select camelCase被处理为 CAMELCASE .要保留大小写,您必须使用分隔标识符,如 select "camelCase" .

    PostgreSQL 通过折叠成小写来偏离。 (列 foo、Foo 和 FOO 是相同的。)

    SQLite 通过使用双引号来区分标识符,而不是保留大小写。 (列“foo”、“Foo”和“FOO”是相同的,但作为列标题返回的名称保留了 CREATE TABLE 语句中的大小写,无论您是否使用分隔标识符。)

    列名作为键

    仅当您打算将列名用作 json 键时,您的问题才有意义。

    PostgreSQL 原生支持 json 9.3+;默认情况下,它不使用列名作为 json 键。例如,这里 PostgreSQL 使用 f1、f2、f3 和 f4 作为 json 键,而不是列名“cust_id”、“addr_type”等。
    select row_to_json(row(cust_id, addr_type, street_addr, city_name))
    from test;
    row_to_json--{"f1":1,"f2":"bill","f3":"123 Main St","f4":"Anytown"}

    You can get arbitrary key names by using a common table expression. There are other ways; none of them are especially pleasant.

    WITH data("custId", "addrType", "streetAddr", "cityName") AS (
    select cust_id, addr_type, street_addr, city_name
    from test
    )
    SELECT row_to_json(data) FROM data;

    row_to_json
    --
    {"custId":1,"addrType":"bill","streetAddr":"123 Main St","cityName":"Anytown"}

    SQLite 对 json 没有任何原生支持。所有 json 功能都必须来自应用程序代码。

    所以你需要问,“我使用的第一种应用程序语言是做什么来从数据库查询中创建 json 键的?”它可能不会是您使用的最后一种语言。下一个可能不会以同样的方式工作。记住这一点。

    我认为我没有见过一种默认情况下在生成 json 时读取数据库元数据的编程语言。

    关于json - REST API 的数据库列命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28419951/

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