-
Доброго времени суток!
Есть база данных в которой содержится информация о транзакциях каждого пользователя. Каждый пользователь должен иметь возможность просматривать свои транзакции. У каждого пользователя их миллионы.
Как лучше организовать БД? Хранить все записи в одной таблице либо же создавать для каждого пользователя свою таблицу с транзакциями?
Конечно же для меня предпочтительнее все держать в одной таблице, так как удобнее писать SQL запросы относящиеся к транзакциям Всех пользователей, но как быстро будут выполняться SQL запросы к таблице с миллиардами записей?
-
Попробуй.
-
Просто нет под рукой базы. Может быть кто-то знает?
-
Да и результат моего теста может быть не верен в силу каких либо причин, хотел бы знать наверняка
-
>DelphiN! (07.03.13 14:36) [3]
сколько пользователей, зачем хранить ВСЮ историю по транзакциям?
-
> Кщд (07.03.13 14:39) [4]
> сколько пользователей, зачем хранить ВСЮ историю по транзакциям?
>
Тысячи пользователей. Им бывает необходимо просматривать свои транзакции за прошлые годы.
-
Транзакции в смысле SQL или какие-то другие? Деньги там со счёта на чсёт переводятся, например.
-
> Inovet © (07.03.13 15:43) [6]
> Транзакции в смысле SQL или какие-то другие? Деньги там
> со счёта на чсёт переводятся, например.
Не SQL.
Информация о денежных операциях.
-
зачем себя ограничивать отдельными таблицами для пользователей.
каждому пользователю - по отдельной базе данных.
а еще лучше по отдельному серверу.
-
> [7] DelphiN! (07.03.13 16:35)
> Информация о денежных операциях.
Ну так операции храняться же в базе, кто её провёл, что, куда. Судя по
> [0] DelphiN! (07.03.13 13:49)
> Есть база данных в которой содержится информация о транзакциях каждого пользователя.
база уже есть. Или нет базы и надо делать?
Упрощенно. Допустим, друг у друга покупают, продают, дарят.
таблица Пользователи
(
Ид,
Фамилия,
Имя
...
и т.п.
)
таблица Транзакции
(
Ид,
ИдПользователя,
СчётДебет,
СчётКредит,
Дата_время_операции,
Сумма
...
Ещё что-то всякое
)
-
>DelphiN! (07.03.13 14:49) [5]
одна таблица + индекс на пользователя + удаление устаревших данных
-
А по времени выполнения SQL запросов?
Также желательно разграничивать права доступа к данным на уровне СУБД, на тот случай, если в программе найдут какую либо ошибку, через которую смогут выполнить свой SQL запрос. Соответственно вопрос: Можно ли разграничить права доступа к данным из 1 таблицы, для пользователей на уровне СУБД?
-
Вы эти умные слова из какой книжки почерпнули?
-
> Можно ли разграничить права доступа к данным из 1 таблицы, для пользователей на уровне СУБД?
можно, но обычно так не делают (желание высказывают, а как до поддержки доходит так "все опускается", руки тоже...)
рекомендуют делать таблицу недоступной, а права/доступность накладывать на "вьюшки" которые делать под каждого пользователя (проще чем таблицы, и структура правильная, и для того чтобы начать работать правильно ничего менять не придется...).
-
> sniknik © (11.03.13 15:31) [13]
А добавлять и удалять данные через хранимые процедуры, которым также установлены права на каждого пользователя?
-
через "вьюшки", написал же.
-
> sniknik © (11.03.13 16:32) [15]
А как во "вьюшку" передавать параметры, например имя записи которую следует создать?
-
а как в таблицу? никакой разницы.
-
Понятно! Спасибо большое!