Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 UserID as bigint (философское)  [new]
HS
Guest
Друзья,
а чем плоха идея таблицы
create table "User" (
  UserName varchar(31), -- понятно
  UserID bigint -- fk Person (PersonID)
)

чтобы использовать UserID более, чем везде. Например в History изменений во всех таблицах. Желаю тынцев, шандалов, любой критики. Нубов не желаю.
29 дек 16, 12:03    [20059736]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
Граур Станислав
Member

Откуда:
Сообщений: 877
HS
Друзья,
а чем плоха идея таблицы
create table "User" (
  UserName varchar(31), -- понятно
  UserID bigint -- fk Person (PersonID)
)

чтобы использовать UserID более, чем везде. Например в History изменений во всех таблицах. Желаю тынцев, шандалов, любой критики. Нубов не желаю.


UserID bigint -- это сколько же юзеров планируется?
29 дек 16, 12:12    [20059797]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
fraks
Member

Откуда: Новосибирск
Сообщений: 1588
Минус в том что для записи в таблицу UserId нужно будет искать этот ID по табличке - лишние действия.
Логины, несмотря на поле 31 символ, обычно все-таки существенно короче, и особого выигрыша по месту вряд-ли получится.

Сейчас же для записи имени юзера в лог достаточно просто объявить поле как

CREATE TABLE LOG (
...
    A_DT      TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    A_USER    VARCHAR(32) DEFAULT CURRENT_USER,
...
);


и больше ничего не требуется.
29 дек 16, 12:20    [20059833]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
m7m
Member

Откуда: Украина, Мариуполь
Сообщений: 1396
HS
Друзья,
а чем плоха идея таблицы
create table "User" (
  UserName varchar(31), -- понятно
  UserID bigint -- fk Person (PersonID)
)

чтобы использовать UserID более, чем везде. Например в History изменений во всех таблицах. Желаю тынцев, шандалов, любой критики. Нубов не желаю.



Вопрос только один, а не появится ли пользователь который не должен быть в Person
ну и структуру наверное вот такую
create table "User" (
  UserID bigint -- fk Person (PersonID)
  ................
  Здесь куча полей которые нужны для  User и которых нет в Person
  ................
)


А в остальном, почему-бы и нет
29 дек 16, 12:21    [20059835]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31197

UUID (GUID) используй!

Posted via ActualForum NNTP Server 1.5

29 дек 16, 12:24    [20059845]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
m7m
Member

Откуда: Украина, Мариуполь
Сообщений: 1396
fraks
Минус в том что для записи в таблицу UserId нужно будет искать этот ID по табличке - лишние действия.

Думаю что один раз при авторизации достаточно
29 дек 16, 12:26    [20059858]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10575
HS,

нормальный подход для трехвенок и веба. Для двухзвеньевых приложений по схеме приложение<->БД лучше использовать стандартных пользователей.

Если в двухзвенках нужно больше информации о пользователе, то можно завести таблицу Employee в которой прописывается связь на имя пользователя

create table Employee (
  EmployeeID bigint not null primary key,
  .....
  UserName varchar(31) -- сюда имя пользователя под которым произошёл вход
)


Для того чтобы извлечь полную информацию достаточно

select *
from Employee
where UserName = CURRENT_USER


Для UserName нужен индекс и возможно UNIQUE KEY
29 дек 16, 12:36    [20059920]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
HS
Guest
Граур Станислав,

Не будем жи мы накануне сингулярности пару байтов экономить? <\шутка>
29 дек 16, 13:04    [20060058]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
HS
Guest
Мимопроходящий,

Номинация ШУТКА ГОДА.
29 дек 16, 13:06    [20060086]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
HS
Guest
Симонов Денис,

EmployeeID fk Person (PersonID)

)))
29 дек 16, 13:09    [20060116]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
Kirill Razuvaev
Member

