1602 / 1602/jugglingdb

PostgreSQL, relationships - regular column created but there is no foreign key

Open
#430 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
2k
Forks
238
PR merge metrics
No merged PRs in 30d

Description

Code example:

```
var schema = new Schema(driverType, connectionConfig);

var UserToken = schema.define('UserToken', {
token: {type: String, index: true}
}, {
tablename: 'user_token'
});

var User = schema.define('User', {
email: {type: String, allowNull: false, index: true},
password_hash: String,
first_name: String,
last_name: String,
role: {type: String, allowNull: false, default: 'member'},
language: {type: String, default: 'en'},
api_key: String,
active: {type: Boolean, allowNull: false, default: true},
confirmed: Date,
created: {type: Date, default: Date.now},
modified: Date
}, {
tablename: 'users'
});

User.hasMany(UserToken, {as: 'tokens', foreignKey: 'userId'});
UserToken.belongsTo(User, {as: 'user', foreignKey: 'userId'});

schema.automigrate();
```

Got DDLs:

```
CREATE TABLE public."UserToken" (
id serial NOT NULL DEFAULT nextval('"UserToken_id_seq"'::regclass),
token varchar,
"userId" int4,
CONSTRAINT "UserToken_pkey" PRIMARY KEY (id)
);
CREATE TABLE public."User" (
id serial NOT NULL DEFAULT nextval('"User_id_seq"'::regclass),
email varchar NOT NULL,
password_hash varchar,
first_name varchar,
last_name varchar,
role varchar NOT NULL,
"language" varchar,
api_key varchar,
active bool NOT NULL,
confirmed timestamptz,
created timestamptz,
modified timestamptz,
CONSTRAINT "User_pkey" PRIMARY KEY (id)
);
```

So "userId" column created as regular int4, but there is no foreignKey. The use of foreign keys is the basic concept of relational databases, it's required for data integrity.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.