|
|
|
Архив документов.
|
|||
|---|---|---|---|
|
#18+
Итак я сделал систему документооборота. Теперь у меня много вопросов. 1. Как одним запросом Insert можно вставить данные в несколько таблиц. 2. У меня индексация записей по primary key = имени файла. Знаю что это неочень хорошо, но как иначе. 3. В связи с этим проблема. Я добавляю новый файл. В базу заносится его имя. теперь я копирую файл на сервер с индексным именем. Для этого надо узнать индекс файла который ему присвоился. Получается insert - select - copy. Можно ли сократить эту цепочку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 13:16 |
|
||
|
Архив документов.
|
|||
|---|---|---|---|
|
#18+
>1. Как одним запросом Insert можно вставить данные в несколько таблиц. никак >2. У меня индексация записей по primary key = имени файла. Знаю что это неочень хорошо, но как иначе. Иначе? Чем плох варант с полем автоинкремента? >я копирую файл на сервер с индексным именем. Для этого надо узнать индекс файла который ему присвоился. Ничего не понял. Зачем узнавать индекс файла, если он равен имени файла, и это имя. как я понял, ты знаешь, потому что ты только что сам добавил его в базу. >Получается insert - select - copy. Можно ли сократить эту цепочку. Не получается, потому что не понятен абзац выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 13:46 |
|
||
|
Архив документов.
|
|||
|---|---|---|---|
|
#18+
На счет автоинкремента. Во многих базах данных идентификатор записи в таблице вообще не число, это просто уникальное значение. В mysql это число, но использовать его все равно не рекомендуют, я не знаю почему. Так говорят профессионалы. Поэтому и спрашиваю есть ли варианты. Насчет файлов. Есть файл Документ12.doc. Его помещают в мой веб архив. В моем каталоге на сервере я хочу хранить его как 1.doc. (далее 2,3,4) Поэтому имя файла копируется в базу. Чтоб пользователь знал его имя. А файл переименовывается в индексное имя и копируется на сервер. Вот и получается прописываю в базу имя. Вытаскиваю по этому имени соответствующий индекс. И переименовываю копируемый файл в этот индекс+разрешение. Получается Insert-Select-Copy ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 14:13 |
|
||
|
Архив документов.
|
|||
|---|---|---|---|
|
#18+
Насчет автоинкремента. Не знаю, чем плох автоинкремент???? Грубо говоря Чем уникальный набор ЦИФР отлачется от уникального набора БУКВ??? Автоинкремент гарантированно создаст новое уникальное значение. Какие проблемы???? авторА файл переименовывается в индексное имя и копируется на сервер. Сам переименовывается? Если сам - то это просто уникальная технология..;)))) А если серьезно, то напиши стуркутру таблицы, в которую ты пишешь данные о файле. Потому как я не могу понять - индекс у тебя автоинкремент или ты сам вписываешь цифру??.. вобщем, давай структуру БД... З.Ы. LAST_INSERT_ID() ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 14:28 |
|
||
|
Архив документов.
|
|||
|---|---|---|---|
|
#18+
McLighterно использовать его все равно не рекомендуют, я не знаю почему. Так говорят профессионалы. Поэтому и спрашиваю есть ли варианты. Вариант есть - не слушать своих профессионалов или разобраться ПОЧЕМУ они не советуют так делать. auto_increment придуман прежде всего для первичных ключей. При использовании auto_increment твой файл пишется по такой цепочке: 1. insert 2. $id = mysql_insert_id(); // получим ПК вставленной записи 3. создаем файл $id.".doc" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 14:32 |
|
||
|
Архив документов.
|
|||
|---|---|---|---|
|
#18+
Вот моя база. 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)); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 14:42 |
|
||
|
Архив документов.
|
|||
|---|---|---|---|
|
#18+
4m@t!c>1. Как одним запросом Insert можно вставить данные в несколько таблиц. никак >2. У меня индексация записей по primary key = имени файла. Знаю что это неочень хорошо, но как иначе. Иначе? Чем плох варант с полем автоинкремента? >я копирую файл на сервер с индексным именем. Для этого надо узнать индекс файла который ему присвоился. Ничего не понял. Зачем узнавать индекс файла, если он равен имени файла, и это имя. как я понял, ты знаешь, потому что ты только что сам добавил его в базу. >Получается insert - select - copy. Можно ли сократить эту цепочку. Не получается, потому что не понятен абзац выше. Ну вообще то вставить можно, например в Оракле делаешь представление, и затем вешаешь INSTEAD OFF триггер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 14:44 |
|
||
|
Архив документов.
|
|||
|---|---|---|---|
|
#18+
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 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 14:50 |
|
||
|
Архив документов.
|
|||
|---|---|---|---|
|
#18+
в Мускуле до 4-й версии не было вложенных запросов... Оракл - это совершенно другой уровень. Как я и думал почитай про mysql_last_insert_id() . Макс М. тебе написал алгоритм. ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 14:50 |
|
||
|
Архив документов.
|
|||
|---|---|---|---|
|
#18+
В этой теме явно не указано, конечно, но из предыдущих ясно, что речь идёт о MySQL, к чему тут была сентенция про Oracle? В MySQL ХП и триггера есть только в 5 версии, которая, на данный момент, в стадии альфы, делать на ней документооборот -- это опыты над людьми, а они запрещены ЮНЕСКО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 14:51 |
|
||
|
Архив документов.
|
|||
|---|---|---|---|
|
#18+
И еще, когда просят написАть структуру ТАБЛИЦЫ, нужно написАть структуру таблицы, а не всей БАЗЫ.... ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 14:53 |
|
||
|
Архив документов.
|
|||
|---|---|---|---|
|
#18+
Лучше написать все сразу. Если нужна схема могу ее сделать. А Oracle? Oracle мне не нужен. Не до него сейчас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 15:06 |
|
||
|
Архив документов.
|
|||
|---|---|---|---|
|
#18+
McLighterЛучше написать все сразу. Если нужна схема могу ее сделать. А Oracle? Oracle мне не нужен. Не до него сейчас. думаешь, мы очень любим читать чужой код ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 15:08 |
|
||
|
|

start [/forum/topic.php?fid=23&gotonew=1&tid=1478710]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
161ms |
get topic data: |
6ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 455ms |

| 0 / 0 |
