数据库建模:继承

qyyhg6bp  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(244)

我不太清楚如何用这个问题来建模我的数据库:
一次旅行只有一个司机。
一次旅行有多个乘客。
司机和乘客都是用户。
显然,一个用户可以有多个旅程,其中他要么是司机,要么是乘客。
我想买一张透视表 journey_role_user ,但那真的不管用。
我是用拉雷维尔的雄辩来发展这一点的,这不会改变任何关系。

enyaitl3

enyaitl31#

我推荐三张table:

users:
    user_id,
    . . .

journey:
    journey_id,
    driver_id references users.user_id
    . . .

journey_passenger
    journey_passenger_id,
    journey_id references journey.journey_id,
    passenger_id references user.user_id,
    . . .

“司机”和“乘客”似乎只是用户可以扮演的角色。这些可以由引用表定义。

mdfafbf1

mdfafbf12#

我推荐以下五个表格:

journey (id PK, name, driver_id)
users (id PK, name, ...)
roles (id PK, name, ...)
user_roles (user_id, role_id)
user_journeys (user_id, journey_id)

这里有3个基表, journey , users ,和 roles . 这个 journey 表存储每个旅程的元数据,包括驱动程序。为此,它存储 driver_id ,这将是指向 idusers 表(因为驱动程序必须是某个用户)。这个 users 以及 roles 表存储关于每个用户和每个角色的元数据。
这里有两个连接/桥接表, user_roles 以及 user_journeys . 这个 user_roles 表存储用户可能拥有的角色。当然,用户有可能同时是驾驶员和乘客,在这种情况下,用户在系统中可能有两个实体 user_roles table。这个 user_journeys 表存储每个旅程的用户花名册。

zpf6vheq

zpf6vheq3#

四张table:

Journey:
journey_id
other_info

User:
user_id
other_info

Journey_Passenger:
journey_id
user_id

Journey_driver:
journey_id
user_id

您还可以添加 driver_id 列到 Journey 表以避免 Journey_Driver table

相关问题