用SQL或应用程序语言定义数据库模式会更好吗?

我有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) ); 

这样,其他其他平台上的其他应用程序就可以使用数据库,而不会与模式混淆。 在我看来,数据库定义应该独立于应用程序的语言。 有什么我不考虑? 为什么这么多的库为你定义你的数据库模式?

你正在混合数据库和ORM(对象关系映射)库。 数据库存储您的数据,因此总是需要在那里定义模式。 ORM库可帮助您将应用程序的对象映射到数据库的模式。 许多ORM库为模式创build提供了一些function,使生活变得更加简单,但是,他们在数据库中创build了一个SQL模式,就像你自己可以做的一样。 因此,无论您select什么方式,都可以将数据库与其他应用程序一起使用。