Oracle 12c: оптимальный дизайн схемы для поддержки ревизий - PullRequest
0 голосов
/ 03 мая 2018

У меня есть требование для ведения ревизий для книг документации программного обеспечения в моем проекте. У меня есть следующие таблицы:

  1. Книги: book_id, book_name, book_category
  2. Book_revisions: Book_id (FK), book_revision_id, book_release_ID (FK), book_developer_id (FK), book_pages, no_of_days, book_start_date, book_finish_date, book_version, latest_flag
  3. book_Releases: release_id, release_name, release_date
  4. Пользователи: developer_id, developer_email, developer_name

Дата выпуска - та, которая будет использоваться для поиска последней версии. версия автоматически увеличивается и является уникальной для выпуска. Latest_flag устанавливается в Y, если версия является последней для этого выпуска.

Теперь, когда я пытаюсь получить список книг только с последними выпусками, вот запрос, который я использую:

   select book_revision_id, book_id, book_release_ID, book_developer_id, book_pages, no_of_days, book_start_date, book_finish_date, book_version
    from book_revisions r 
    where latest_flag = 'Y'
    and release_id = (select r1.book_release_id from book_revisions r1
    left join book_releases a on a.release_id = r1.book_release_id
    where r1.book_id = r.book_id and r1.latest_flag='Y' and rownum=1
    order by rel.release_date desc)
    and latest_flag='Y'

Кажется, это работает, но я пытаюсь выяснить, является ли это наилучшим способом или существуют какие-то стандарты для разработки и запроса схемы для таких требований к изменениям?


Добавление образцов данных согласно одному из комментариев: enter image description here

...