Моей база данных/таблицы каждой конечной точки/сфера имеет несколько таблицы,
например пользователь: пользователь, user_information, USER_ROLE ...
мне было интересно, я должен разделить таблицу, как показано ниже, или не?Дизайн базы данных. И получить время последнего изменения с каждым столбцом в PostgreSQL
Это мой первый раз, когда вы строите продукт не так, как прежде, просто сделайте небольшой рабочий сайт небольшой работы. и это может добавить больше возможностей в будущую версию.
Я не уверен, что это переоценка? Разделяет ли таблица такую выгоду в будущем?
и недостатки, о которых я знаю, - это использование большего количества соединений в таблице, и мне труднее поддерживать построение запроса.
любое предложение, обмен опытом будет по-настоящему оценено.
На данный момент я только могу себе представить, что, возможно, захочу узнать каждое последнее измененное время колонки?
Так что, если я хочу знать каждое последнее измененное время столбца, есть ли какой-либо исходный метод сборки в PostgreSQL? или я должен добавить для каждого столбца, как email_last_modified_date
, username_last_modified_date
...
конечная точка/Scope пользователя
CREATE TABLE IF NOT EXISTS "user"(
"id" SERIAL NOT NULL,
"create_date" timestamp without time zone NOT NULL,
"last_modified_date" timestamp without time zone,
"last_modified_by_user_id" integer,
"status" integer NOT NULL,
PRIMARY KEY ("id")
);
CREATE TABLE IF NOT EXISTS "user_information"(
"id" SERIAL NOT NULL,
"create_date" timestamp without time zone NOT NULL,
"last_modified_date" timestamp without time zone,
"last_modified_by_user_id" integer,
"user_id" integer NOT NULL,
"email" varchar(100) NOT NULL,
"username" varchar(50),
"password" varchar NOT NULL,
"first_name" varchar(50),
"last_name" varchar(50),
"website" varchar,
"description" varchar,
"birth_date" timestamp without time zone,
"country" varchar(50),
"gender" integer,
"file_type" integer,
"file_name" varchar(50),
"file_extension" varchar(50),
"file_portrait" boolean,
PRIMARY KEY ("id"),
FOREIGN KEY ("user_id") REFERENCES "user" ("id") ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS "user_role"(
"id" SERIAL NOT NULL,
"create_date" timestamp without time zone NOT NULL,
"last_modified_date" timestamp without time zone,
"last_modified_by_user_id" integer,
"user_id" integer NOT NULL,
"role" integer NOT NULL,
PRIMARY KEY ("id"),
FOREIGN KEY ("user_id") REFERENCES "user" ("id") ON DELETE CASCADE ON UPDATE CASCADE
);
Объединить таблицы?
CREATE TABLE IF NOT EXISTS "user"(
"id" SERIAL NOT NULL,
"create_date" timestamp without time zone NOT NULL,
"last_modified_date" timestamp without time zone,
"last_modified_by_user_id" integer,
"status" integer NOT NULL,
"information_last_modified_date" timestamp without time zone,
"information_last_modified_by_user_id" integer,
.... user_information
"role_last_modified_date" timestamp without time zone,
"role_last_modified_by_user_id" integer,
... user_role
PRIMARY KEY ("id")
);
Спасибо за ответ! что такое event-sourcing? вы имеете в виду это https://msdn.microsoft.com/en-us/library/dn589792.aspx? – user1775888
@ пользователь1775888: да такой же предмет. –
Я использую PostgreSQL с nodejs, и я нашел этот https://www.npmjs.com/package/eventstore, что означает, что событие sourcing означает, что оно запускается при событии postgresql, но мне все еще нужно хранить данные в базе данных? – user1775888