Разрешить цикл связи с базой данных - PullRequest
0 голосов
/ 13 апреля 2019

В базе данных у меня есть модель вида: enter image description here

Заказчик может либо арендовать автомобиль, либо сдать в аренду автомобиль.Как видите, у автомобиля есть OwnerID - клиент, который владеет автомобилем, но в то же время клиент может также арендовать автомобиль у другого владельца, чтобы в таблице «Заказ» он отображался как «Пользователь».
Итак, как мне изменить модель, чтобы избежать таких циклов?и возможно ли это вообще?

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Рассмотрите возможность определения (сохранения в таблицах)

  • , кто является владельцами и чем они владеют, и
  • , кто являются клиентами.

.

create table persons (
  -- I prefer "people". YMMV.
  person_id integer primary key,
  person_name varchar(25) not null
  -- Other columns go here.
);

create table cars (
  -- VIN might be a better choice.
  car_id integer primary key
  -- Other columns go here.
);

create table car_owners (
  -- Only car owners known to us can rent out a car.
  car_id integer not null
    references cars(car_id),
  owner_id integer not null
    references persons (person_id),
  primary key (car_id, owner_id)
  -- Other columns go here.
);

create table customers (
  -- Any person can rent a car. (But some persons are not customers.)
  customer_id integer primary key  
    references persons (person_id)
  -- Other columns go here.
);

create table rentals (
  customer_id integer not null
    references customers (customer_id),
  car_id integer not null,
  owner_id integer not null,
  primary key (customer_id, car_id, owner_id),

  -- Don't rent a car unless we know who the owner is.
  foreign key (car_id, owner_id)                  
    references car_owners (car_id, owner_id)

  -- Other columns go here.
);
0 голосов
/ 13 апреля 2019

Насколько я понимаю, я думаю, что лучше иметь два отдельных профиля для владельца (человека, который сдает в аренду автомобиль) и арендатора (человека, который берет автомобиль в аренду) и иметь отдельные логины

User      Owner      Tenant     Order
------    ------     -------    -------    
id        owner_id   tenant_id  owner_id 
email     user_id    user_id    tenant_id 
                                car_id

Надеюсь, это поможет вам!

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