我不太清楚如何用这个问题来建模我的数据库:一次旅行只有一个司机。一次旅行有多个乘客。司机和乘客都是用户。显然,一个用户可以有多个旅程,其中他要么是司机,要么是乘客。我想买一张透视表 journey_role_user ,但那真的不管用。我是用拉雷维尔的雄辩来发展这一点的,这不会改变任何关系。
journey_role_user
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, . . .
“司机”和“乘客”似乎只是用户可以扮演的角色。这些可以由引用表定义。
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 ,这将是指向 id 在 users 表(因为驱动程序必须是某个用户)。这个 users 以及 roles 表存储关于每个用户和每个角色的元数据。这里有两个连接/桥接表, user_roles 以及 user_journeys . 这个 user_roles 表存储用户可能拥有的角色。当然,用户有可能同时是驾驶员和乘客,在这种情况下,用户在系统中可能有两个实体 user_roles table。这个 user_journeys 表存储每个旅程的用户花名册。
journey
users
roles
driver_id
id
user_roles
user_journeys
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
Journey
Journey_Driver
3条答案
按热度按时间enyaitl31#
我推荐三张table:
“司机”和“乘客”似乎只是用户可以扮演的角色。这些可以由引用表定义。
mdfafbf12#
我推荐以下五个表格:
这里有3个基表,
journey
,users
,和roles
. 这个journey
表存储每个旅程的元数据,包括驱动程序。为此,它存储driver_id
,这将是指向id
在users
表(因为驱动程序必须是某个用户)。这个users
以及roles
表存储关于每个用户和每个角色的元数据。这里有两个连接/桥接表,
user_roles
以及user_journeys
. 这个user_roles
表存储用户可能拥有的角色。当然,用户有可能同时是驾驶员和乘客,在这种情况下,用户在系统中可能有两个实体user_roles
table。这个user_journeys
表存储每个旅程的用户花名册。zpf6vheq3#
四张table:
您还可以添加
driver_id
列到Journey
表以避免Journey_Driver
table