|
|
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
Кратко введу в курс дела... :) Есть событие – цунами. Таблица TsunamiTable описывает различные цунами. Есть данные о разрушениях от цунами, они хранятся в таблице DamageTable; данные о высотах цунами, они хранятся в HeightTable; данные об экономических потерях, они хранятся в LossTable, фото данные, они хранятся в PhotoTable, текстовые описания, они хранятся в TextTable. Причем между ними реализуется связь “многие к одному”, то есть могут быть различные данные для одного конкретного цунами. Существуют также публикации (в журналах, газетах и тд и тп) – таблица BiblioTable, и международные агентства – таблица AgencyTable, которые предоставляют какую то стандартную информацию о произошедшем цунами. Различные агентства (AgencyTable) могут предоставлять различную информацию о конкретном цунами, что и реализовано с помощью переходной таблицы AddInfoTable. Аналогично в различных публикациях (BiblioTable) могут упоминаться различные цунами, что и реализовано с помощью переходной таблицы BiblioLinksTable. ID_Add, ID_Loss, ID_Dam – ссылки на наиболее достоверную информацию о цунами в таблицах AddInfoTable, LossTable, DamageTable. В таблицах есть различные поля (i_Pi, FAT, I, m и тд и тп) и ссылки на публикации в которых упоминаются эти данные (Ri_Pi, RFAT, RI, Rm и тд и тп). То есть RI является как бы внешним ключом к BiblioTable.ID. Причем как видно из схемы – связи для ссылок в виде внешних ключей не реализованы. Поставлена задача об оптимизации структуры базы данных. Как на ваш взгляд есть ли какие-то серьезные недостатки проектирования у текущей структуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 10:50 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
БЫть может я не в курсе предметной области,но разве сущность Цунами и Высота цунами не в 1:1?Высота, по-моему,это атрибут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 10:55 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
Интересно, а вообще какова цель этой базы данных?... Какие запросы по ней будут проходить? Честно говоря когда в каждой таблице светится ID - хочется автору снять штаны и отшлёпать. Такой ощущение что автор думает что если по каждой таблице сделал простой ПК - то довел все отношения до 3НФ. Я такое проектирование назвал бы бездарным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 11:00 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
Наверное,текстовые описания тоже атрибут. К повреждениям и потерям я бы добавил ссылку на таблицу Место (наверное надо внести.,чтобы было ясно,где оно произошло) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 11:00 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
Да и вообще странно:все-таки в таблицах повреждений есть ссылка на цунами или нет?Или в Цунами ссылки на них. Сделайте более ясными названия атрибутов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 11:02 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
ShtockБЫть может я не в курсе предметной области,но разве сущность Цунами и Высота цунами не в 1:1?Высота, по-моему,это атрибут.гыгыгы. вот я хоть и чел необразованный, но представляю, что одна и та же цунама в разных реионах и в разных местах этих регионов может иметь разную высоту. Вот токо табличку регионов/областей для некоторых (видимо большинства) применений возможно желательно вынести в отдельную сущность-дереце. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 12:08 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
sevena Каких-то принципиальных недостатков у этой структуры я не вижу. Единственно, напрашивается выделение географического справочника или справочников по AreaName, RegionName. Кроме этого, я бы уделил внимание названиям таблиц и полей. В частности повторять в имени каждой таблицы слово Table вряд ли оправданно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 12:50 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
4321: Так как непонятно,для чего БД (курсовик или реально нужная база),то я иду по пути наибольшего упрощения, так что постарайтесь обойдусь без "гы-гы-лол" и прочее А про регионы вроде бы ShtockНаверное,текстовые описания тоже атрибут. К повреждениям и потерям я бы добавил ссылку на таблицу Место (наверное надо внести.,чтобы было ясно,где оно произошло) писалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 12:52 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
Shtock4321: Так как...,блаблабласмотрим глазом в схему, видим, что в таблице высот одним из атрибутов является место (более точно - 2 атрибута - AreaName, RegionName), понимаем, что высота относится к месту, а не просто к цунаме, и идем со своими упрощениями (как и обидками на "гыгыгы") лесом. желательно тихо. Такие дела. как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 14:52 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
Эх,люди,где же понимание юмора... P.S. Даже гениям свойственно ошибаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 15:19 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
Наверно, вот этот кусок вызвал желание посоветоваться авторID_Add, ID_Loss, ID_Dam – ссылки на наиболее достоверную информацию о цунами в таблицах AddInfoTable, LossTable, DamageTable. В таблицах есть различные поля (i_Pi, FAT, I, m и тд и тп) и ссылки на публикации в которых упоминаются эти данные (Ri_Pi, RFAT, RI, Rm и тд и тп). То есть RI является как бы внешним ключом к BiblioTable.ID. Причем как видно из схемы – связи для ссылок в виде внешних ключей не реализованы. Действительно не понятно, почему ID_Add, ID_Loss, ID_Dam не обявлены как внешние ключи. И как ссылки на публикации соотносятся с BiblioLinksTable, должна ли BiblioLinksTable являться супермножеством всех остальных RI, связанных с цунами. Как вариант - пара (MainID,RIxxx) - ссылка на BiblioLinksTable(MainID,BiblioID) - конечно если это действительно UNIQUE. Общее замечание - объявите предметные уникальные ключи либо явно напишите схемы величин. Типа Измерение высоты: (цунами, место, время, кто мерял, чем мерял). Высота: (цунами, место, время) - принятая высота на основании анализа Измерений Иначе мы Вам насоветуем...:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 15:30 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
2 gardenman: Запросы всякие разные - сортировка, поиск , удаление и вставка и тд и тп. 2 Shtock : Высоты это показания датчиков которые находятся в различных реионах и тд и тп. Но про текстовое описание верно подметили :) Место вводить не надо так как оно есть в таблице цунами TsunamiTable. Сорри упущение - ссылка на цунами в различных таблицах это MainID. 2 softwarer : Насчет имен все верно - предыдущий разработчик в этом ошибся :) 2 4321 : Еще может какие нить критические замечания? Справочники по Area и Region - эт стопудово верно! :) Если еще есть вопросы то задавайте ! С радостью отвечу. Спасибо всем за текущие замечания ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 15:31 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
Про оптимизацию. Напрашивается объединение всех файлов - тескты, фото, схемы и др. в единую таблицу. Атрибуты - описание, тип, дата, файл. Наоборот, множественные поля Authors, KeyWords могут съесть производительность при поиске. Возможно, достойны отдельных кросс-таблиц для индексирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 15:39 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
sevena 2 4321 : Справочники по Area и Region - эт стопудово верно! :) таки нет.таки не "справочники", а "справочник". Географический справочник древовидной структуры. Ибо место может быть указано с произвольной точностью внутри некоторого региона (расположенного внутри некоего супер-региона). И опять таки одного идентифекатора места вполне достаточно (он уже сам сошлется на субрегион, регион и т.п. вверх по дереву). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 16:02 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
4321 sevena 2 4321 : Справочники по Area и Region - эт стопудово верно! :) таки нет.таки не "справочники", а "справочник". Географический справочник древовидной структуры. Ибо место может быть указано с произвольной точностью внутри некоторого региона (расположенного внутри некоего супер-региона). И опять таки одного идентифекатора места вполне достаточно (он уже сам сошлется на субрегион, регион и т.п. вверх по дереву).Опять зависит от приложения. Если один из Area, Region - географическое, а другой политико-административное деление, то может и два. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 16:30 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
ModelR Если один из Area, Region - географическое, а другой политико-административное деление, то может и два.согласен, если сущности не[вполне]зависимы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 16:55 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
Хорошо, распишу все явно и подробно на русском языке, как я сам понимаю. Цунами характеризуется (Год, месяц, день, час, секунда, числовые параметры(интенсивности и тд), + ссылка на публикацию, ссылка на наиболее достоверные экономические потери, стандартную информацию, и параметры разрушений). Высоты цунами характеризуются (название региона(страны), название области(остров или страна) , показания датчиков, координаты положения датчиков + ссылки на публикации, упоминающие данные показания). Публикация характеризуется текстовыми полями такими как Авторы(просто перечисление), Ключевые слова и тд Стандартная информация (тоже какие то числовые параметры) характеризуется тем из какого Агенства она взята, и ссылки на публикации, упоминающие эти параметры. Таблица связей публикаций характеризуется публикациями и цунами. То есть в каких публикациях какие цунами упоминаются. типа связь "многие к многим". Ну а остальные это да - текстовые файлы с описаниями, фото файлы с картинками с места происшествия. 2 ModelR : Сорри - что то не пойму про обьединение фалов. В таблицах TextTable, PhotoTable хранятся имена на текстовые файлы и фото файлы соответственно. Причем картинок может быть очень много для конкретного цунами. А вот текстовое описание в 1 файле. А про регионы и области - что можете посоветовать? Так как да там появляется некая избыточность - сам смотрел в базе данных там в основном везде повторяется Japan, Japan ... Вот действительно непонятно с ссылками на публикации, вроде и связь на публикации о конкретном цунами реализована через промежуточную таблицу BiblioLinksTable. Но еще должны быть связи между отдельными параметрами (Ri, Rm) и публикациями. Ну вроде эта связь реализована в коде - но не как в виде внешнего ключа. А чтобы ее реализовать нужно создать промежуточные таблицы для каждой таблицы, содержащей ссылки на публикации - так что ли? И вот еще непонятно с ссылками на наиболее достоверную инофрмацию... Как же там быть? ПС Надеюсь добавочная информация просветлит вас :) Если, что опять непонятно, то пишите - дополню ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 08:37 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
2 sevena >2 gardenman: Запросы всякие разные - сортировка, поиск , удаление и вставка и тд и тп. Вы же наверно создаете базу данных не просто для того, чтобы хранить инфу о цунами. А для того чтобы ее в конце концов АНАЛИЗИРОВАТЬ. Например - анализировать частоту, скорость, высоту в разрезе - регионов времен года или еще как. Сначала ответте себе на вопрос - КАК вы собираетесь анализировать эти данные, набросайте итоговые таблицы отчетов, а потом уже выводите из них сущности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 09:07 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
2 gardenman : База данных уже написана. Вот для чего только она написана не могу понять - говорят, что надо найти оптимум между удобной системой хранения данных и быстродействием. Пока задача найти удобный способ хранения данных. То есть подкорректировать текущую структуру. Насчет ссылок подумал и вот, что надумал - не лучше ли будет создать дополнительный столбец Ссылка в таблицах и Значение Ссылки. Так вроде можно сэкономить на памяти в таблицах. Каково ваше мнение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 09:43 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
> Вот для чего только она написана не могу понять Да, для чего ее можно использовать в таком виде - абсолютная загадка. > надо найти оптимум между удобной системой хранения данных и быстродействием Пока забудьте про быстродействие. Структура данных даже отдаленно не напоминает рабочую. Imho было бы разумным ввести понятие точки наблюдения (с географическими координатами; точка наблюдения может представлять собой населенный пункт, а может характеризироваться только координатами). Все параметры цунами - применительно к точке наблюдения. Плюс собственно характеристики цунами (видимо, что-то типа координат эпицентра etc). Публикации, фотографии и пр. связаны с точкой наблюдения. Публикации описываются стандартным образом, их авторы - тоже. Про территориальный (и экстерриториальный) справочник уже говорили. Если измерение характеристик цунами производится по каким-то шкалам - обязательно описать их явным образом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 10:40 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
sevenaХорошо, распишу все явно и подробно на русском языке, как я сам понимаю. Цунами характеризуется (Год, месяц, день, час, секунда, числовые параметры(интенсивности и тд), + ссылка на публикацию, ссылка на наиболее достоверные экономические потери, стандартную информацию, и параметры разрушений). Нет, в такой форме это мало что проясняет. Собственно основной вопрос проектирования структур данных - один или много ? sevena Например, связь - Цунами . Ясно, что для данногоb]Цунами есть 0..1 достоверные экономические потери . Но остается не ясным, одни и те же достоверные экономические потери могут характеризовать разные Цунами ? Т.е. судя по диаграмме - да, а на самом деле? Используйте нотацию Баркера для тестового описания связей. Это описание предъявляется спецам по предметной области для верификации и задается основной вопрос. [quot sevena] 2 ModelR : Сорри - что то не пойму про обьединение фалов. В таблицах TextTable, PhotoTable хранятся имена на текстовые файлы и фото файлы соответственно. Причем картинок может быть очень много для конкретного цунами. А вот текстовое описание в 1 файле.Тогда логично предлагалось перенести его в сущность Цунами. sevena А про регионы и области - что можете посоветовать? Так как да там появляется некая избыточность - сам смотрел в базе данных там в основном везде повторяется Japan, Japan ...Терзать заказчика. sevena Вот действительно непонятно с ссылками на публикации, вроде и связь на публикации о конкретном цунами реализована через промежуточную таблицу BiblioLinksTable. Но еще должны быть связи между отдельными параметрами (Ri, Rm) и публикациями. Ну вроде эта связь реализована в коде - но не как в виде внешнего ключа. А чтобы ее реализовать нужно создать промежуточные таблицы для каждой таблицы, содержащей ссылки на публикации - так что ли? И вот еще непонятно с ссылками на наиболее достоверную инофрмацию... Как же там быть? BiblioLinksTable - суть Упоминание_Цунами_в_Публикации. Опять, допустимо ли более одного Упоминание_Цунами_в_Публикации для данной пары Цунами+Публикация? если нет, то эта пара - уникальный ключ. На него можно ссылаться, равно как и на суррогат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 11:26 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
ModelRНет, в такой форме это мало что проясняет. субуго ИМХО при такой постанровке задачи основная таблица - Измерения или Survey - таблица фактов дата - дата место - регион объект - цунами значение1 - высота волны значение2 - скрость прохождения значение3 - объем разрушений значениеn - whatever else источник - ... источник информации sevenaПоставлена задача об оптимизации структуры базы данных. Как на ваш взгляд есть ли какие-то серьезные недостатки проектирования у текущей структуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 12:02 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
Сорри, начало 2454735 читать sevenaХорошо, распишу все явно и подробно на русском языке, как я сам понимаю. Цунами характеризуется (Год, месяц, день, час, секунда, числовые параметры(интенсивности и тд), + ссылка на публикацию, ссылка на наиболее достоверные экономические потери, стандартную информацию, и параметры разрушений). Нет, в такой форме это мало что проясняет. Собственно основной вопрос проектирования структур данных - один или много ? Например, связь Достоверные экономические потери - Цунами . Из Вашего поста ясно, что для данного Цунами есть 0..1 Достоверные экономические потери . Но остается не ясным, одни и те же Достоверные экономические потери могут характеризовать разные Цунами ? Т.е. судя по диаграмме - да, а на самом деле? Используйте нотацию Баркера для тестового описания связей. Это описание предъявляется спецам по предметной области для верификации, задается основной вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 12:35 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
Хорошо давайте будем решать вопросы с простых вещей и в понятных обозначениях : Цунами это BASE RELATION TSUNAMI (TSU_ID#, ... DAMAGE_ID#) PRIMARY KEY (TSU_ID#) FOREIGN KEY (DAMAGE_ID#) REFERENCES DAMAGE Разрушения это BASE RELATION DAMAGE (DAMAGE_ID#, ... TSU_ID#) PRIMARY KEY (DAMAGE_ID#) FOREIGN KEY (TSU_ID#) REFERENCES TSUNAMI Получилась нехорошая циклическая связь! Как этого избежать? Можно добавить просто поля DAMAGE к TSUNAMI и считать, что как раз эти поля и есть наиболее достоверные характеристики разрушения для данного цунами - это будет верным? 2 ModelR : Поймите правильно - есть различные Разрушения соответствующие одному Цунами . Но среди этих Разрушений выделяется одно - наиболее достоверное для данного Цунами , причем это достоверное не может соответствовать другому Цунами . Вот спрашивается как это корректно сделать? Один вариант я предложил - вот только верен ли он на ваш взгляд? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2006, 08:49 |
|
||
|
Помогите плииз найти ошибки проектирования...
|
|||
|---|---|---|---|
|
#18+
sevenaПолучилась нехорошая циклическая связь! Вполне нормальная. Единственно, в логической модели лучше использовать более говорящие имена Цунами BASE RELATION TSUNAMI (TSU_ID#, ... MOST_RELIABLE_DAMAGE_ID#) PRIMARY KEY (TSU_ID#) FOREIGN KEY (MOST_RELIABLE_DAMAGE_ID#) REFERENCES DAMAGE При желании можно усилить ограничения целостности и декларировать, что Разрушение , избранное в Цунами как наиболее достоверное, должно относиться к данному Цунами . BASE RELATION DAMAGE (DAMAGE_ID#, ... TSU_ID#) PRIMARY KEY (DAMAGE_ID#) UNIQUE (DAMAGE_ID#,TSU_ID#) -- любое супермножество ключа уникально FOREIGN KEY (TSU_ID#) REFERENCES TSUNAMI BASE RELATION TSUNAMI ... FOREIGN KEY (MOST_RELIABLE_DAMAGE_ID#,TSU_ID#) REFERENCES DAMAGE (DAMAGE_ID#,TSU_ID#) sevenaМожно добавить просто поля DAMAGE к TSUNAMI и считать, что как раз эти поля и есть наиболее достоверные характеристики разрушения для данного цунами - это будет верным?ИМХО это усложнит запросы - данные о разрушениях будут в разных таблицах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2006, 09:41 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33602737&tid=1545357]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
154ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 429ms |

| 0 / 0 |
