Вопрос по БД

Assembler, Basic, Pascal/Delphi, Perl, PHP, JavaScript, HTML и т.д. Вопросы и помощь.

Вопрос по БД

Непрочитанное сообщение Shar » 20 окт 2006, 09:10:02

Народ подскажите, как в базах данных можно реализовать записи следующего типа (подскажите структуру таблицы), например:
Рентгеновские лучи
ххх код
санитарные условия
использования Р.Л.
ххх код

Все это одна запись! СУБД еще не определена, но можно показывать на примере Аксеса или Paradox в Delphi, главное структура.
Очень нужно!
Shar
Опытный
Опытный
 
Сообщения: 157
Зарегистрирован: 27 июн 2006, 08:07:15
Откуда: Курск

Вопрос по БД

Непрочитанное сообщение Fatum » 21 окт 2006, 09:35:47

Что то я не вьехал в вопрос?
Что тебе именно нужно?
Сын земли,брат ветра,внук звёзд,пациент клиники!
Fatum
Завсегдатай
Завсегдатай
 
Сообщения: 925
Зарегистрирован: 24 июн 2006, 14:50:52
Откуда: Город46
Пол: Мужской

Вопрос по БД

Непрочитанное сообщение Shar » 21 окт 2006, 12:02:15

Вообщем есть в библиотеках карточка предметных рубрик, она имеет вид

Заголовок предметной рубрики(ПР); код заголовка ПР(не всегда обязателен);
Подзаголовок1 ПР; код подзаголовка1 ПР(обязателен);
……………………………………………………..
Подзаголовок(Х) ПР; код подзаголовка(х) ПР(обязателен);

Вообщем такие карточки нужно хранить в БД, причем подзаголовков может быть как много так и не одного, но они могут со временем добавлятся. Меня интересует как хранить такие карточки, чтобы была возможность их редактирования, поиска и последующей распечатки в виде карточек.
Shar
Опытный
Опытный
 
Сообщения: 157
Зарегистрирован: 27 июн 2006, 08:07:15
Откуда: Курск

Вопрос по БД

Непрочитанное сообщение Anri » 21 окт 2006, 13:27:32

Что бы ты не собирался сохранять в БД нужно понимать, что луюдая запись требует идентификации, т.е. первое поле будет: идентификатор. Его же обычно делают и ключевым. Далее идут твои поля.

Из написанного тобой смутно понятно следующее:
Предметная рубрика/Каталог {Name varchar(255) is not NULL, Code varchar(255)}
которая реляционна связана с
Подзаголовок/Подкаталог {Name varchar(255) is not NULL, Code carchar(255) is not NULL}


Естественно размерность данных я не знаю, просто от болды 255 написал.
Т.е. имеем:
Table: Roubrik
RubID (int, prim. key, ident., inc(+1), not NULL)
Name (varchar, not NULL)
Code (varchar)

Table: ChildRubs
CRubID(int, prim. key, ident., inc(+1), not NULL)
Name (varchar, not NULL)
Code (varchar)

Table Rub_Relation
RelationID (int, indent, inc(+1), not NULL)
RubID (int, not NULL)
CRubID (int, not NULL)

Получение связи между таблицами ныжно выполнять по пути:
Roubrik.RubID -> Rub_Relation.RubID:Rub_Relation.CRubID -> ChildRubs.CRubID


Только мне представляется, что в задании дерьмо какое-то пованивает.
Всё это можно и нужно делать одной таблицей и реляцией на сомою себя (т.е. + реляционная таблица)

ПыСы. под кодом из задания я подразумевал не идентификатор, а каккой-то абстрактный код, например "ПР.10-20"
Давай с тобой поговорим, прости, не знаю, как зовут.
Но открывается другим, все то, что близким берегут.
Ты скажешь: "Все наоборот, согласно логике вещей",
Но это редкий поворот, а, может, нет его вообще.

(с) О.Митяев
Anri
Магистр
Магистр
 
Сообщения: 2137
Зарегистрирован: 05 июл 2006, 23:30:06
Откуда: Frankfurt am Main, Germany
Пол: Мужской

Вопрос по БД

Непрочитанное сообщение Shar » 26 дек 2006, 17:47:43

Народ подскажите или скажите где можно про это прочитать, как организовать поиск (можно на данном примере) чтобы поиск велся по полям подчиненной таблицы, а результатом были записи в главной таблице.
Shar
Опытный
Опытный
 
Сообщения: 157
Зарегистрирован: 27 июн 2006, 08:07:15
Откуда: Курск

Вопрос по БД

Непрочитанное сообщение Гость » 26 дек 2006, 17:54:22

Shar
через индексы все…. тибе надо почитать книшку про SQL - там же на примерах реализация поиска….
Гость
 

Вопрос по БД

Непрочитанное сообщение Anri » 16 янв 2007, 19:36:47

Shar писал(а):Народ подскажите или скажите где можно про это прочитать, как организовать поиск (можно на данном примере) чтобы поиск велся по полям подчиненной таблицы, а результатом были записи в главной таблице.


вообще-то этот вопрос результат полного не знания что такие ANSI-SQL (T-SQL) и так далее. Т.е. прямой результат отсуствия знаний в области БД (типа как в делфи вас научили выполнять прямолинейные выборки из таблицы…)

Код: Выделить всё
Select a.* from Tab1 a, Tab2 b where a.id = b.id and <условия>


- вот, напрмер. Можно Join-ами пользвоваться.. эт как кому нравится. Про Оракл ни фига сказать не могу.. но, оно, как я полагаю тут и не рассмативается :)

Попробуйте очень просто вызвать какой-нибидь из возможный SQL-builder-ов, хотя бы тот, что идёт в MS Office и там вызвав главную и подчинённую таблицы свяжите их реляцией по ключевым полям (кстати я совсем не понял почему тут вспомнили о индексах.. ведь пока что вопросы не задавали о скорости выборки или каким-то иным проблемам связанных с индексированием, а запрос к N-му кол-ву таблик к индексам, по большому счёту, имеет несколько параллельное отношение). Связав табилцы укажите какие поля вам надо выдать, промаркировав их в нужной таблице. На то поле по которому вы укажите условие маркир снемите (если это поле не нужно в результирующем наборе строк). И всё.. даже SQL знать не надо.

Как только убедились, что запрос возвращает верные данные скопируйте полученный SQL и можете его засовывать в вашу программу (делфи тоже его кушает с удовольствием, как я помню).

Да, ессно, нужно чтобы у вас в Бд данные для теста были хоть какие-то.

Про индексы: они нужны и надо знать для чего ими пользоваться и как не напороться на грабли, но они совсем не обязательны для выполнения любого типа запросов. Скажем так: для лабораторных задачь я бы не стал упомянать про какие-то там индексы, иначе оно приведёт к лишним вопросам
Давай с тобой поговорим, прости, не знаю, как зовут.
Но открывается другим, все то, что близким берегут.
Ты скажешь: "Все наоборот, согласно логике вещей",
Но это редкий поворот, а, может, нет его вообще.

(с) О.Митяев
Anri
Магистр
Магистр
 
Сообщения: 2137
Зарегистрирован: 05 июл 2006, 23:30:06
Откуда: Frankfurt am Main, Germany
Пол: Мужской

Вопрос по БД

Непрочитанное сообщение Shar » 17 янв 2007, 11:11:32

Как делать SQL запрос на выборку из 2 таблиц я знаю и давно реализовал. Проблема в том что, если записи в гл. таблице нет подчиненных записей во второй таблице, то запрос перестает работать. Как отследить это отсутствие подчиненных записей?
Shar
Опытный
Опытный
 
Сообщения: 157
Зарегистрирован: 27 июн 2006, 08:07:15
Откуда: Курск

Вопрос по БД

Непрочитанное сообщение Anri » 17 янв 2007, 12:16:54

Shar писал(а):Как делать SQL запрос на выборку из 2 таблиц я знаю и давно реализовал. Проблема в том что, если записи в гл. таблице нет подчиненных записей во второй таблице, то запрос перестает работать. Как отследить это отсутствие подчиненных записей?


ты не пробовал Left Join/ Right Join или *= / =* использовать?
это, батенька, стандартный вопрос при любом собеседовании ;): "а что будит если в одной из таблиц нету записей?", при неответе на вопрос вас культурно посылают и у вас нету ни единого шанса устроится на хорошую высокооплачиваемую работу
а будут там NULL-ы жить и по нулам этим ты и определишся хто есть хто
Давай с тобой поговорим, прости, не знаю, как зовут.
Но открывается другим, все то, что близким берегут.
Ты скажешь: "Все наоборот, согласно логике вещей",
Но это редкий поворот, а, может, нет его вообще.

(с) О.Митяев
Anri
Магистр
Магистр
 
Сообщения: 2137
Зарегистрирован: 05 июл 2006, 23:30:06
Откуда: Frankfurt am Main, Germany
Пол: Мужской

Вопрос по БД

Непрочитанное сообщение Shar » 17 янв 2007, 12:35:42

ты не пробовал Left Join/ Right Join или *= / =* использовать?

Да с этим я не знаком:( Слушай где про это можно прочитать? может у тебя что есть?
Shar
Опытный
Опытный
 
Сообщения: 157
Зарегистрирован: 27 июн 2006, 08:07:15
Откуда: Курск

Вопрос по БД

Непрочитанное сообщение Anri » 17 янв 2007, 15:02:40

ты миня огорошил
я про это уже лет 12 как не читал… думаю любая книжка про реляционные базы данных тебе подойдёт. Просто прочти что такое реляция, зачем она нужна и что такое SELECT из N-го количество таблиц

в твоём случае тебе надо выбрать все записи из "главной" (ведущей) таблицы и имеющие-ся из "подчинённой". NULL в виде поля (ей) из подчинённой говорит о том, что нету связи. Но это всё при условии, что ты выполнял элементарные правила нормализации баз данных и база у тебя реляционна, а не тупой прообраз массивов
Давай с тобой поговорим, прости, не знаю, как зовут.
Но открывается другим, все то, что близким берегут.
Ты скажешь: "Все наоборот, согласно логике вещей",
Но это редкий поворот, а, может, нет его вообще.

(с) О.Митяев
Anri
Магистр
Магистр
 
Сообщения: 2137
Зарегистрирован: 05 июл 2006, 23:30:06
Откуда: Frankfurt am Main, Germany
Пол: Мужской

Вопрос по БД

Непрочитанное сообщение Caratel » 12 мар 2007, 14:08:06

Люди!!!! кто знает, как решить проблему/ошибку с востановление базы данных???

Вот сама ошибка:

Общая ошибка
Error importing backup file

DEBUG MODE

SQL Error : 1062 Duplicate entry 'видом' for key 1

INSERT INTO phpbb_kb_wordlist (word_text, word_id, word_common) VALUES('видом', '210', '0')

Line : 985
File : admin_db_utilities.php
Caratel
 


Вернуться в Программирование

Кто сейчас на форуме

Зарегистрированные пользователи: AhrefsBot [Bot], Bing [Bot], DotBot [Crawler], GoGo [Бот], Google [Bot], SEMrush [Бот], Trendiction [Бот], Яндекс [Бот]

cron