Мне не нравится ни один пример.Я бы предпочел:
Person Table
- PersonID -- not ID, since this is likely to be referenced in other tables
- FirstName -- why is a first name just a "name"?
- LastName -- why not use the form more common than surname?
- ModifiedDate -- what is a "persontimestamp"?
Я категорически против того, чтобы первичные ключи, которые будут встречаться в других таблицах модели, были названы общими вещами, такими как «ID» - я никогда не хочу видеть ON p.ID = SomeOtherTable.PersonID
- сущность, которая является общей для нескольких таблиц в модели, должна называться последовательно по всей модели.Другие аспекты, такие как FirstName
, принадлежат только этой таблице - даже если другая таблица имеет имя FirstName, это не та же «сущность», так сказать.И даже если по каким-либо причинам у вас когда-либо есть соединения между этими двумя таблицами, вы всегда будете различать их как Person.FirstName
и Customer.FirstName
- поэтому добавление префикса Person
или Customer
просто избыточно и раздражаетдля любого, кто должен написать такой запрос.
Также Timestamp
- ужасное имя для столбца (или как суффикс столбца) в модели SQL Server, поскольку TIMESTAMP
- это тип данных, который не имеет ничегоделать с датой или временем, и имя может подразумевать другое использование ваших сверстников.
Конечно, все это довольно субъективно.Это все равно, что спросить 100 человек, на какой машине тебе следует ехать.Вы получите несколько ответов, и теперь вам нужно будет разобраться в этом дерьме и выяснить, что имеет смысл для вас, вашей команды и вашего окружения.: -)