Sql 单表继承名称冲突

Sql 单表继承名称冲突,sql,database-design,Sql,Database Design,我一直在用STI制作一张名为“旅程”的表格。人们将发布行程请求/优惠,因此,区别符将是:驾驶员或乘客,这意味着将有愿意驾驶并搭载其他乘客的人发布行程,或者只是搭便车的人(乘客)。因此,这两个属性将共享大多数属性(例如出发日期、来源、目的地等),但由于发布的用户类型的不同,会出现一些名称冲突 例如,如果我是乘客,我可以指定我想和我的朋友一起旅行(因此,PassengerCount=2,即我们寻找至少有2个可用座位的司机)。或者我可能会注意到,我想随身携带一些行李(因此HaveLuggage=tru

我一直在用STI制作一张名为“旅程”的表格。人们将发布行程请求/优惠,因此,区别符将是:驾驶员或乘客,这意味着将有愿意驾驶并搭载其他乘客的人发布行程,或者只是搭便车的人(乘客)。因此,这两个属性将共享大多数属性(例如出发日期、来源、目的地等),但由于发布的用户类型的不同,会出现一些名称冲突

例如,如果我是乘客,我可以指定我想和我的朋友一起旅行(因此,PassengerCount=2,即我们寻找至少有2个可用座位的司机)。或者我可能会注意到,我想随身携带一些行李(因此HaveLuggage=true,即我正在寻找可以携带行李的乘车人)

另一方面,如果我是司机,我应该填写一张表格,在表格中我可以指定可用座位的数量(AvailableSets),我可能会注意到我不能运输行李(TakeSlugage=false)

正如您所看到的,PassengerCount-AvailableSets和HaveLuggage-TakesLaggage列是相同的,只是它们的名称与海报透视图不同


所以问题是,为了尽量减少混淆,我应该遵循什么命名约定?另外,有这样一个表(STI)是一个好主意吗?如果不是,您会推荐什么替代方案?

不确定您是否需要担心命名约定。。。您已经获得了区分属性(type)。可以在输出的数据上添加标签,以区分您喜欢的方式。例如:

Journey
   Type (integer) -- 1 = provider, 2 = consumer
   Passengers (integer)
   Luggage (bit / bool) -- 1 = yes, 0 = no
至于命名约定:

SELECT "Driver", passengers as "Avaliable Seats", luggage as "Takes Luggage" WHERE type=1
UNION
SELECT "Passenger", passengers as "Passenger Count", luggage as "Have Luggage" WHERE type=2
或者可以在SELECT本身中使用控制语句(IF/CASE/etc)