Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Архив документов. / 15 сообщений из 15, страница 1 из 1
25.02.2005, 13:16
    #32933376
McLighter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архив документов.
Итак я сделал систему документооборота. Теперь у меня
много вопросов.
1. Как одним запросом Insert можно вставить данные в несколько таблиц.
2. У меня индексация записей по primary key = имени файла. Знаю что это неочень хорошо, но как иначе.
3. В связи с этим проблема. Я добавляю новый файл. В базу заносится его имя. теперь
я копирую файл на сервер с индексным именем. Для этого надо узнать индекс файла который ему присвоился.
Получается insert - select - copy. Можно ли сократить эту цепочку.
...
Рейтинг: 0 / 0
25.02.2005, 13:46
    #32933462
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архив документов.
>1. Как одним запросом Insert можно вставить данные в несколько таблиц.
никак
>2. У меня индексация записей по primary key = имени файла. Знаю что это неочень хорошо, но как иначе.
Иначе? Чем плох варант с полем автоинкремента?
>я копирую файл на сервер с индексным именем. Для этого надо узнать индекс файла который ему присвоился.
Ничего не понял. Зачем узнавать индекс файла, если он равен имени файла, и это имя. как я понял, ты знаешь, потому что ты только что сам добавил его в базу.
>Получается insert - select - copy. Можно ли сократить эту цепочку.
Не получается, потому что не понятен абзац выше.
...
Рейтинг: 0 / 0
25.02.2005, 14:13
    #32933545
McLighter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архив документов.
На счет автоинкремента. Во многих базах данных идентификатор записи в таблице вообще не число, это просто уникальное значение. В mysql это число, но использовать его все равно не рекомендуют, я не знаю почему. Так говорят профессионалы. Поэтому и спрашиваю есть ли варианты.
Насчет файлов. Есть файл Документ12.doc. Его помещают в мой веб архив. В моем каталоге на сервере я хочу хранить его как 1.doc. (далее 2,3,4) Поэтому имя файла копируется в базу. Чтоб пользователь знал его имя. А файл переименовывается в индексное имя и копируется на сервер. Вот и получается прописываю в базу имя. Вытаскиваю по этому имени соответствующий индекс. И переименовываю копируемый файл в этот индекс+разрешение. Получается Insert-Select-Copy
...
Рейтинг: 0 / 0
25.02.2005, 14:28
    #32933615
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архив документов.
Насчет автоинкремента. Не знаю, чем плох автоинкремент???? Грубо говоря Чем уникальный набор ЦИФР отлачется от уникального набора БУКВ??? Автоинкремент гарантированно создаст новое уникальное значение. Какие проблемы????
авторА файл переименовывается в индексное имя и копируется на сервер.
Сам переименовывается? Если сам - то это просто уникальная технология..;))))
А если серьезно, то напиши стуркутру таблицы, в которую ты пишешь данные о файле. Потому как я не могу понять - индекс у тебя автоинкремент или ты сам вписываешь цифру??.. вобщем, давай структуру БД...
З.Ы. LAST_INSERT_ID()
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
25.02.2005, 14:32
    #32933627
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архив документов.
McLighterно использовать его все равно не рекомендуют, я не знаю почему. Так говорят профессионалы. Поэтому и спрашиваю есть ли варианты. Вариант есть - не слушать своих профессионалов или разобраться ПОЧЕМУ они не советуют так делать.

auto_increment придуман прежде всего для первичных ключей.
При использовании auto_increment твой файл пишется по такой цепочке:
1. insert
2. $id = mysql_insert_id(); // получим ПК вставленной записи
3. создаем файл $id.".doc"
...
Рейтинг: 0 / 0
25.02.2005, 14:42
    #32933666
McLighter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архив документов.
Вот моя база.
create table dirs(id_dir int3(5) primary key not null auto_increment, name_dir varchar(30), dir_comments varchar(100));

create table document(id_document int3(6) primary key not null auto_increment, doc_name varchar(50), id_author int3(5), doc_comment varchar(150), id_type int3(5), id_access int3(5), made_date DATE, id_dir int3(5));

create table authors(id_author int3(5) primary key not null auto_increment, family varchar(30), name varchar(30), login varchar(30), password varchar(7), id_otdel int3(5));

create table otdel(id_otdel int3(5) primary key not null auto_increment, otdel_name varchar(30));

