Если у вас много отношений между книгой и категорией, вы можете сопоставить ее с объектно-ориентированной моделью, как показано ниже, на основе Как создать отношения" многие-ко-многим "в объектной базе данных?
Book {
Collection<Category> categories
}
Category {
Collection<Books> books
}
Чтобы определить коллекцию в таблице в ORDBMS, вы должны использовать вложенную таблицу. (Пример взят с веб-сайта Oracle Пример приложения, использующего объектно-реляционные функции < / а>)
CREATE TABLE PurchaseOrder_objtab OF PurchaseOrder_objtyp ( /* Line 1 */
PRIMARY KEY (PONo), /* Line 2 */
FOREIGN KEY (Cust_ref) REFERENCES Customer_objtab) /* Line 3 */
OBJECT IDENTIFIER IS PRIMARY KEY /* Line 4 */
NESTED TABLE LineItemList_ntab STORE AS PoLine_ntab ( /* Line 5 */
(PRIMARY KEY(NESTED_TABLE_ID, LineItemNo)) /* Line 6 */
ORGANIZATION INDEX COMPRESS) /* Line 7 */
RETURN AS LOCATOR /* Line 8 */
Однако лучше сохранить коллекцию ссылок, а не сами объекты.
Согласно этому ответу Первичный и внешний ключ вложенной таблицы в Oracle невозможно добавить внешний ключ во вложенную таблицу.
1) Итак, как лучше всего сопоставить отношения "многие ко многим" в объектно-реляционной базе данных (Oracle)?
2) Если ответ заключается в хранении двух коллекций в двух объектах, как показано выше, как сохранить их как эталонную коллекцию, не сохраняя напрямую как объект?