EDIT: Изменено название из «наследования» в «состав». Левая часть вопроса не изменилась.Есть ли ORM, который поддерживает композицию без соединения
Мне любопытно, есть ли инструмент ORM, который поддерживает наследование без создания отдельных таблиц, которые необходимо объединить.
Простой пример. Предположим, что таблица клиентов, с адресом Bill-to и таблицей поставщиков, имеет адрес для перевода. Держите его простым и принимайте по одному адресу каждый, а не дочернюю таблицу адресов для каждого.
Эти адреса будут иметь несколько общих значений: адрес 1, адрес 2, город, штат/провинцию, почтовый индекс. Итак, допустим, у меня будет класс «addressBlock», и я хочу, чтобы клиенты и поставщики наследовали этот класс и, возможно, другие классы. Но мне не нужны отдельные таблицы, которые должны быть объединены, я хочу, чтобы столбцы в таблицах клиентов и поставщиков соответственно.
Есть ли ORM, который поддерживает это?
Ближайший вопрос, который я нашел в StackOverflow, который может быть одним и тем же вопросом, приведен ниже, но я не могу точно понять, спрашивает ли OP, что я спрашиваю. Кажется, он спрашивает о наследовании наследования именно потому, что будет много таблиц. Я ищу случай, когда вы можете использовать наследование без генерации нескольких таблиц.
Model inheritance approach with Django's ORM
Я сразу же подумал, что вы используете наследование, где вы действительно должны использовать композицию. – btilly
Что именно вы боитесь, с тем, что адрес был нормализован в отдельную таблицу адресов, почему вы ** не хотите этого **. Характер баз данных - это множество небольших таблиц, SQL предназначен для соединений. – PerformanceDBA