Семантика именования столбца метки времени MYSQL - PullRequest
5 голосов
/ 02 февраля 2011

Мне нужна таблица MySQL, которая представляет эти данные:

  • 12 февраля, 5:00 вечера - Verdasco VS Monfils
  • 12 февраля,9:25 вечера - Сампрас против Хьюитта
  • 13 февраля, 8:15 утра * 10101 * - Нишикори против Дель Потро

Я хотел назвать столбец времени время , отметка времени или дата , но, как вы знаете, это все зарезервированные ключевые слова.Каков наилучший способ назвать временной столбец без намеренно звучащего глупости, чтобы обойти ограничения именования?

Ответы [ 4 ]

4 голосов
/ 02 февраля 2011

Я понимаю, что столбец с именем EventDate в таблице с именем Events (который, согласно всем соглашениям с БД, которые я когда-либо изучал, должен называться Event ...;)) является избыточным, но учтите:

У вас есть таблица 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.

Рассмотрим еще один аргумент, который мы можем применить к именам столбцов идентификаторов в каждой таблице:PK в Event EventId вместо простого Id позволяет нам написать этот критерий JOIN:

JOIN Booking b ON b.EventId = e.EventId

, который мы можем сразу увидеть, ссылается на правильные столбцы.

InРезюме, если мы должны принять решение между вызовом тВ столбце Date или EventDate последний имеет много преимуществ:

  • Как указывает @Benjamin Seiller, столбец должен определять значение столбца, а не обязательно его тип данных
  • Кроме того, что происходит, когда у вас есть таблица с тремя различными полями даты, представляющими даты, относящиеся к сущности?Если вы не называете их все по их значению , теперь вы должны вспомнить, какое поле означает что ...
  • Как только мы захотим запросить несколько таблиц, двусмысленные имена столбцовсуществующие проблемы
  • Если столбцы, которые появляются в нескольких таблицах (например, внешние ключи), имеют явные и идентичные имена, наш синтаксис запросов становится немного более устойчивым к ошибкам (таким как объединение в неправильном столбце)

При выборе имен столбцов учитывайте все ситуации, в которых ваша таблица может использоваться.В этом случае я буду утверждать, что преимущества предоставления контекстно-зависимой информации в имени столбца намного перевешивают избыточность повторения имени таблицы.

2 голосов
/ 02 февраля 2011

Имя столбца должно указывать не на тип данных, а на его значение. Как event_start_datetime или created для отметки времени создания этой записи.

2 голосов
/ 02 февраля 2011

Я предпочитаю глагол в прошедшем времени и в «времени», то есть «createTime», «ОпубликовалTime», в вашем случае я не могу найти глагол, но «matchTime» выглядит нормально.

1 голос
/ 02 февраля 2011

Что такое Verdasco VS Monfils?Это события?Тогда я бы пошел с EventDate или что-то подобное.Попробуйте назвать это так, как вы бы это описали.

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