Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужен совет по правильной организации данных 
:(
    Опции темы
Zloxa
Дата 29.6.2012, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



На самом деле каскадные операции накладывают еще и ряд ограничений на манипуляции с таблицами. Тут на разных платформах по разному.

MS SQL, например, очень параноидально следит за рекурсивными каскадами. Настолько параноидально, что видит рекурсию и там, где ее на деле нет. Разработчик встает перед выбором отказаться от каскадных операций вовсе или же использовать их частично - для каких то случаев использовать, для каких -то нет, что делает дизайн не красивым и разработчик, как парвило, отказывается от каскадных операций совсем.

В оракле применение каскадных операций тоже черевато. Чеевато т.н. мутациями - специфическое для оракла понятие, вызванное ограничением платформы, не допускающем выбираться из того набора, который подлежит модификации. Разраб в таких случаях тоже встает перед выбором, либо отказатся от каскадов полностью, либо местами применять их, местами - нет, что тоже не красиво.

В результате каскады используются редко. В результате мало кто обращает внимание, а накручен ли каскад на fk, прежде чем выполнять манипуляции с данными. В результате часты ошибки.

Че там в акцессе, есть ли подводные камни - не зна smile.

Добавлено через 5 минут и 8 секунд
Цитата(CyraxZ @  29.6.2012,  11:59 Найти цитируемый пост)
Так ? 

Нет не так. Я против каскадов полностью.

Каскадные обновления - вообще странная операция. В проектируемой вами системе действительно есть процессы, требующие модификации значения PK? Если да, вероятно, что-то не то с дизайном. У меня лишь из пальца высасываются примеры, кода это действительно может быть нужно, и те примеры - не бесспорны.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
CyraxZ
Дата 29.6.2012, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Цитата

Че там в акцессе, есть ли подводные камни - не зна

В Access'е слежки за рекурсивными каскадами нет. Триггеров тоже нет.
Для каждой связи есть только 3 опции:
- обеспечение ссылочной целостности (запрет удаления или изменения, если в связанной таблице есть записи с данным значением FK)
- каскадное обновление
- каскадное удаление

Цитата

Я против каскадов полностью.

А обеспечение ссылочной целостности - против этого, наверное, не будете ?

Цитата

Каскадные обновления - вообще странная операция. В проектируемой вами системе действительно есть процессы, требующие модификации значения PK?

У меня - нет, поскольку все PK у меня - числовые идентификаторы.
Но как минимум, в учебных БД ключами могут быть и имена. В этом случае каскадное обновление пригодится.

PM MAIL   Вверх
Zloxa
Дата 29.6.2012, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



Цитата(CyraxZ @  29.6.2012,  18:37 Найти цитируемый пост)
В Access'е слежки за рекурсивными каскадами нет. Триггеров тоже нет.
Для каждой связи есть только 3 опции:

Это я в курсе. Я не вкурсе не очевидных, глубинных проблем. smile 

Цитата(CyraxZ @  29.6.2012,  18:37 Найти цитируемый пост)
А обеспечение ссылочной целостности - против этого, наверное, не будете ?

Здесь я всеми конечностями за.
Порой, даже черезчур.  smile 
Коллеги часто жалуются, что присунуть данные в создаваемые мною структуры, порой, бывает весьма проблематично. Уж больно я склонен утянуть все ограничениями. Но тут я работаю над собой. 

Цитата(CyraxZ @  29.6.2012,  18:37 Найти цитируемый пост)
У меня - нет, поскольку все PK у меня - числовые идентификаторы.

Значит вам эта опция не нужна, бритвой Оккамы ее безжалостно отсекем. smile

Цитата(CyraxZ @  29.6.2012,  18:37 Найти цитируемый пост)
Но как минимум, в учебных БД ключами могут быть и имена. В этом случае каскадное обновление пригодится.

Имена, пожалуй, только в учебных базах и являются ключами.  smile 
На деле, действительно полезным может быть лишь при наличии т.н. натурального(есстественного) ключа.
Но на практике....
Возьмем к примеру товар. У каждого товара есть штрих-код производителя, уникальный в мировом масштабе. Вполне логично бы этот код использовать в качестве естественного ключа. Однако представте стоимость операции модификации такого ключа в мало мальски сложной системе. Если мы попытаемся изменить код товара, нам надо будет изменить все документы, все остатки, все заказы, парайслисты, заявки и мало ли еще чего. На практике эта операция просто не осуществима даже в пределах одной системы. Я уже не говорю о том, что у нас могут быть несколько интегрированных между собой систем, использующих единую систему кодов... ну или взаимодействующих через перекодировку.


Это сообщение отредактировал(а) Zloxa - 29.6.2012, 20:23


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
CyraxZ
Дата 1.7.2012, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Zloxa, как насчёт 2 вариантов реализации связи между таблицей Адрес и таблицей организации/объекта/отдела ?
Какой из двух вариантов связи Вы бы реализовали в случае, когда адрес выделен в отдельную таблицу ?
а) сущности "Организация", "Объект" и "Отдел" имеют поле "id адреса"
б) сущность "Адрес" имеет поля "id организации", "id объекта" и "id отдела"

P.S. Гляньте ещё вот эту тему, если занимаетесь программированием.

Это сообщение отредактировал(а) CyraxZ - 1.7.2012, 22:58
PM MAIL   Вверх
Zloxa
Дата 2.7.2012, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



Цитата(CyraxZ @  1.7.2012,  23:56 Найти цитируемый пост)
Zloxa, как насчёт 2 вариантов реализации связи между таблицей Адрес и таблицей организации/объекта/отдела ?

Я перестал улавливать суть идеи, которую вы пытаетесь реализовать, не могу коментировать решения.
Пробуйте.
Если реализуете криво, рано или поздно, поймете в чем накосячили.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1092 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.