Вопрос схемы таблицы SQL - PullRequest
1 голос
/ 22 июля 2011

Я недавно начал добавлять имя своей таблицы ко всем моим столбцам в таблице.Допустим, у меня были следующие таблицы:

Companies:

Id | Name | Logo | Info


Companies Employees:

Company Id | Employees Id


Employees:

Id | Name

Я бы изменил имена столбцов на:

Companies:

Company Id | Company Name | Company Logo | Company Info


Companies Employees:

Company Id | Employee Id


Employees:

Employee Id | Employee Name

, что позволяет мне использовать запросы типа SELECT * FROM `Companies` NATURAL JOIN `Companies Employees` NATURAL JOIN `Employees`, не беспокоясь о переименовании Id и Name столбцы, так как я гарантирую, что не будет столбцов с одинаковыми именами, это моя таблица Companies и EmployeesНо мне интересно, если это хорошая практика проектирования схем?Я не хочу привыкать к этому, если для этого есть веские причины, но я не мог придумать ничего другого, кроме избыточного повторного ввода имени таблицы.

Ответы [ 4 ]

1 голос
/ 22 июля 2011

Две плохие практики в одном посте.

1. Не делайте так, это не добавляет ни функциональности, ни читабельности. Единственное место, где вам нужно использовать префикс имени таблицы, - это таблица отношений.

2. Не используйте NATURAL JOIN

0 голосов
/ 22 июля 2011

Объединение таблиц без явного присвоения имен столбцам ключей прекрасно работает с простыми запросами, но может привести к путанице, когда вам нужно объединить три или более таблиц.Я обнаруживал эту проблему каждый раз, когда пытался заменить предложение ON на USING().

Например: допустим, вы хотите получить отчет о продажах по городам.Вы можете рассмотреть город офиса или город клиента.Обе таблицы customer и office будут иметь внешний ключ city_id, указывающий на таблицу city, но NATURAL JOIN не сможет узнать, к какой из них вы хотите присоединиться, как только вы запросите клиентов и офисы в одном запросе.

В любом случае, использование уникальных столбцов само по себе является хорошим трюком.Это спасает вас от многих SELECT foo.id AS foo_id....

0 голосов
/ 22 июля 2011

Добавление имени таблицы в каждый столбец может быть полезным в нескольких различных ситуациях: *

  • Когда вы объединяете две таблицы, которые в противном случае разделяют несколько имен столбцов, это спасает вас отнеобходимость назначать псевдонимы для различения столбцов

  • Я склонен использовать имена столбцов базы данных во всех своих веб-приложениях для обеспечения согласованности;Я буду хранить имя столбца в полях формы, переменных и т. Д., Которые имеют дело с одним и тем же элементом данных.В больших базах данных с более чем 100 таблицами это помогает мне оставаться организованным, имея префикс имени таблицы в переменной.Не говоря уже о том, что он может помочь новичку в проекте, если он может видеть, из какой таблицы вышла переменная.

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

Единственный недостаток префикса столбцов с именем таблицы состоит в том, что он может быть немного длинным.

0 голосов
/ 22 июля 2011

почему так сложно писать Companies.Name или Employee.Id?Я думаю, что это пустая трата вашего времени.

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