Я новичок в дизайне базы данных и не знаю, как лучше всего моделировать этот конкретный случай. Я был бы признателен за любые предложения по этому довольно простому сценарию.Дизайн базы данных: множественные неидентифицирующие отношения между двумя таблицами
Когда начинается производственное задание, задействованы два человека во все времена. Один отвечает за производство, а второй отвечает за обеспечение качества. Для любой задачи в базе данных должно быть возможно идентифицировать этих двух людей. Они оба существуют в таблице Person и имеют идентификаторы, поэтому я просто хочу, чтобы лучший способ связать их с производственной задачей. Существуют следующие правила:
- Любой человек может быть заменен другим человеком в любое время.
- Каждая задача всегда включает в себя обоих людей (ни один из них не является нулевым).
- В задаче, которую мы хотим записать, никогда не было других людей.
- Каждый человек может участвовать в нескольких задачах или вообще не участвовать.
Если бы у нас было целая взаимосвязь между заданием и людьми, я бы создал какую-то сложную структуру отношений, описывающую их отношения (как производитель, лицо, обеспечивающее контроль качества, надсмотрщик и т. Д.), Но здесь Мне кажется, что разумно просто вставлять идентификаторы двух людей в таблицу задач, в отдельных столбцах для Person Person и Quality Assurance Person. Неужели это плохо по какой-то причине, что я не вижу?
Что действительно вызвало мой вопрос, так это то, что я пытаюсь спроектировать именно это в DBDesigner 4, для которого я новичок, и ему это просто не нравится. Когда я пытаюсь настроить вторую не- идентифицируя отношения между Задачей и Лицом, это не даст мне второе поле. Это также, похоже, не позволит мне переименовать поля в Задаче, которые относятся к людям, поэтому было бы невозможно провести различие между этими двумя. Поскольку никто другой, похоже, не разделяет эту проблему, я начал задаваться вопросом, действительно ли это хорошая идея. Стандартно ли вводить дополнительные таблицы, как только есть две или более связей между двумя объектами? Как бы это выглядело, если бы я хотел использовать эти правила? Я не вижу, как бы я гарантировал, что таблица n: m всегда имеет записи для обоих людей, работающих над задачей.
В Stack Exchange есть еще один сайт, где этот вид вопросов более распространен и поощряется: [Programmers] (http://programmers.stackexchange.com). SO поощряет более конкретные, связанные с кодом вопросы, чем дизайнерские. Я не занимаюсь ничем, а просто предлагаю вам попробовать. – Renan
@Renan Кроме того, не перекрестная публикация нахмурилась? – ErikE
@ErikE IMO лучшим решением будет вопрос. – Renan