create table docs_control(id_control int3(5) primary key not null auto_increment, login varchar(30), time DATE, id_document int3(6));

create table access(id_access int3(5) primary key not null auto_increment, access_type varchar(5));

create table type(id_type int3(5) primary key not null auto_increment, type_name varchar(20));
...
Рейтинг: 0 / 0
25.02.2005, 14:44
    #32933673
oracle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архив документов.
4m@t!c>1. Как одним запросом Insert можно вставить данные в несколько таблиц.
никак
>2. У меня индексация записей по primary key = имени файла. Знаю что это неочень хорошо, но как иначе.
Иначе? Чем плох варант с полем автоинкремента?
>я копирую файл на сервер с индексным именем. Для этого надо узнать индекс файла который ему присвоился.
Ничего не понял. Зачем узнавать индекс файла, если он равен имени файла, и это имя. как я понял, ты знаешь, потому что ты только что сам добавил его в базу.
>Получается insert - select - copy. Можно ли сократить эту цепочку.
Не получается, потому что не понятен абзац выше.

Ну вообще то вставить можно, например в Оракле делаешь представление, и затем вешаешь INSTEAD OFF триггер.
...
Рейтинг: 0 / 0
25.02.2005, 14:50
    #32933698
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архив документов.
McLighterВот моя база.
create table dirs(id_dir int3(5) primary key not null auto_increment, name_dir varchar(30), dir_comments varchar(100));

create table document(id_document int3(6) primary key not null auto_increment, doc_name varchar(50), id_author int3(5), doc_comment varchar(150), id_type int3(5), id_access int3(5), made_date DATE, id_dir int3(5));

create table authors(id_author int3(5) primary key not null auto_increment, family varchar(30), name varchar(30), login varchar(30), password varchar(7), id_otdel int3(5));

create table otdel(id_otdel int3(5) primary key not null auto_increment, otdel_name varchar(30));

create table docs_control(id_control int3(5) primary key not null auto_increment, login varchar(30), time DATE, id_document int3(6));

create table access(id_access int3(5) primary key not null auto_increment, access_type varchar(5));

create table type(id_type int3(5) primary key not null auto_increment, type_name varchar(20));

2 вопроса :
1. сам как думаешь, то что ты выше написал легко прочитать ?
потрудись оформлять свои вопросы так, чтобы их было легко и приятно читать
2. Какое отношение к вопросу имеют все таблицы, кроме documents ?
...
Рейтинг: 0 / 0
25.02.2005, 14:50
    #32933700
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архив документов.
в Мускуле до 4-й версии не было вложенных запросов... Оракл - это совершенно другой уровень.
Как я и думал почитай про mysql_last_insert_id() .
Макс М. тебе написал алгоритм.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
25.02.2005, 14:51
    #32933701
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архив документов.
В этой теме явно не указано, конечно, но из предыдущих ясно, что речь идёт о MySQL, к чему тут была сентенция про Oracle? В MySQL ХП и триггера есть только в 5 версии, которая, на данный момент, в стадии альфы, делать на ней документооборот -- это опыты над людьми, а они запрещены ЮНЕСКО.
...
Рейтинг: 0 / 0
25.02.2005, 14:53
    #32933710
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архив документов.
И еще, когда просят написАть структуру ТАБЛИЦЫ, нужно написАть структуру таблицы, а не всей БАЗЫ....
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
25.02.2005, 15:04
    #32933744
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архив документов.
Тема закрыта.
...
Рейтинг: 0 / 0
25.02.2005, 15:06
    #32933758
McLighter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архив документов.
Лучше написать все сразу. Если нужна схема могу ее сделать. А Oracle? Oracle мне не нужен. Не до него сейчас.
...
Рейтинг: 0 / 0
25.02.2005, 15:08
    #32933763
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архив документов.
McLighterЛучше написать все сразу. Если нужна схема могу ее сделать. А Oracle? Oracle мне не нужен. Не до него сейчас. думаешь, мы очень любим читать чужой код ?
...
Рейтинг: 0 / 0
25.02.2005, 15:12
    #32933777
McLighter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архив документов.
Когда у меня вопрос я стараюсь описать проблему более широко. А если все раскладывать по полочкам, то скорее сам дойдешь до истины. Согласен с Guest'ом ТЕМА ЗАКРЫТА! Я все сделаю САМ!
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Архив документов. / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]