我需要一个代表这些数据的MySQL表:
我想将时间列命名为 time , timestamp 或 date ,但如您所知,这些都是保留关键字。命名时间列的最佳方法是什么,而没有故意听起来俗气,以绕过命名限制?
答案 0 :(得分:4)
我理解在名为EventDate
的表中有一个名为Events
的列的感觉(根据我所学过的所有数据库约定,应该被称为事件 ......;))是多余的,但请考虑:
您有一个Event
表,其中包含Date
列和Booking
表,其记录代表客户在事件中预订座位,同时还有Date
列(在此上下文中,指的是座位被预订的日期):
SELECT e.Date AS EventDate, b.Date AS BookingDate, [...]
FROM Event e
JOIN Booking b ON b.EventId = e.Id
在每个此类查询中必须考虑不明确的列名称是一种惩罚,可能(并且 ,在我看来)超过假定的Event.EventDate
冗余。
考虑另一个我们可以应用于每个表中ID列名称的参数:在Event
EventId
中调用PK而不仅仅是Id
让我们编写这个JOIN标准:
JOIN Booking b ON b.EventId = e.EventId
我们可以一目了然地参考正确的列。
总之,如果我们必须在调用列Date
或EventDate
之间做出决定,后者有很多好处:
考虑在决定列名时可以使用表的所有情况。在这种情况下,我认为在列名中提供特定于上下文的信息的好处远远超过重复表名的冗余。
答案 1 :(得分:2)
列名不应指向数据类型,而应指向其含义。
与event_start_datetime
或created
一样,用于创建该条目的时间戳。
答案 2 :(得分:2)
我更喜欢动词过去时和“时间”,即'createdTime','publishedTime',在你的情况下我找不到动词,但'matchTime'看起来没问题。
答案 3 :(得分:1)
什么是Verdasco VS Monfils?他们是活动吗?然后我会选择EventDate
或类似的东西。试着说出你将如何形容它。