2011-02-04 5 views
0

사용자가 모든 로그인을 로깅합니다. 뭔가 그냥 단순한 userid, date, ip처럼 나는 각 테이블이 로그인이되는 각 행에 이어지는 사용자로 데이터베이스를 생성해야합니까? 100 명의 사용자가있는 경우 그러한 방법의 부정적인 영향이 있습니까? 이것이 실제로 이루어지는 방식입니까? 또는 더 좋은 방법이 있습니까?로그인 저장 제안

+0

무엇에 로그인합니까? OS? 데이터 베이스? 웹 사이트? 볼륨이 무엇입니까? 하루에 백만? 1 년에 백만? –

+0

웹 사이트, 말하자면 ... 백만 년. – Skizit

답변

2

각 사용자마다 별도의 테이블을 만들지 마십시오. 표는 모든 사용자의 모든 로그인을 포함해야합니다.

CREATE TABLE logins (
    id INT NOT NULL AUTO_INCREMENT, 
    user_id INT UNSIGNED NOT NULL, 
    log_time DATETIME, 
    ip INT UNSIGNED, 
    PRIMARY KEY (id) 
); 

mysql> DESCRIBE logins; 
+----------+------------------+------+-----+---------+----------------+ 
| Field | Type    | Null | Key | Default | Extra   | 
+----------+------------------+------+-----+---------+----------------+ 
| id  | int(11)   | NO | PRI | NULL | auto_increment | 
| user_id | int(11)   | NO |  | NULL |    | 
| log_time | datetime   | YES |  | NULL |    | 
| ip  | int(10) unsigned | YES |  | NULL |    | 
+----------+------------------+------+-----+---------+----------------+ 
+0

테이블에 100,000 개의 항목이있는 경우 특정 사용자가 값을 찾기 위해 모든 항목을 검색하는 가장 좋은 방법은 무엇입니까? – Skizit

+1

사용자 5의 모든 로그인을 얻으려면 : 'SELECT * FROM logins WHERE user_id = 5'. – ash