Откуда: Ленинград
Сообщений: 1273
fraks
Минус в том что для записи в таблицу UserId нужно будет искать этот ID по табличке - лишние действия.
Достаточно в триггере OnConnect записать UserID в контекстную переменную и дальше уже дергать только ее. У меня так и сделано.
Хотя, местные гуру говорили, что в FB2.5 не очень оптимально доступ к контекстным переменным сделан. Но если использовать только для вставки/апдейта/логов, то, думаю, проблем с производительностью не будет.
29 дек 16, 13:24    [20060233]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
HS
Guest
Kirill Razuvaev,

Чот я разлюбил контексные переменные. Предположу, что и с селектом проблем не будет.
29 дек 16, 13:35    [20060295]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10575
HS,

ты просто не умеешь их готовить. В Firebird 3.0 контекстные переменные вместе с PSQL функциями очень даже гуд.
29 дек 16, 13:38    [20060305]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
Kirill Razuvaev
Member

Откуда: Ленинград
Сообщений: 1273
Симонов Денис
В Firebird 3.0
Пользуясь случаем, ткните, плиз, носом, что почитать про переход с 2.5 на 3.0. Случай, вроде, относительно простой, сторонних UDF нет, но...
29 дек 16, 13:50    [20060391]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10575
Kirill Razuvaev,

Release Notes, там описаны основные шаги по переходу. На AS CURESOR обрати внимание, ну и на совместимость клиента 2.5 и сервера 3.0
29 дек 16, 14:31    [20060666]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10575
мда, корпоратив начался, уже в словах ошибки делаю
29 дек 16, 14:33    [20060676]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
Kirill Razuvaev
Member

Откуда: Ленинград
Сообщений: 1273
Симонов Денис,
к счастью, as cursor у меня нет :-) А RN возьму домой почитать :-)
29 дек 16, 14:41    [20060712]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
HS
Guest
Симонов Денис,

Корпоратив в Венесуэле. <\шутка>
29 дек 16, 14:57    [20060817]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10575
HS,

думаешь стоит туда съездить?
29 дек 16, 15:02    [20060853]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
HS
Guest
Симонов Денис,

Если ты адреналиновый наркоман - ОДНОЗНАЧНО ДА!
29 дек 16, 15:05    [20060865]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: UserID as bigint (философское)  [new]
dr.cary
Member

Откуда:
Сообщений: 7
fraks,
Параметр DEFAULT CURRENT_USER не устанавливается по
DEFAULT.
В ответ возвращается сообщение не верный синтаксис.
4 июн 20, 09:05    [22145477]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8571
dr.cary
В ответ возвращается сообщение не верный синтаксис.
В ответ на что? Сдается мне синтаксис таки у тебя неверный, его надо распечатать и съесть, чтоб никто не увидел.
4 июн 20, 09:42    [22145501]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
dr.cary
Member

Откуда:
Сообщений: 7
Ivan_Pisarevsky,
В ответ на запрос:
CREATE TABLE `exp`.`tbl` (
`id` INT NOT NULL AUTO_INCREMENT,
`informacion` TEXT NULL,
`data` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`user` VARCHAR(45) DEFAULT current_user,
PRIMARY KEY (`id`));

Возвращает:
ERROR 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'current_user,
PRIMARY KEY (`id`))' at line 5
4 июн 20, 20:38    [22145912]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4221
dr.cary
check the manual that corresponds to your MySQL server version for the right syntax to use near 'current_user
Тут, в общем-то, написано, что делать.

Ну можно еще на специализированный форум обратиться.
4 июн 20, 20:56    [22145916]     Ответить | Цитировать Сообщить модератору
 Re: UserID as bigint (философское)  [new]
fraks
Member

Откуда: Новосибирск
Сообщений: 1588
dr.cary

ERROR 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'current_user,
PRIMARY KEY (`id`))' at line 5


Довольно оригинально задавать вопросы на форуме по Interbase/Firebird в то время как у тебя MySQL :)
5 июн 20, 03:35    [22146051]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Firebird, InterBase Ответить