![]() |
|
Модераторы: LSD |
![]()
|
|
| Kurt |
|
|||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: нет Всего: 36 |
Есть ER-диаграмма. В ней применено наследование.
Теперь стоит задача реализовать все это в РЕЛЯЦИОННОЙ БД. Конкретно, в FireBird, но возможен вариант MySQL. Расскажите, как переносится наследование на чисто реляционные базы? Каким образом это реализуется? -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: нет Всего: 172 |
В самом простом случае наследования от одного класса- есть 3 варианта.
1. Создать таблицу для суперкласса с его аттрибутами, и каждому сабклассу по таблице с их аттрибутами. Связаны через примари ключ. 2. Создать одну таблицу для суперкласса со всеми аттрибутами, включая сабклассы 3. Создать таблицы только для сабклассов, каждая будет включать аттрибуты сабкласса + суперкласса. Наиболее оптимальный первый вариант, афаик. -------------------- |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Я видел проекты с сериализацией объектов. Там структура таблиц, вообще не зависела от того какие объекты в ней хранятся.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: нет Всего: 172 |
Дык речь не об объектах, а о ER (Entity-Relationship) диаграммах -------------------- |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Дык таким макаром можно шо хош запихать в РСУБД, правда эффективность...
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: нет Всего: 172 |
Не понял -------------------- |
|||
|
||||
| Kurt |
|
||||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: нет Всего: 36 |
Ага. Абсолютно пральна. Задача именно такая.. Хм.. Сейчас вспоминаю, что кто-то мне говорил, будто 3 вариант:
наиболее часто используется. А какой вариант наиболее оптимален по скорости? -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
||||
|
|||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: нет Всего: 172 |
Я не большой спец
-------------------- |
|||
|
||||
| Kurt |
|
|||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: нет Всего: 36 |
Почему?
Единственный трабл, к-й сразу бросается в глаза - если надо будет по ID узнать тип объекта - надо будет делать запросы во все таблицы сабклассов. Ну и, возможно, избыточность. Но не обязательно. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Если я ничего не путаю то в Oracle, объекты хранятся следующим образом:
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| simanyay |
|
|||
![]() Антон Ковалёв ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2053 Регистрация: 22.8.2002 Репутация: нет Всего: 36 |
И также если надо будет изменить какие-то общие данные в базе, то надо будет менять во всех таблицах, что не есть гуд. И, по моему, это нарушает какую-то нормальную форму... Хотя нет, скорее всего, я ошибаюсь. -------------------- «It's better to be a pirate than to join the Navy» — Steve Jobs. |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: нет Всего: 110 |
мне кажется, это нарушает не какие-то принципы проектирования баз данных, а что-то из принципов ООП
если надо будет, например, вывести количество всех объектов супер-класса, то при наличии его таблицы это делается одним запросом, если нет - надо искать по всем таблицам наследников (а при добавлении новых наследников придется лезть в давно забытый код и добавлять их таблицы в запрос) конечно, можно придумать какие-то правила для имен таблиц и вытаскивать их автоматически (просто как-то в ответ на мое предложение мне описали подобный вариант), но ИМХО это как-то неправильно... -------------------- qqq |
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |