Альтернатива "master" и "slave" в отношениях сущности?

пример: у меня есть две таблицы в моей базе данных называется classA и classB, и одна таблица называется classA_classB. Последний только что определил два поля int с внешними ключами для связи между classA и classB. Таким образом, один classA может иметь много classB, и многие classA могут связываться с тем же classB. Простые вещи, до сих пор.

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

Так аналог к методу выше, я имею:студент и student_student. student_student имеет два поля: student_id, student_id. Проблема: не может быть двух полей с одинаковым именем!

поэтому я должен называть их так: master_student_id, slave_student_id.

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

как еще я мог их назвать?

может быть, родитель и ребенок? Также я не уверен, действительно ли есть одна сущность "шеф", а другая - "сотрудник"... Ученик и ученик не иерархичны. Но опять же, давайте представим, что у нас было два класса "Учитель" и "ученик". Это была бы четкая иерархия. Тем не менее, мне нужно нейтральное решение, потому что моя структура передает эти отношения 1:n одинаково.

8 ответов


родитель и ребенок или владелец и ребенок являются общепринятыми решениями.


промышленный стандарт в настоящее время, кажется, {master-follower}

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

отличный вопрос, кстати!


Как насчет student_id и friend_id? Нет правила, которое говорит, что ваши внешние ключи должны иметь те же имена столбцов, что и первичный ключ.


related_id или associated_student_id было бы моим предпочтением.


по-видимому, существует 3 конкурирующих отраслевых альтернативы master / slave. они:

  • Мастер/Ведомый
  • Родитель/Ребенок
  • Первичный/Вторичный

Я думаю, что первичный / вторичный странно, потому что у нас может быть несколько вторичных. Я чувствую, что после вторичного будет третичный, четвертичный и т. д. Слишком много боли.

мастер / последователь все еще имеет смутные коннотации рабства/феодализма.

что у нас осталось с родителем / ребенком... но мне это не очень нравится, потому что ребенок кажется неспособным, но бывают случаи, когда мы зависим от ребенка, а не от родителя....

Итак, я собираюсь предложить еще одну комбинацию здесь:

  • Первичный/Альтернативный

что именование должно избегать любых проблем рабства, пола и множественности.


каковы роли двух студентов в отношениях? Друзья? Наставники? Знакомые? Есть много возможных ролей, которые они выполняют.

вы можете придумать много ролей, которые имеют асимметричные имена.

друг, friend_of

mentor, mentored_by

реферер, referred_by


{master-follower} вместо {master-slave}


зависит от того, является ли отношение (назовем его R) симметричным. Если это так, то person1, person2 в порядке, так как R(person1, person2) = R(person2, person1). Если они не симметричны, то имена, вероятно, должны отражать отношения "агент и пациент". Поэтому используйте слово для обозначения агента и одно для обозначения пациента, например, Befriender, Friend.