Я новичок в PostgreSQL и SQL. Я работаю над небольшим приложением, которое используется для хранения файлов. До сих пор я создал эти таблицы:Дизайн базы данных для хранения файлов
CREATE TABLE KNOWLEDGEBASE(
ID INTEGER NOT NULL,
NAME TEXT,
SHORT_DESCRIPTION TEXT,
DESCRIPTION TEXT,
CONTENT TEXT,
LAST_UPDATED DATE,
CREATED DATE
)
;
-- ADD KEYS FOR TABLE KNOWLEDGEBASE
ALTER TABLE KNOWLEDGEBASE ADD CONSTRAINT KEY9 PRIMARY KEY (ID)
;
-- TABLE KNOWLEDGEBASE_FILES
CREATE TABLE KNOWLEDGEBASE_FILES(
ID INTEGER NOT NULL,
DOC_ID INTEGER,
FILE BYTEA
)
;
-- CREATE INDEXES FOR TABLE KNOWLEDGEBASE_FILES
CREATE INDEX IX_RELATIONSHIP4 ON KNOWLEDGEBASE_FILES (DOC_ID)
;
-- ADD KEYS FOR TABLE KNOWLEDGEBASE_FILES
ALTER TABLE KNOWLEDGEBASE_FILES ADD CONSTRAINT KEY10 PRIMARY KEY (ID)
;
-- CREATE RELATIONSHIPS SECTION -------------------------------------------------
ALTER TABLE KNOWLEDGEBASE_FILES ADD CONSTRAINT RELATIONSHIP4 FOREIGN KEY (DOC_ID) REFERENCES KNOWLEDGEBASE (ID) ON DELETE CASCADE ON UPDATE CASCADE
;
У меня есть несколько вопросов:
Является ли этот внешний ключ правильно между двумя таблицами? Я хочу иметь одну запись в таблице KNOWLEDGEBASE и несколько файлов, прикрепленных к этой записи.
Как я могу вставить с одним SQL-запросом одну строку в таблице KNOWLEDGEBASE и несколько файлов в KNOWLEDGEBASE_FILES?
Могу ли я узнать, почему я получаю отрицательный отзыв? –
Знаете ли вы, что PostgreSQL поддерживает большие объекты? http://www.postgresql.org/docs/current/static/largeobjects.html. И знаете ли вы, что дайвер DOS PosgreSQL поддерживает большой объект? https://jdbc.postgresql.org/documentation/publicapi/index.html. Я думаю, что поддержка родных больших объектов лучше для хранения файлов в базе данных с использованием типа bytea –
Вы имеете в виду тип данных OID или что-то еще? –