Неправильно ли реализовать супертип и подтип всем данным в базе данных? Мне нужен совет по этому вопросу, прежде чем перейти к этому направлению ...Последствия супертипа и подтипа
Например,
У меня есть эти таблицы как объекты, и они связаны между собой,
users
pages
images
entities
таблицу супертипе
entity_id entity_type
1 page
2 page
3 user
4 user
5 image
6 image
users
стол
user_id entity_id
1 3
2 4
pages
стол
page_id entity_id
1 1
2 2
images
стол
image_id entity_id
1 5
2 6
здесь таблица на картуimages
стол с entities
столом, потому что некоторые изображения принадлежат определенной странице (возможно в блог сообщения, и т.д. в будущее),
map_entity_image
стол
entity_id image_id
1 1
1 2
так, я вставить строку в таблице entities
, когда у меня есть страница, изображение, пользователь, и т.д., который будет создан.
В конце дня строки в этих таблицах будут увеличиваться в большом количестве. так что я беспокоюсь о том, что он может копить большое количество строк? будет ли эта база данных работать медленнее и медленнее?
В конце концов, это плохая структура?
или, может быть, я делаю супертип/подтип неправильно?
редактировать:
Я думаю, что entity
должен иметь только эти данные,
entity_id entity_type
1 page
2 page
, если я не хочу, чтобы прикрепить изображения к пользователей и т.д., то это должно быть так,
entity_id entity_type
1 page
2 page
3 user
4 user
Возможно, я ошибаюсь ...
EDIT:
так это вопрос, как я могу узнать, сколько изображений, прикрепленных к странице ид 1,
SELECT E.*, P.*, X.*,C.*
FROM entities E
LEFT JOIN pages P ON (P.entity_id = E.entity_id)
LEFT JOIN map_entities_images X ON (X.entity_id = E.entity_id)
LEFT JOIN images C ON (C.image_id = X.image_id)
WHERE P.page_id = 1
возвращается изображения.
Как вы ожидаете использовать эти сущности-таблицы? Что это дает вам, что стандартный SQL на базовых таблицах не будет? Почему вы беспокоитесь об этом, когда у него нет видимых функций? –
спасибо. пожалуйста, взгляните на мое редактирование. Благодарю. – laukok
У вас может быть таблица изображений, на которую ссылаются как «страница», так и «комментарий». Вам не нужны дополнительные таблицы (при условии, что в каждом комментарии есть только одна ссылка на изображение), вам просто нужен столбец для хранения идентификатора изображения, и все работает! Если существует много-много отношений, вам нужна одна таблица пересечений «page-contains-image» с идентификатором страницы и идентификатором изображения и одна таблица «user-has-image» с идентификатором пользователя и идентификатором изображения. Будь проще! –