Я новичок в проектировании баз данных и хотел попробовать создать простое веб-приложение для чата, чтобы попрактиковаться в этом навыке.
Я пытаюсь создать приложение чата, похожее на Messenger.com, где пользователи могут отправлять сообщенияконтакты и группы.
Я нашел этот хороший учебник, но у меня возникла проблема с таблицей "сообщений": http://www.vertabelo.com/blog/technical-articles/database-model-for-a-messaging-system
Идея заключалась в том, что когда сообщение отправляетсяДля пользователя «reciever_group_id» равен NULL, а когда сообщение отправляется группе, «reciever_user_id» равен NULL.Однако postgres не позволит добавить сообщение в таблицу «Сообщения», поскольку внешние ключи не могут иметь значение NULL, то есть нарушают ограничение NOT-NULL для reciever_user_id ИЛИ reciever_group_id.
Любые советы?
CREATE TABLE users (
id serial primary key,
username character varying(32) NOT NULL UNIQUE,
password character varying(255) NOT NULL,
name character varying(64) NOT NULL,
image character varying(255),
active int NOT NULL DEFAULT 0
);
CREATE TABLE groups (
id serial primary key,
name character varying(255) NOT NULL
);
CREATE TABLE group_users (
id serial primary key,
user_id serial references users(id),
group_id serial references groups(id)
);
CREATE TABLE messages (
id serial primary key,
user_id serial references users(id),
reciever_user_id serial references users(id),
reciever_group_id serial references groups(id),
body text
);