Альтернатива "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? Нет правила, которое говорит, что ваши внешние ключи должны иметь те же имена столбцов, что и первичный ключ.
по-видимому, существует 3 конкурирующих отраслевых альтернативы master / slave. они:
- Мастер/Ведомый
- Родитель/Ребенок
- Первичный/Вторичный
Я думаю, что первичный / вторичный странно, потому что у нас может быть несколько вторичных. Я чувствую, что после вторичного будет третичный, четвертичный и т. д. Слишком много боли.
мастер / последователь все еще имеет смутные коннотации рабства/феодализма.
что у нас осталось с родителем / ребенком... но мне это не очень нравится, потому что ребенок кажется неспособным, но бывают случаи, когда мы зависим от ребенка, а не от родителя....
Итак, я собираюсь предложить еще одну комбинацию здесь:
- Первичный/Альтернативный
что именование должно избегать любых проблем рабства, пола и множественности.
каковы роли двух студентов в отношениях? Друзья? Наставники? Знакомые? Есть много возможных ролей, которые они выполняют.
вы можете придумать много ролей, которые имеют асимметричные имена.
друг, friend_of
mentor, mentored_by
реферер, referred_by
зависит от того, является ли отношение (назовем его R) симметричным. Если это так, то person1, person2 в порядке, так как R(person1, person2) = R(person2, person1). Если они не симметричны, то имена, вероятно, должны отражать отношения "агент и пациент". Поэтому используйте слово для обозначения агента и одно для обозначения пациента, например, Befriender, Friend.