Реализация обобщений на этапе логического проектирования проектирования баз данных? - PullRequest
1 голос
/ 14 августа 2011

Я занимаюсь проектированием базы данных, и, поскольку у меня нет большого опыта в этой области, я столкнулся с проблемой, которую не знаю, как ее решить.

В моей концептуальной модели у меня есть объект, известный как «Автомобиль», который заказывает клиент и отслеживает система запасов. Этот супертип имеет два подтипа «Мотоцикл» и «Мотоцикл». Пользователь может заказать один или другой или даже оба.

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

Например, если у меня просто есть общая таблица, содержащая и «Мотоциклы», и «Мотоциклы», которые я называю «Транспортные средства» и все их атрибуты, автомобилям не понадобятся некоторые атрибуты мотоцикла, а мотоциклу не понадобится. все атрибуты автомобиля.

Есть ли способ решить эту проблему?

1 Ответ

3 голосов
/ 14 августа 2011

При принятии решения необходимо руководствоваться объемом передаваемой информации.Я бы начал с определения всех атрибутов и правил о них.

Если большая часть информации является общей, вы не можете разделить ее на несколько таблиц.С другой стороны, вы всегда можете разделить таблицы, а затем объединить их в представление для простоты использования.

Например, у вас может быть таблица транспортных средств только с информацией об общем доступе, а затем таблица автомобилей с внешним ключом.к столу с транспортными средствами и мотоциклетному столу с внешним ключом к столу с транспортными средствами.Существует определенная трудность, гарантирующая, что у вас нет ряда автомобилей и ряда мотоциклов, относящихся к одному и тому же транспортному средству, и поэтому есть другие возможности смягчить это - но все, что не нужно, если большая часть информации является общей, вы простоиметь неиспользуемые столбцы в одной таблице транспортных средств.Вы можете даже применить ограничения, чтобы гарантировать, что столбцы равны NULL для типов, где они не должны быть заполнены.

...