Здравствуйте!
Пытаюсь создать себе базу для учета комп.техники. Для каждого типа техники (системники, мониторы, печатная техника и тд) создал отдельную таблицу (справочник), так как у каждого типа техники есть уникальные технические характеристики, по которым я хочу в дальнейшем искать технику. Например, нужно найти мониторы с диагональю 22дюйма, или найти системники с процессорами x64 или только х86.
Справочники техники я хочу использовать для дальнейшего заполнения основных таблиц. Т.е, в справочниках мы создаем технику, описываем её тех.характеристики, а потом, когда начинаем вести учет техники, мы сможем использовать технику из справочников.
Так же создал основную таблицу, в которую должны записываться единицы техники, поставленные на балланс предприятия. Получается, что основная таблица должна быть связана со всеми справочниками техники.
Итого, сейчас схема базы выглядит, примерно, так:
Справочники:
CREATE TABLE "references".monitors ( id serial NOT NULL, -- Автоинкрементный идентификатор. Проставляется автоматически при добавлении новой записи в таблицу. manufacturer_id integer NOT NULL, -- Идентификатор производителя. Является внешним ключом на поле id таблицы manufacturers. Обязательное поле. model_id integer NOT NULL, -- Идентификатор модели. Является внешним ключом на поле id таблицы models. Обязательное поле. size text, -- Размер дисплея (в дюймах). Необязательное поле. unit_img text, body_color text, -- Цвет корпуса. Необязательное поле decription text, -- Описание/уточнение (Любая дополнительная иформация). необязательное поле )
CREATE TABLE "references".printing_technology ( id serial NOT NULL, -- Автоинкрементный идентификатор. Проставляется автоматически при добавлении новой записи в таблицу. manufacturer_id integer NOT NULL, -- Идентификатор производителя. Является внешним ключом на поле id таблицы manufacturers. Обязательное поле model_id integer NOT NULL, -- Идентификатор модели. Является внешним ключом на поле id таблицы models. Обязательное поле unit_img text, tech_type integer NOT NULL, -- Тип печатной техники. Является внешним ключом на поле id таблицы tech_type. Обязательное поле body_color text, -- Цвет корпуса. Необязательное поле description text, -- Описание/уточнение (любая дополнительная информация). Необязательное поле )
И таких справочников много. Плюс, как видно из полей таблиц, есть ещё таблицы производителей и моделей, которые служат справочниками для справочников техники.
Простите за такое обилие текста. Столько всего в голове уже перелопатил, что уже каша просто. Вторую неделю бьюсь над этой базой, так как опыта работы с СУБД маловато ещё.
Помогите пожалуйста понять, как создать такую базу.
Если я описал не совсем понятно - скажите, я постараюсь раскрыть более понятно.
Заранее благодарю всех, кто откликнется.
1. Так я и не понял, а в чем
1. Так я и не понял, а в чем собственно вопрос?
"как создать такую базу" - как-то звучит слишком "обще".
Руками создают или в редакторе баз данных.
2. Ужасный. Ужасный. УЖАСНЫЙ. ОТВРАТИТЕЛЬНЫЙ ПОДХОД!!!
Надо сделать так:
- Создать таблицу для экземпляра техники (тип техники, наименование);
- Создать таблицу типов техники: копир, ноутбук, стиралка;
- Создать таблицу типов характеристик: тактовая частота, разрешение экрана, скорость вращения.
- и через связывающую таблицу соединить её с типами техники.
- Создать таблицу, которая будет хранить все данные по характеристикам данного экземпляра техники.
Надеюсь, понятно
Ещё раз прошу прощения за
Ещё раз прошу прощения за некоторую запутанность в первом посте. Писал с работы и постоянно приходилось отвлекаться.
Суть вопроса была такова: есть таблицы-справочники для каждого типа техники (системники, мониторы, печатная техника и тд). Каждый справочник содержит, примерно, такие поля: id, manufacturer_id, model_id, и поля для тех.характеристик (в каждой таблице поля тех.характеристик свои).
Так же есть основная таблица со следующими полями:
Поле tech_id должно содержать идентификаторы из справочников техники. Но тут проблемы:
1. Идентификаторы в каждом справочнике техники имеют тип данных serial и будут совпадать.
2. Насколько я понимаю, если от поля tech_id сделать внешние ключи на все справочники техники - ничего хорошего из этого не выйдет.
altair, спасибо большое за подсказку структуры таблиц! Обязательно попробую этот вариант
Воспользовавшись визуальным
Воспользовавшись визуальным проектировщиком БД, сделал следующим образом:
Таблицы:
- Типы техники (id, name);
- Производители (id, name);
- Модели (id, name);
- Тех.характеристики (id, name);
Связывающие таблицы:
- Производители по типам техники (id, tech_type_id, manufact_id);
- Модели по типам техники (id, tech_type_id, model_id);
- Тех.характеристики по типам техники (id, tech_type_id, characteristic_id).
Но теперь не могу понять, как делать таблицу-справочник техники и таблицу с текстами тех.характеристик. Какие поля должны быть (ну кроме поля с текстом тех.данных) и с какими таблицам связывать.
Дело в том, что я хочу сделать систем с жесткими привязками. Если в справочник записываем монитор, то пользователь не должен иметь возможности создать монитор с производителем от мышек и моделью от принтеров. Т.е. каждому типу техники должны совпадать определенные производители, модели и характеристики.
Через созданные связывающие таблицы я могу отбирать отдельно производителей, модели и характеристики техники, но как дальше быть с основным справочником техники и текстами характеристик, я понять не могу.
Доброго дня. Ну сделайте для
Доброго дня. Ну сделайте для начала хоть что-то. Создайте таблицы. Создайте на php скрипты для добавления данных в справочники, для добавления техники, а там дальше видно будет.
Игорь, не хочу начинать
Игорь, не хочу начинать писать PHP, пока нет нормальной базы, под которую должна быть написана бизнес логика. Иначе придётся постоянно переписывать горы PHP из-за перестройки БД.