Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Красота БД   Найти похожие ветки 

 
...   (2012-02-20 08:49) [0]

Нужно хранить в БД некоторое значение (дату последней выгрузки).
Что лучше:
1. Создать для этого таблицу с одним полем и одной строкой (ну можно добавить id, но смысла нет — если понадобится добавлять туда еще параметры, то они могут оказаться другого типа и лучше добавлять их новым полем, а не новой строкой).
2. Писать это значение каждый раз при insert-е в таблицу, которая в год может принимать тысячи строк? Т.е. делать 100 insert-ов вместе с датой, а при следующем обращении к базе выбирать самый последний, например, по id, и смотреть значение нужного мне поля?

PS: я за вариант 1 (даже как-то и не задумывался о том, что наличие лишней таблице может кого-то раздражать), но встретил серьезную критику (удалили мою таблцу, и не предупредили, что привело к долгому копанию в собственной программе чтобы определить, почему rfc не работает также, как некоторое время назад :) Но вопрос не о профессиональной этике, а о понятии «красота БД», которое очень относительно.


 
Красота-БД   (2012-02-20 09:04) [1]

удалили мою таблицу, и не предупредили
А что будешь делать, если удалили БД?
:)


 
Омлет ©   (2012-02-20 09:11) [2]

Совершенно не понятна суть задача: что, куда и зачем.

> которая в год может принимать тысячи строк

Страх-то какой.


 
...   (2012-02-20 09:18) [3]

> А что будешь делать, если удалили БД?

Обрадуюсь. Но они же ее восстановят.


> Совершенно не понятна суть задача: что, куда и зачем.

Я выгружаю данные в таблицу A. Мне нужно знать, за какую дату я произвел последнюю выгрузку. Для этого я могу:
1. Создать новую таблицу и записывать дату туда
2. Писать эту дату в выгружаемую таблицу A, добавив туда 1 поле, которое будет нужно только для того, чтобы сделать потом &laquo;select top(1) <поле> order by id desc&raquo;.


> Страх-то какой.

Не страшно (хотя все зависит от БД, но в данном случае это MS SQL SERVER, а для него это мелочи). Но не вижу смысла.  Тем более что сервер очень медленный (или загружен, или слабый, или Ксперский инсайт &#151; админы сервера не сообщают).


 
Омлет ©   (2012-02-20 09:21) [4]


> но встретил серьезную критику (удалили мою таблцу, и не
> предупредили, что привело к долгому копанию в собственной программе
> чтобы определить, почему rfc не работает также, как некоторое время назад


Table "dropped_table" doesn"t exist
Так долго искать причину..

И критиковал вас наверное тот самый Роберт )))
http://not-doing.ru/some/drop-table.png


 
...   (2012-02-20 09:25) [5]

> Так долго искать причину..

Долго, если раньше все работало и если среда разработки позволяет общаться с rfc функцией только посредством анализа целочисленного кода возрвата (на все случаи его не задать).


 
AV ©   (2012-02-20 09:25) [6]

1. Создать новую таблицу и записывать дату туда
но не одной строкой, а добавляя (id должен быть тоже)

> 2. Писать эту дату в выгружаемую таблицу A, добавив туда
> 1 поле, которое будет нужно только для того, чтобы сделать
> потом «select top(1) <поле> order by id desc».
но не дату, а id первой таблицы

а потом вдруг понадобится
проверить, работает ли выгрузка и как
писать отчет, сколько записей выгружалось в день/за день
еще какая ерунда


 
Омлет ©   (2012-02-20 09:26) [7]


> ...   (20.02.12 09:18) [3]

Если нужно знать, какие именно строки выгружались за конкретную дату, то да - необходимо еще одно поле с датой. Если за раз выгружается всего одна строка - то также, поле с датой. Если нет необходимости знать, какие именно данные были добавлены в такой-то день, а нужно знать только сам факт добавления записей - то отдельная таблица.


 
Омлет ©   (2012-02-20 09:29) [8]


> ...   (20.02.12 09:25) [5]
> > Так долго искать причину..Долго, если раньше все работало
> и если среда разработки позволяет общаться с rfc функцией
> только посредством анализа целочисленного кода возрвата
> (на все случаи его не задать).

Что это за rfc и среда разработки?


 
Inovet ©   (2012-02-20 09:48) [9]

> [0] ...   (20.02.12 08:49)
> но встретил серьезную критику (удалили мою таблцу

Что в критике говорилось?


 
...   (2012-02-20 10:01) [10]

> а потом вдруг понадобится

Эти данные нужны только для моего алгоритма. До того, как они мне потребовались, они были не нужны. Для них даже предложили использовать какую-нибудь другую БД, чтобы не портить &laquo;красоту&raquo;, настолько они не нужны :)


> Что это за rfc и среда разработки?

