Пример: у Меня есть две таблицы в моей базе данных, названной classA и classB и одной таблицей, названной classA_classB. Последний просто определил два международных поля с внешними ключами для соединения между classA и classB. Таким образом, один classA может иметь много classB, и много classA могут связаться с тем же classB. Простой материал, до сих пор.
Проблема в моем особом случае, что у меня есть classA, который хочет связаться с другим classA. Т.е. Студент связывается со своими друзьями, которые являются Студентами также.
Таким образом аналог технике выше, я имею: студент и student_student. student_student имеет два поля: student_id, student_id. Проблема: не Может иметь двух полей с тем же именем!
Таким образом, я должен назвать их как: master_student_id, slave_student_id.
Но мне не нравятся условия "Ведущее устройство" и "Ведомое устройство", потому что это напоминания к плохому времени в нашем прошлом. Это может звучать глупым, но я думаю, что это не корректно для хранения их, по крайней мере, с моральной точки зрения. Я знаю, что это - просто часть науки современного компьютера... но....
как еще я мог назвать их?
родитель и ребенок, возможно? Также я не уверен, существует ли действительно один объект "руководитель", в то время как другой "сотрудник"... Студент и Студент не являются иерархическими. Но затем, снова, позволяет, предполагают, что у нас было два класса "Учитель" и "Студент". Это было бы ясной иерархией. Однако мне нужно нейтральное решение, потому что моя платформа распараллеливает их 1:n отношения всегда тот же путь.
] Родитель и ребенок или владелец и ребенок - общепринятые решения.[
]related_id или associated_student_id было бы предпочтительнее.
] Как насчет student_id и friend_id? Нет правила, по которому иностранные ключи должны иметь те же имена столбцов, что и первичный ключ.[
].Каковы роли двух учеников в отношениях? Друзья? Наставники? Знакомых? Они выполняют множество возможных ролей.
Вы можете придумать множество ролей с асимметричными названиями.
друг, друг_
наставник, наставник_б
реферер, привлеченный_б
Зависит от того, является ли отношение (назовем его R) симметричным. Если да, то person1, person2 в порядке, так как R(person1, person2) = R(person2, person1). Если они не симметричны, то эти имена, вероятно, должны отражать отношения "агент и пациент". Поэтому используйте слово для обозначения агента и слово для обозначения пациента, например, Befriender, Friend.