在SQL还是应用程序语言中定义数据库模式更好?

3

我有两个服务正在运行。一个是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)
);

这种方法可以使其他平台上的其他应用程序在不影响模式的情况下使用数据库。据我所知,数据库定义应该独立于应用程序的语言。我是否遗漏了什么?为什么许多库都会为你定义数据库模式?
1个回答

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接