【问题标题】:Is it better to define your database schemas in SQL or with the application language?用 SQL 或应用程序语言定义数据库模式更好吗?
【发布时间】:2016-06-13 04:47:06
【问题描述】:

我有 2 个服务正在运行。一个是 Node.js 应用程序,另一个是 PSQL 数据库。我不确定我应该在哪里定义我的数据库模式。

Sequelize 等一些库使用应用程序语言(在这种情况下为 javascript)定义它。

var User = sequelize.define('user', {
  firstName: {
    type: Sequelize.STRING,
    field: 'first_name' // Will result in an attribute that is firstName when user facing but first_name in the database
  },
  lastName: {
    type: Sequelize.STRING
  }
});

但我认为用纯 SQL 定义它们会更好

CREATE TABLE users (
  id SERIAL,
  first_name varchar(85),
  PRIMARY KEY (id)
);

这样,其他平台上的其他应用程序可以使用数据库,而无需搞砸模式。在我看来,数据库定义应该独立于应用程序的语言。有什么我没有考虑的吗?为什么这么多库会为您定义数据库架构?

【问题讨论】:

    标签: sql node.js database sequelize.js psql


    【解决方案1】:

    您正在混淆数据库和 ORM(对象关系映射)库。数据库存储您的数据,因此始终需要在那里定义模式。 ORM 库可帮助您将应用程序的对象映射到数据库的模式。许多 ORM 库提供模式创建功能以使生活更轻松,但在幕后,它们使用数据库中的 SQL 创建模式,就像您可以自己做的那样。 因此,无论您选择哪种方式,您都可以将数据库与其他应用程序一起使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2015-05-09
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      • 2021-03-10
      相关资源
      最近更新 更多