|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.02.2013, 14:07 | #1 |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
Частая смена схемы БД
Здравствуйте. Вопрос чайника
Для разрабатываемого ПО создаётся соответствующая БД (ORACLE). Структура БД относительно проста, но в ней имеется таблица "параметров", по которым идёт поиск нужного элемента. Проблема в том, что кол-во параметров будет со временем расти, то есть изначально "базовых" параметров (длина ширина высота ... ) - около двух десятков, но в процессе работы будут добавляться новые идеально, чтобы это мог делать уполномоченный пользователь программы в рантайме, но вообще не принципиально, очередной параметр может добавлять и администратор Вопрос в том, правильно ли будет, создав структуру базы, наполнив её данными потом в процессе работы постоянно добавлять поля к таблице (предположительно число параметров с двух десятком может вырасти до сотни)? Является ли эта схема работы рекомендуемой ораклом, не возникнет ли каких-нибудь проблем, или таки нужно извратиться, сразу забить сотню "пустых" полей, которые потом использовать? |
20.02.2013, 14:13 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А держать параметры в дочерней таблице проблемно? Нет параметров у документа - нет записей в этой таблице, 100 параметров у документа - 100 записей в дочерней таблице. Это лучше намного подхода с постоянно изменяемой структурой
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
20.02.2013, 14:13 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Вы изначально проектируете НЕВЕРНО.
вместо Код:
Код:
Аватар, опять ответы по сути совпали и опять Вы меня чуть-чуть опередили!! |
21.02.2013, 07:30 | #4 |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
Спасибо! Но есть ещё одна проблема, - параметры могут быть разных типов, потому-то такое решение было отвергнуто. Получается, для каждого типа - свою таблицу?
|
21.02.2013, 08:40 | #5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Не обязательно. Можно любые значения параметров хранить в VARCHAR поле. Можно иметь 2-3 разнотиповых поля, например VARCHAR, INT и NUMERIC и значение записывать в соответствующее типу параметра поле.
UPD Надо же Второй раз в подряд в одной теме и минута в минуту
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 21.02.2013 в 08:51. |
21.02.2013, 08:41 | #6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
я бы в одной таблице и держал.
либо все параметры переводил в varchar и в отдельном поле хранил тип параметра либо, если бы с первым вариантом возникли сложности, тогда сделал так Код:
добавлено Цитата:
Последний раз редактировалось Serge_Bliznykov; 21.02.2013 в 08:47. |
|
25.02.2013, 14:39 | #7 |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
Здравствуйте! Спасибо за комментарии. Не поверите, именно это предложение предлагалось в качестве решения, но я его отверг, решил что избыточность и излишняя сложность и всё такое. Писать постеснялся. Сейчас почитал мат.часть, повспоминал основы реляционных баз данных - действительно чем больше таблиц тем лучше, а не наоборот
Теперь у меня упрощённо три таблицы Таблица_Детали Код:
Код:
Таблица_Каталог - два поля: Код:
Теперь, если я правильно понимаю, работать я должен так. Например, все детали у меня имеют параметр "Длина" и "Ширина" (в перспективе возможно будут ещё параметры, но пока их нет) Мне нужно добавить в каталог деталь "АБВГ.1234", у которой Длина = 5 Ширина = 10 Я создаю в Таблица_Параметры записи Код:
Код:
Код:
Код:
либо (второй вариант) Убрать в Таблица_Каталог поле Counter и сделать "FirstDetail_ID"; "Length_ID" - ключевыми Подскажите, правильно я понял это решение? И небольшой офф, подскажите, если возможно, какую-нибудь литературку, ссылки, попроще, покороче, для ввода в практику разработки в БД? Уровень - вот эта задача. Базу разрабатываю не я, просто есть сомнения в квалификации программиста и правильности выбранного решения, а времени разбираться минимум, у самого в голове только теоретические познания пятилетней давности и минимум общения с реальными БД (только запросы на выборку данных) |
25.02.2013, 22:09 | #8 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
26.02.2013, 09:47 | #9 |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
Я приписал префикс "ID_" только для того, чтобы показать, что поле является идентификатором.
На самом деле как обозначение детали так и название параметра (строковые) должны быть уникальными, поэтому чтобы не делать лишних проверок, их и объявляю в качестве ключевых, автоинкремент вроде как нигде не нужен |
26.02.2013, 10:37 | #10 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Префикс не причем. Обзывайте поле как вам удобно. Я об другом. На примере Таблица_Детали
ID_Детали (ключевое) int автоинкриментное и будет цифровым идентификатором детали. Зачем там символьное? Обозначение_Детали varchar + можно сделать альтернативный уникальный индекс для запрета записи одинаковых наименований. Аналогично для Таблица_Параметры Тогда в Таблица_Каталог ID_детали и ID_Параметра будут минимальное место занимать. Да и к первым двум таблицам это имеет отношение в равной мере И вообще предпочитаю int идентификаторы, удобнее и оптимальнее
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помоготе,пожайлуста, составить бкок-схемы по описанию схемы. | sasha1988 | Помощь студентам | 0 | 26.05.2012 18:27 |
Частая ошибка 404 | stationfuk | PHP | 6 | 16.05.2012 23:48 |
[B]Смена ИП[/B] | xpams | Работа с сетью в Delphi | 0 | 08.01.2012 18:30 |
Схемы | MaximusRS | Помощь студентам | 0 | 08.02.2011 22:42 |
Схемы | MaximusRS | C# (си шарп) | 0 | 08.02.2011 20:53 |