SAP. RFC &#151; это вызов удаленной функции, в данном случае SAP <-> SAP.


> Что в критике говорилось?

Одна таблица из 1 поля и 1 строки &#151; это плохо, не по правилам, нужно перенести в другую БД, которая у меня есть на этом сервере для другой программы.


 
Anatoly Podgoretsky ©   (2012-02-20 10:04) [11]

> Омлет  (20.02.2012 09:26:07)  [7]

Все хорошо, только непонятно зачем нужна отдельная таблица.


 
...   (2012-02-20 10:09) [12]

> [7] Омлет ©   (20.02.12 09:26)

Спасибо. В общем &#151; именно так и предполагал. Но было интересно знать &#151; нет ли действительно каких-то минусов и сложностей с использованием лишней таблицы. Т.к. слишком остро была встречена попытка ее добавления.


 
...   (2012-02-20 10:10) [13]

> [11] Anatoly Podgoretsky ©   (20.02.12 10:04)

У MS SQL ведь нет информации о последнем изменении таблиц (без каких-то специальных настроек &#151; такое точно не разрешат)? Есть только &laquo;refdate datetime Reserved for future use&raquo;. Или все же что-то есть?


 
Anatoly Podgoretsky ©   (2012-02-20 12:13) [14]

> ...  (20.02.2012 10:10:13)  [13]

Есть и бесплатно


 
MsGuns ©   (2012-02-20 13:40) [15]

1) У мс скл есть свои вполне надежные средства копирования-восстановления, которые можно включать как службу - т.е. база будет бэкапиться автоматически
2) Совмещение в одной программе двух РАЗНЫХ функций : пользовательской (клиентской) и админской - суть ламерство ибо этого делать нельзя ни в коем случае
3) Хранить только одну копию (последнюю) БД нельзя, как тут уже упоминалось, пользователь может обнаружить ошибку не сразу.  

И вообще, если Вы работаете с мс скл сервером, то просто обязаны хотя бы просмотреть поставляемые с нею мануалы (администрированию там уделено более чем достойное внимание)


 
MsGuns ©   (2012-02-20 13:41) [16]

Кстати, какое все это отношение имеет к сабжу, т.е. "красоте" ?


 
Anatoly Podgoretsky ©   (2012-02-20 14:54) [17]

> MsGuns  (20.02.2012 13:40:15)  [15]

Там не надо делать это ручками, только средствами системы и старые копии
тоже не надо ручками удалять.
А документация конечно мощная, свыше 30 мегабайт в сжатом виде, реально не
менее 100


 
AV ©   (2012-02-20 15:04) [18]

Да, системные вещи MSSQL отлично бэкапит, откатывает/накатывает..
только без головы там тоже не обойтись :)


> Хранить только одну копию (последнюю) БД нельзя, как тут
> уже упоминалось, пользователь может обнаружить ошибку не
> сразу.

+
а через пол-года. Реально такое было.
А копии (ежедневные) только за последние 2 недели настроено было иметь, а еженедельные - за два месяца..

вот тогда пригодятся ручные бэкапы, insert into на всю ночь,
и что б все срослось утром у бухов..


 
tesseract ©   (2012-02-20 19:54) [19]


> SAP. RFC — это вызов удаленной функции, в данном случае
> SAP <-> SAP.


А что в SAP нет стандартной синхронизации баз? Даже в 1с 7 есть. Кстати могу порекомендовать посмотреть на этот механизм. РИБ в 8.x сделан крайне грамотно.


 
...   (2012-02-21 08:08) [20]

> А что в SAP нет стандартной синхронизации баз?

Не знаю. Но в данном случае данные сперва обрабатываются, поэтому все равно их сначала нужно будет записать в какую-то БД. Просто будет лишний шаг &#151; синхронизация.


> [14] Anatoly Podgoretsky ©   (20.02.12 12:13)
> > ...  (20.02.2012 10:10:13)  [13]
>
> Есть и бесплатно

И как узнать эту дату?


 
Anatoly Podgoretsky ©   (2012-02-21 11:36) [21]

Timestamp

Дату узнать нельзя, зато можно узнать какие записи добавились или удалились.

Но дату добавления можно узнать если сделать поле типа datetime с дефолт значением, и изменения если сделать триггер на это поле.

Короче штатных средств достаточно.



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.181 c
15-1339341068
Дмитрий С
2012-06-10 19:11
2013.03.22
TCP


3-1285141692
Сергей
2010-09-22 11:48
2013.03.22
Подсказка в DBGrid


15-1340620150
Demo
2012-06-25 14:29
2013.03.22
Многоуровневая шапка в TDBGridEh


1-1296814637
oleg_teacher
2011-02-04 13:17
2013.03.22
Autosize для Radiobutton


2-1341489229
.code
2012-07-05 15:53
2013.03.22
updater