Предположим, что мне принадлежит бизнес, который продавал автомобили и мотоциклы. Я хочу отслеживать данные по каждому из них. Моя компания предоставляет бесплатную гарантию на каждый автомобиль, но мы даже не предлагаем гарантии на мотоциклы. Первоначально я думал, что есть две таблицы - в «Транспортные средства» таблица и «ГАРАНТИЙ» стол, как этотКак правильно спроектировать схему базы данных для этого сценария
Vehicles Warranties
VehicleID, SalePrice, VehicleType, WarrantyID WarrantyID, EffDate, ExpDate
Где VehicleType является либо «автомобиль» или «мотоцикл». Мой недостаток в том, что в таблице «Транспортные средства» каждый мотоцикл будет иметь нулевое значение для «WarrantyID». Будет ли это считаться плохой практикой?
Другой подход, который я рассмотрел использует три таблицы, как
Мой недостаток состоит в том, что я отделяя мотоциклов и автомобилей на две таблицы, которые почти идентичны. (В действительности у них будет больше полей, таких как стоимость покупки, пробег и т. Д.). Единственная разница заключается в том, что все автомобили будут иметь гарантию, и никакие мотоциклы не будут иметь гарантию.
(Примечание: Я также сделать предположение о том, что 2 или 3 машины могли бы использовать одну гарантию.)
Что такое правильный способ создать эту базу данных?
Я думаю, что первый способ - это хорошо. Просто оставьте гарантийный талон, если у него его нет. Вы не нарушаете никаких правил нормализации. – dewd
Почему вы принимаете предположение, что более одной машины могут иметь одинаковую гарантию? – buritos
Вы сказали: _ «Я также полагаю, что 2 или 3 автомобиля могут использовать одну гарантию». _. Может ли быть наоборот? Может ли у одного автомобиля несколько гарантий? –