Как убрать избыточность, если в большом количестве столбцов могут быть повторяющиеся данные? - PullRequest
0 голосов
/ 11 июля 2020

Я работаю над библиотечной системой. У меня есть книжная таблица, в которой есть 12 столбцов, включая автора, название, публикацию и т. Д. c. Среди этих 12 есть 2 уникальных столбца book_id и isbn. Когда библиотека получает n копий одной и той же книги, единственными столбцами, которые будут уникальными, будут book_id и isbn. Все остальные столбцы повторяются n раз. Это плохой дизайн. Есть ли способ убрать эту повторяемость? Я подумал о создании другой таблицы, в которой я мог бы однозначно хранить все избыточные столбцы и отдельные book_id и isbn из нее. Должен ли я сделать это или таблица в порядке?

Ответы [ 2 ]

1 голос
/ 11 июля 2020

То, что вы описали, звучит как две разные таблицы:

  • books, которая определяет атрибуты книги.
  • copies, которая определяет атрибуты входящей копии .

Кажется, вы понимаете атрибуты книг.

Атрибуты copies могут включать (помимо ссылки внешнего ключа на books)

  • условие
  • Дата_побретения
  • Источник
  • Другая информация о приобретении

Также может быть указана дата «удаления». Или вы можете сохранить это в какой-нибудь таблице copies_transactions.

1 голос
/ 11 июля 2020

Я думаю, вам следует использовать две разные таблицы.

В одной таблице вы можете хранить уникальные ключи, такие как book_id, isbn_id. А в другой таблице вы можете использовать один из этих book_id или isbn_id в качестве ссылочного внешнего ключа. Или другой способ: вы можете создать идентификатор автоматического увеличения также в первой таблице для ссылки внешнего ключа на вторую таблицу.

Во второй таблице вы можете сохранить все остальные 10 столбцов + 1 столбец для ссылки из 1-й таблицы.

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

...