Разъяснение базы данных MySQL - PullRequest
0 голосов
/ 18 мая 2018

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

У меня есть таблица с названием Процессы, в этой таблице содержатся все имена процессов заданий.Затем у меня есть таблица с названием TrainingProcesses.Эта таблица просто имеет имена Process1, Process2, Process3 и т. Д. До Process30.

Каждый сотрудник может обучить до 30 процессов.Таким образом, для первого процесса, который он изучает, я должен иметь возможность выбрать идентификатор процесса, назначить этот идентификатор процесса для Process1 в своем профиле.Process1 не является чем-то конкретным, он просто будет тем процессом работы, который ему назначат.

Можете ли вы сказать мне, как я бы связал все это вместе?

  • EmployeeInformationTable

    • `Id``
    • `Имя>
    • LastName
  • ProcessesTable

    • Id
    • Appm
    • Route H
    • RouteJ
  • TrainingProcessesTable

    • Process1
    • Process2
    • Process3
    • EmployeeInformationTable Id
    • ProcessTable Id

Будет ли это сделано, как указано выше, простыми словами?

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Вы не хотите сохранить процессы в виде отдельных столбцов.Это просто вызывает головную боль, когда вы хотите сделать что-то вроде «добавить новый процесс после всех остальных».

  • EmployeeInformationTableId
  • ProcessTableId

И вам, вероятно, также нужна дополнительная информация:

  • Дата / время завершения
  • Метрика завершения (время, качество)
  • Порядковый номер
  • и т. Д.

Как ограничить длину 30 сотрудником?К сожалению, это немного сложно:

  1. Один из методов - просто сделать это на прикладном уровне (посчитать количество существующих строк перед добавлением новой).
  2. секундуМетод заключается в том, чтобы обернуть все операции DML в хранимые процедуры и записать в них логику.
  3. Третий метод заключается в использовании триггеров для предотвращения операции.

На практике (1)Самый простой;(2) часто так или иначе я делаю, а (3), пожалуй, самый безопасный, поэтому база данных сохраняет целостность.

0 голосов
/ 18 мая 2018

Ваша структура таблицы, как она работает, и достигает желаемых целей.Так можно ли это сделать как простые термины?Да.

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

(EmployeeInformationTable) "Id" "FirstName" "LastName"

(ProcessesTable) "Id" "Appm" "Route H" "RouteJ"

(TrainingProcessesTable) "EmployeeInformationTable Id" "ProcessTable Id"

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