Запрос дизайна базы данных - PullRequest
0 голосов
/ 04 июня 2010

Я разработал структуру базы данных, в которой собираются данные об автомобилях за определенный период времени для исследовательских целей. Владелец автомобиля каждый месяц вводит большое количество связанных данных об автомобиле, его характеристиках и т. Д. Однако теперь мне приходится обрабатывать ситуации, когда право собственности на автомобиль передается (возможно, более одного раза), и мне интересно, что лучший способ справиться с этим в базе данных будет.

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

В настоящее время каждая запись автомобиля в БД принадлежит владельцу через внешний ключ в таблице Cars. Сейчас я думаю о том, чтобы создать рекурсивные отношения родитель / потомок между записями автомобилей, где одна запись автомобиля может принадлежать другой записи автомобиля (например, car_id в качестве внешнего ключа в таблице Car). Если запись автомобиля принадлежит другой записи автомобиля, это означает передачу. Это позволяет мне сохранять набор данных каждой записи автомобиля (специфичный для его владельца), а также связывать воедино связанные записи автомобиля. В дополнение к этому, я думаю о добавлении таблицы Car_transfer, чтобы записать дополнительные данные о передаче (вероятно, просто дату на самом деле, поскольку предыдущие и новые владельцы будут очевидны из owner_ids в таблице Car) - добавление date_transferred столбец в записи автомобиля, вероятно, будет в значительной степени избыточным для большинства записей, поэтому я не уверен, что одни эти данные заслуживают новой таблицы отношений.

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

Ответы [ 2 ]

2 голосов
/ 04 июня 2010

Здесь вам не нужен рекурсивный родитель / ребенок, а просто отношение «многие ко многим» :

В основном вам нужна таблица ссылок [автомобили-владельцы]:

car_id, owner_id, ownership_date

Итак, у вас будут данные:

---------------
1, 2, 2009-01-01
1, 3, 2010-05-01
...

Один и тот же автомобиль, принадлежащий двум людям с разными датами.

2 голосов
/ 04 июня 2010

Я бы добавил таблицу владения автомобилем. Рекурсивный дизайн не слишком интуитивен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...